`
阅读更多
平衡GIS与非平衡GIS

作者:宋关福(博客名:山那边)

  GIS是Geospatial与IT交叉的产物,GIS中的“G”和“IS”分别代表着交叉的两种知识和技术。从事GIS软件技术研究与开发,也要考虑这两种知识和技术的平衡与协调,若稍不注意,可能产生“偏科”的GIS软件。
  不平衡的软件有两种,一种是“Gis”,大写的“G”,小写的“is”,Geospatial能力还被过度设计,而在IT能力方面相对不足。个人觉得,“Gis”软件可以被称为专家型GIS,功能强大,模型经典,但难于使用,难于与IT其他技术集成。这样的GIS是阳春白雪,只有少数专家才会使用,可以用来教学,抑或用于科研,不适于推广使用。




  另一种是重IT而轻Geospatial的“gIS”,小写的“g”,大写的“IS”。 与前者不同,“gIS”软件往往操作简便,即使没有地学专业功底,也容易学习和使用。但由于地学能力不足,不能满足大型应用项目和高端应用的需求,是入门级的低端GIS软件。“gIS”软件因易学易用而很受欢迎,不仅成为许多学校早期的GIS教学软件,而且在很多行业中大规模应用,为GIS的普及推广做出了卓越贡献,是推动GIS融入IT的先锋。但随着各行业应用水平的提高,很多单位发现入门级的“gIS”软件不能满足更高的应用需求。




  GIS软件能力发展不平衡,导致GIS软件曾一度两极分化严重,不少应用单位在GIS软件选型时曾面临这样的尴尬:“gIS”软件易学易用,但功能不足,“Gis”功能强大,但学习成本和维护成本太高,很难找到称心如意的GIS软件。
  遭遇过“非平衡GIS”的尴尬,我们呼唤平衡的“GIS”,大写的“G”和大写的“IS”。木桶原理告诉我们,一只桶能装多少水,取决于最短那块板的高度。发现并弥补GIS软件中的短板,协调、平衡地发展GIS中的Geospatial能力和IT能力,才能更加有效地推动GIS技术快速健康地发展。
  推动GIS技术平衡的发展,仅超图的力量还不够,让我们共同努力,促进GIS技术和GIS产业健康、蓬勃地发展。
(原文地址:http://blog.gisforum.net/u/85367/archives/2007/1352.html)





GIS软件发展趋势之——服务器GIS

作者:宋关福(博客名:山那边)

  GIS经历了单机环境的应用向网络环境的应用发展的过程,网络环境GIS应用从局域网内C/S(Client/Server)结构的应用向Internet环境下B/S(Browser/Server)结构的Web GIS应用发展。随着Internet的发展,Web GIS开始逐步成为GIS应用的主流,Web GIS相对于C/S结构而言,具有部署方便、使用简单、对网络带宽要求低的特点,为地理信息服务(Geographical Information Service)的发展奠定了基础。
  然而,早期的Web GIS功能较弱,主要用于电子地图的发布和简单的空间分析与数据编辑,难以实现较为复杂的图形交互应用(如GIS数据的修改和编辑、制图)和复杂的空间分析,还无法取代传统的C/S结构的GIS应用,出现了B/S结构与C/S结构并存的局面,而C/S结构涉及客户端与服务端之间大量数据转输,无法在Internet网络下实现复杂的、大规模的地理信息服务。
  随着电子政务和企业信息化(含电子商务)的发展,构建由多个地理信息系统构成的信息系统体系(System of Geographical Information Systems),跨越传统单个的地理信息系统边界,实现多个地理信息系统之间的资源(包括数据、软件、硬件和网络)共享、互操作和协同计算,构建空间信息网格(Spatial Information Grid),成为GIS应用发展需要解决的关键技术问题。这要求将GIS的数据分析与处理的功能移到服务器端,通过多种类型的客户端(如PC、移动终端)上Web Browser或桌面软件调用服务器端的功能,来实现传统C/S结构GIS所具有的功能,最终.使B/S结构取代C/S结构的应用,通过GIS Application Server之间的互操作和协同计算,构建SIG。
  GIS应用由C/S结构发展为B/S结构,B/S结构应用已经由Browser/Web Server/Data Server三层架构阶段进入到Browser/Web Server/Application Server/Data Server四层架构阶段。在新的四层架构中,Web Server和Application Server分离,并且其间还可以插入二次开发和扩展功能,其中的Application Server一般为支持远程调用的组件式GIS平台,或由组件式GIS平台封装而成。将GIS复杂数据分析与处理功能(编辑、拓扑关系的构建、对象关系的自动维护、制图)移到GIS Application Server上,使客户端与服务端的数据传输减少到最少的程度,为在Internet上实现复杂、大规模的地理信息服务提供了可能。这一架构带来的巨大优势是,服务器端具有极强的扩展性,因此作为应用服务器的组件式GIS所具备的功能,都可以通过B/S结构实现,WebGIS不再是只能满足地图浏览和查询的简单软件了,而是一个体系先进,功能强大的服务器端GIS(Server GIS)。
  2001年,超图发布了四层架构的SuperMap IS软件。2004年,ESRI和MapInfo公司先后发布了四层架构的Internet GIS产品,即ESRI的ArcGIS Server、MapInfo的MapXtreme 2004(.NET),同年,超图又发布了基于.NET开发的全新四层架构产品SuperMap IS .NET。2005年超图还发布了同样四层架构的SuperMap IS Java。新的服务器GIS将是未来应用的发展的主流。
(原文地址:http://blog.gisforum.net/u/85367/archives/2007/1353.html)




Java本地调用C/C++的动态库

作者:高昂(博客名:高昂的blog)

  前段日子投身考博的复习,文章更新不太及时。总算告一段落,于是开始着手实现基于Java的OGC WPS规范,为了方便使用SVN存储库进行代码管理以及尝试一下Tomcat 6的新功能,IDE采用了Netbeans 6.0 M7版本。
  关于WPS的Java实现,计划中的三部分工作是:1.改进已有WPS的实现,简化算法的XML配置,集成Geotools的空间分析函数,从中选择增加新的WPS操作到Algorithm库中。2.参考pyWPS的命令行调用方式,在Linux下通过Java IO包里的Runtime.getRuntime().exec()方法给GRASS命令行传入执行参数,通过命令调用的方式将GRASS的功能进行服务化提升。3.通过本地接口JNI来调用已独立封装好的GRASS API,直接将参数传入so动态库,通过GRASS的动态库来获得地理数据分析功能。目前第一和第二步的技术路子已经走通,第三步实现则较为复杂,预计可能需要做不少工作。
  本地接口(Java Native Interface)是JDK的一部分,允许Java 代码使用以其它语言编写的代码和代码库。关于JNI的详细使用方法,可以找到不错的教程,在IBM DeveloperWorks上,也有关于Linux下使用本地接口的文章。JNI将Java 虚拟机嵌入本机应用程序,可以实现从Java 程序调用C/C++以及从C/C++程序调用Java代码。本机方法调用C的动态库,需要使用Javah命令重新生成引用C/C++源文件的头文件,定义JNI 的库文件和本机头文件,首先在Java类中声明要调用的本机语言方法,并载入包含本机代码的共享库,然后调用类库中的本机方法。
  目前Java开发使用的IDE逐渐从Eclipse向Netbeans过渡,相比较来说,Netbeans近来的发展势头让人看到Java IDE新的希望,无论在功能上还是在代码感知的响应速度上都不亚于Eclipse,作为用于代码编写的环境,在不安装任何各式庞杂插件的基础上,可以带给程序员不错的体验。
(原文地址:http://blog.gisforum.net/u/92397/1402.html)




开放的地图服务器

作者:高昂(博客名:高昂的blog)

  地图服务器的比较与选择,似乎是个永不过时的主题,OSGeo的讨论组里也常涉及到相关的话题。一般说来,构建基于FOSS的地图数据中心,除去服务器之外都有较固定的解决方案,浏览器的地图客户端可以选用Ka-Map或Openlayers,而数据库方面Postgresql+PostGIS的使用常常是不二之选。
  先看历史悠久产品成熟的MapServer。Mapserver在国内用户广泛,其内核使用C++编写,基于CGI脚本实现,页面调用支持PHP、JSP等多种语言,并且对OGC的WMS和WFS规范提供支持。Map文件是Mapserver工程中关键的结构配置文件,定义了地图范围、数据源、地图图层、投影方式以及符号标记等内容。如果在Linux平台下快速配置MapServer地图服务器,使用Maptools发布的FGS(FOSS GIS Suite)套件无疑是最佳方案,套件集成了整套的MapServer、Apache、PHPMap以及GDAL库等众多内容,并且提供安装后就可直接浏览的地图DEMO。
  另一款开源服务器GeoServer也是非常好的选择,基于Java和Geotools库开发的Geoserver功能全面且遵循OGC开放标准,并由同时拥有PostGIS与uDig的Refractions公司提供支持。GeoServer对发布WFS-T和WMS服务提供便捷的支持,并以XML文件描述所有地图服务。GeoServer的开发组很活跃,邮件咨询的问题很快会得到Jody Garnett和组内其他成员的回复,GeoServer对OGC规范提供了全面的支持,除WMS和WFS之外,即将加入的FROGS(work for Open Geospatial Services)项目将着重提供对WPS规范的支持。
  比较来说,Mapserver对WMS的支持更为高效,而Geoserver则更擅长于结合WFS规范的属性查询。当然,对于使用者来说,最主要的区别还是传统CGI脚本与J2EE在技术上的分歧。但就发展趋势来看,J2EE的架构明显要占据优势,并且Geoserver拥有基于Eclipse RCP平台的开源客户端uDig。随着Geoserver的版本更新,相信其有实力成为今后开源WebGIS解方案的主流选择。
(原文地址:http://blog.gisforum.net/u/92397/1393.html)




GridView 数据绑定小技巧

  作者:nuoya(博客名:诺亚方舟的BLOG)

  比如数据库中有如下表 Table1:




首先绑定到GridView1:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
try
{
SqlConnection myConnection = new SqlConnection(DataBaseDB.ConnectionString);
string cmdText = "select * from Table1 ";
SqlCommand myCommand = new SqlCommand(cmdText, myConnection);
myConnection.Open();
SqlDataReader recu = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
GridView1.DataSource = recu;
GridView1.DataBind();

recu.Close();
}
catch
{ }


}
}

运行可以显示如数据表的内容。若在绑定时Type字段的A显示为“优秀”,B为“良好”可以添加如下事件:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
GridViewRow item = e.Row;
DataControlRowType itemType = e.Row.RowType;

if (itemType == DataControlRowType.DataRow)
{
switch (item.Cells[2].Text)
{
case "A":
item.Cells[2].Text = "优秀";
break;
case "B":
item.Cells[2].Text = "良好";
break;
default:
break;
}
}
}
此时可以实现想要的效果了。

(原文地址:http://blog.gisforum.net/u/11575/1427.html)





使用开源GIS软件实现空间数据挖掘的算法(1)

作者:zhanglili(博客名:张立立的blog)

  
  GIS软件的发展是一个比较有意思的过程。GIS有三个重要的组成部分:空间数据模型和存储;空间数据分析;数据显示。如果只从软件的设计实现角度来看,GIS和CAD系统非常相似。但是GIS的特点主要在于它所存储的数据是和地理位置相关的。而数据能够和地理位置相关是具有重大意义的,因为就目前我们的生活状态而言,无论在哪个星球生活,都避免不了出行、找人、找东西这些事,而且如果能够对某一地区的事物分布非常了解,往往能够做出一些重大的发现和决策。以前司马迁行万里路,读万卷书,为的就是能够多了解一些地理知识。古人很重视战略,谋划,首先就要求熟知某地的山川地理,民风人情,这样才能对天下大事有正确的认识。比如关中平原土地肥沃,号称“抚天下之背”,是成就王图霸业的场所;而河南地处中原,八面来风,是四战之地。顾炎武的天下郡国利病书当中有些内容讲的主要就是这些东西。这些道理现在有了一个比较时髦的名词,叫作空间数据挖掘,其实就是掌握了大量的地理知识以后,要能够有所理解,有所领悟,并升华成一些新的认识和知识。这些认识和知识以前是需要专家才能够发现的,现如今可以让计算机来帮助我们发现,因为机器不知疲倦,有时候它们能够发现一些我们不容易发现的知识。这方面的研究需要人工智能的知识,是很有意思的问题,很多人都在研究这个问题,但是目前还没有什么特别好的结果。
  现在我们暂时不谈空间数据挖掘和知识发现的问题,从GIS软件的开发和制作说起。我们目前使用的GIS软件很多是价格非常昂贵的商业产品,我们有些人感受不到它的昂贵是因为使用盗版。虽说使用盗版软件没什么心理障碍,但是如果想对软件有个比较深刻的认识,那就非得看代码不可,必要的话就一定要亲手写程序,否则就谈不上有什么发言权。不过需要强调的是,软件使用也是很有技巧的事,同样的软件,有经验的使用者就能发挥出很强的威力。
  我们这里就开源软件的制作介绍点经验。如果你需要自己动手编写一些程序来实现自己所希望的特殊功能,而仅仅使用商业软件无法满足要求;或者您是一个恪守正版原则的开发者,不屑使用盗版软件,那么本文很可能对您有所帮助。
  坦率的讲,GIS软件的开发是一件比较有难度的事情,因为GIS涉及到图形学和数据库的很多知识,而无论图形学还是数据库,都需要花不少时间才学的会。而Linux操作系统本身也比较难用,能在其上做熟练的应用程序开发的人也不是很多。不过事情都会越来越好,现在介绍Linux开发的书也多了,软件工具也越来越多,总之。形势在向着有利我们的方向发展。

(原文地址:http://blog.gisforum.net/u/85372/archives/2007/1446.html)





GIS热点技术

作者:zhanglili(博客名:张立立的blog)

  GIS是一项和众多IT技术相关,而又有着浓厚测绘、制图、地理等各类地学学科背景的技术。它是科学家手中的显微镜,也是百姓出行的指南针;它是将军运筹帷幄的沙盘,也是出租车司机的导航仪;它上能助神六飞天,下能监测印度洋海啸;它大能纵观全球,小能观察办公室布局。2005年中,GIS行业的资深公司仍在不断寻找新的技术突破点;怀抱利器的小公司欲挺身而入一展宏图;IT行业的巨人跻身GIS领域大象起舞。在不断拓展的行业应用背景下,在IT巨头插手的身影中,在这寒冷的岁末年初,GIS技术的发展方向变得越加微妙和难以把握……

平台的对峙
  开发者都希望自己的软件能够运行在尽可能多的计算机上。然而事与愿违,摆在GIS开发者面前的仍然是对峙的平台。J2EE随着Java5.0的发布,已经正式更名为JavaEE, 而微软也正式发布了.NET2.0以及集成开发环境利器Visual Studio 2005。到底是.NET还是Java? 面对旗鼓相当的Java和.NET阵营,其实GIS平台开发商的答案早已揭晓,那就是都要!由于.NET和Java比较起来并无明显的优劣之分,只是随应用的需要和习惯的差别而略有不同,因此提供Java和.NET的双份开发接口来满足不同的需求也就不难理解了。可实际中,若要同时支持Java和.NET谈何容易!要知道GIS的出现是上个世纪60年代的事,在当代众多IT缩写词出现之前,GIS就已经在城市规划、土地管理、军事等行业得到了应用。几十年的积累,很多代码已经成为了固化的资产。GIS平台开发商经历过二次开发语言的繁荣和凋敝,组件时代的兴起和衰落,而今又要面对平台对峙的挑战。也许我们应该考虑一些更好的、更彻底的解决办法,能够让我们在这个多变的时代找到相对稳定的支点。事实上,这个问题已经有了比较好的答案,办法其实也很简单,那就是重回C/C++的荣耀之都,实现GIS内核和外壳分离,以适应不断变化的外部世界。其实这个办法也不是GIS一家的专利,使用C/C++编写程序然后实现一次编写,到处编译,是很多软件采取的跨平台策略。相比之下,无论是在Java和COM之间架桥还是在Linux和Windows之间修路,总显得有些不够优雅。不出意外,平台的对峙在未来的几年还会持续下去,在这对峙的平台下开发,也许最能彰显我们开发者智慧。

全球的数据
  数据是GIS的重要基石,无论何种行业应用,离开了数据都是无源之水,无本之木。空间数据不同于其他信息系统中的业务数据,能够在系统运行过程中自然产生,它需要专门的人员采集、编辑、更新,空间数据生产本身就是一个不断壮大的行业。遥感技术的飞速发展,使我们能够获得的GIS数据不断膨胀,单是这些数据的存储管理就是一个很大的问题。GIS需要管理管理的数据是全球范围的,面对如此庞大的数据,使用数据库是自然的选择。我们很难将地理信息技术和数据库分割开来,从来都没有人对使用数据库有过怀疑,问题的焦点是如何使用。应用是多样的,工程、摄影测量和其他技术或行业都有其利用空间数据的特定方式,如果我们试图把多样的需求统一到一种空间数据库的解决方案中,这种努力很可能是无益的。也许我们需要的是一种开放、灵活和可扩展的结构,能够动态适应变化。
  海量影像数据的建库和发布技术在2005年形成了一轮高潮。GIS、遥感等领域的多家厂商都推出了各具特色的产品。现在我们可以在各种设备、各种环境下轻松浏览高分辨率的遥感影像。影像库的规模也非常庞大,几十G的数据有时候都不好意思和人家说,建TB级影像库的大有人在。然而各种影像发布技术在Google Earth所表现出的震撼人心的效果面前都显得黯然失色,一家从事搜索的企业做出来的产品一下子让在GIS行业浸淫多年的正规军们觉得很没面子。其实,GIS企业和Google这样的网络公司有着不同的盈利模式,GIS企业可能都具备显示三维地球的技术实力,但是它们不可能仅仅是为了好看好玩来开发产品,必须要根据市场的需要,为那些真正买单的人开发产品。如果开发一个全球三维浏览的产品只是用来广告的话,那这笔广告费未免也过于昂贵了。所幸的是有Google这样的新贵,非常大手笔地做足了遥感和GIS的科普工作,也提升了大家对地理信息系统的三维表现技术的热情。

大众地理信息服务
  GIS业界人士一直都期望融入IT主流,让GIS走进千家万户,让GIS成为人们日常生活的一部分,就像我们每天都会收发E-mail,每天都要使用字处理软件那样。大家有这个想法不是偶然的。毕竟我们无论旅游、约会、购物,只要和出行相关,都免不了求助于地图。手机通话中使用频率最高的语句除了“喂,你好”之外,恐怕就是“你在哪里”了。大众地理信息服务就是希望为人们的日常生活提供位置信息,解决大家最常问的“在哪里”,“怎么去”的问题,这方面典型的业务就是以Google,百度,新浪本地搜索为代表的公众地图服务。在GIS开发者的眼里,也许公众地图服务技术并不复杂,有经验的开发者也许都考虑过这个颇有诱惑力的市场。事实上,公众地图服务除了要做的简单易用功能强大之外,还有数据的获取和更新途径,以及最重要的问题:如何从公众地图服务中赚钱?赢利模式是GIS企业在公众地图服务的门槛外看了又看,却始终裹足不前的根本原因。无法清楚地看到利润的增长点,而前期的高投入和大量的公关协调工作使得这项有巨大潜力的业务理所当然地被Google这样有雄厚财力和丰富IT赢利经验的大公司所占领。
  应当注意的是,大众地理信息服务的范围远非提供一个本地搜索业务,我们日常中的各种软件都可能和GIS沾点关系。比如可以在即时通信工具如MSN Messenger, QQ中增加地图聊天功能,方便网友会面;再比如在手机等移动设备上提供和位置信息相关的商业广告。这些由于都是和位置信息相关的增值业务,所以它们就有一个共同的名字——基于位置的服务(LBS)。LBS看上去市场很大,机会很多,但实际运行起来却很不容易。除了需要运营商的大力支持外,赢利模式仍然是最重要的因素。

移动的地图
  移动开发由于其庞大的终端数量形成了一个潜在的巨大市场,并已形成了一条比较清晰的产业链。最上端是集成电路、通信器件等手机电子器件生产商,下游是应用软件开发商,而连接应用软件开发和硬件制造商的是操作系统供应商。
  和网络游戏类似,手机上的地图服务业务也主要掌握在运营商手中。如果中移动或联通有意提供这种业务,那我们对着电话大喊“喂,你在哪里”的这种“定位基本靠吼”的日子就可以一去不复返了。目前,中国移动增值业务有SMS,彩信/彩E,WAP,Java/BREW和IVR五块。移动运营商提供的服务主要集中在短信、WAP和KJAVA这三块。移动应用市场尽管在全球范围内已达到了几十亿美金,但商机周围也密布着风险,因此手机上的地图服务能否成为现实还是个未知数。
  GIS移动开发领域还包括很多其他的重要方向。比较典型和成熟的业务是野外数据采集,车载导航等和定位系统的集成应用。事实上,谈到移动GIS开发,我们就不能不说到无线定位技术。大家所熟知的GPS是一种定位手段,其实还有很多其他的定位方法。比如利用无线局域网定位,移动通信基站定位,有线电视台网也能提供位置信息。这些定位方法可以弥补GPS在室内环境中无法应用的不足,从而为移动地理信息服务业务提供了更广阔的空间。

开源的追求
  和充满金钱气息的商业GIS开发领域相比,开源GIS的世界则显得朴素沉静,是技术爱好者的乐园。打开Source Forge网站,在下载排行榜Top10上,我们会赫然发现一个GIS门类的软件——World Wind。这个由NASA策划,用C#编写,调用微软SQL Server影像库Terrain Server来进行全球地形三维显示的软件和Google Earth非常相似。由于三维地球仿真具有强大的视觉冲击力,令人百看不厌,爱不释手,所以使得World Wind这个相当专业的软件能够跻身充斥着电驴、电骡等BT下载客户端软件的Source Forge Top10排行榜。
  不同于商业GIS软件,开源GIS软件不用背负数据兼容、易用性等问题的包袱,开发者能够集中精力于功能的开发,因此开源GIS软件普遍功能很强,技术也非常先进,其背后是来自技术狂热者和学院研究生的大力支持。开源GIS软件目前已经形成了一个比较齐全的产品线。打开www.freegis.org网站,我们会发现众多各具特色的GIS软件。老牌的综合GIS软件GRASS,数据转换库OGR,GDAL,地图投影算法库Proj4,Geotrans,也有比较简单易用的桌面软件Quantum GIS,Java平台上有Map Tools,Map Server则是优秀的开源Web GIS软件。各种空间分析,模型计算尤其是开源GIS领域的强项。动态语言如Python在开源世界中颇受宠爱,开源GIS软件也不例外,很多GIS工具都提供了Python接口,以便于系统集成。Python优雅的语法和超强的粘合能力实在是一种挡不住的诱惑。
  开源GIS世界虽然繁荣,但其影响还是很小,其身份在外人眼里看来是高深莫测的专业工具,现有的Linux发行版中也没有哪个集成了开源GIS工具。开源GIS技术虽然先进,但是缺乏良好的能够满足商用的发行版本,因此涉足开源GIS领域的多是技术爱好者和科学家,而少有商业人士问津。如果能够提供一个比较系统的、达到商用要求的开源GIS解决方案,并能获得稳定的发行版,如同Linux-Apache-MySQL-PHP那样,开源GIS前途将是不可限量。

开放、集成、标准和互操作
  我们可以把GIS看作是一个和众多高新技术相关的综合性,交叉性的技术群。它涉及面广,牵扯的东西多,技术发展的趋势也是见仁见智。那么,这纷纭复杂现象背后的密义是什么呢?其实不难发现,GIS的要旨是开放。包括体系结构的开放,数据模型的开放,以及我们开发者思想观念的开放。只有开放,才能最大限度地提供扩展能力和灵活性,只有开放才能和应用领域充分融合,也只有开放才能让我们有更多的创新机会。和开放相应的,是GIS在应用中表现出来的重要特点——集成。GIS自从走出实验室,成为一项服务于信息化建设的技术工具,就没离开过各种集成。GIS可以集成到业务数据中,可以集成到数据表现中,可以集成到办公软件中…… 集成能力是GIS的活力所在,如果失去了和各种业务系统的集成能力,GIS就只能孤芳自赏,失去生命力了。那么,如何保证GIS的开放和集成能力呢?关键是标准。标准以及它的派生物互操作,是GIS行业中一个非常重要的问题。对于任何地理信息技术或市场,一致和有效的标准的使用,能够创造机会,激发创新,增加价值,缩短投资周期,并降低风险。不仅如此,标准还是控制市场的制高点,是GIS厂商的必争之地,因此我们就不难理解大家为何如此热衷于制定标准了。
  GIS发展的另一个重要趋势是从软件向服务的转变。尤其是2001年以来网格计算概念的爆发,在学术界和信息技术领域掀起了一股网格的热潮。针对网格在GIS中的应用,有很多深入的研究和讨论。我们姑且不管伴随网格计算的那一长串难懂的IT缩写词,先看看网格之父Ian Foster对网格概念的三点说明:协同非集中管理的资源,使用标准的协议,提供高质量的服务。GIS作为一个与生俱来的分布式系统,在标准和互操作方面一直没有停止过努力。在网格热浪来临的时候,GIS业界人士也许更多地是会心一笑,因为我们心里很明了Foster所说的三个要点,其实一直都是GIS开发者追求的目标。
(原文地址:http://blog.gisforum.net/u/85372/1445.html)





AutoCAD ARX 学习笔记(三)

作者:Blue.Leo(博客名:Leo的BLOG)

  今天是学习AutoCAD ObjectARX的第三天,三天来一直在看一本叫《AutoCAD ObjectARX 2000 开发技术指南》技术从书,当今天看ObjectARX 2007开发文档的时候,突然感觉自己都已经看过了,虽然都是英文的。汗 ,结果两者一样。大汗一把 !现在的出版的书… 竟然书上还写着谁谁著。
  ObjectARX应用程序是一个动态链接库,它共享AutoCAD的地址空间并且直接调用AutoCAD函数。
  创建一个ObjectARX应用程序通常包括以下几个步骤:
1、 创建实现新命令的自定义类。一般都是从ObjectARX提供的类派生出来的自定义类。
2、 决定我们的ObjectARX应用程序将处理哪一个AutoCAD消息。AutoCAD向ObjectARX应用程序发送  各种消息,指出在AutoCAD内发生了特定的事件,我们决定应用程序将对哪一个消息作出响应,并触发哪一个操作。
3、 为AutoCAD提供入口。在ObjectARX2007以上的版本中有一默认的入口定义文件(  AcRxDefault.def)不用用户再创建。
4、 实现初始化。在ObjectARX应用程序内,我们需要初始化已创建的任何自定义,并且重建ObjectARX运行时类树;如果要添加命令,必须注册在AutoCAD中的命令。
5、 卸载准备。卸载前必须删除所有自定义类和命令。
  注册新命令的方法可以用AcEdCommandStack的addCommand的方法和acedDefun还有acedRegFunc的方法。后两咱们以后再说,主要是addCommand注册命令的方法。
  AutoCAD命令是由AcEdCommandStack类定义的,按组存储在命令栈中。一般况下用addCommand函数一次添加一个命令,并用removeGroup函数成组的删除命令,也可以用removeCmd函数一次删除一个命令。作为退出前消除工作的一部分,我们应用程序需要删除它注册的所有命令。
addCommand函数的原型声明为:
Acad::ErrorStatus
addCommand(
const char* cmdGroupName,
const char* cmdGlobalName,
const char* cmdLocalName,
Adesk::Int32 commandFlags,
AcRxPtr Addr,
AcEdUIContext *UIContext = NULL,
int fcode=-1);
其中:
cmdGroupName 需要添加命令的组名(用ASCII表示)。如果组不存在,则会自动在添加命令前创建组。
cmdGlobalName 要添加的命令名(用ASCII表示)。该名字是全局的。
cmdLocalName 要添加的命令名(用ASCII表示)。该名字是本地的。
commandFlags 与命令有关的标记,有效值为: ACRX_CMD_TRANSPARENT, ACRX_CMD_MODAL, ACRX_CMD_USEPICKSET, 和 ACRX_CMD_REDRAW。
Addr 当执行命令时,要执行的函数地址。
UiContext AcEdUIContext回调类的输入指针。
fcode 分配给命令的输入整形码。
removeCmd()函数的原型声明为:
virtual Acad::ErrorStatus
AcEdCommandStack::removeCmd( const char * cmdGroupName, const char * cmdGlobalName) = 0;
removeGroup()函数原型声明为:
virtual Acad::ErrorStatus
AcEdCommandStack:: removeGroup ( const char * cmdGroupName);
  对于命令的查找顺序可以用AcEdCommandStack::popGroupToTop()函数放在栈顶,AutoCAD会首先查找这个组。
  全局与本地命令名的区别是:全局命令名可以在任何语言环境中使用,而本地命令名是用于非英语版AutoCAD命令名的翻译。
  透明与模态命令,我的理解是像对话框一样,非模态与模态的区别。
  到此,自己完全可以看着文档做一个例子出来了!享受你的成果吧!
(原文地址:http://blog.gisforum.net/u/92945/1458.html)



GIS与制图

作者:gisir(博客名:gisir的BLOG)

  GIS脱胎于地图,按说地图制图应该是GIS的强项,然而恰恰相反,用户往往反映GIS在制图方面太弱,这也是他们一直选用CAD进行数据采集的原因之一。那么到底能否解决用户一直苦恼的这一问题呢,方法是有的,关键是看是否有人愿意去做。
  我们首先来分析一下CAD和GIS所采用的模型,看一下为什么CAD适合制图而目前大部分GIS软件不适合制图。CAD天生是为制图而做的,它所采用的模型是制图模型,也就是说数据与表现是一体化的,就是数据是什么,对外的制图表现就是什么,他们是一致的。而GIS从出生就是针对数据分析的,它所采用的模型是分析模型,其核心理念就是数据中只存放几何坐标数据,其对外的展现则采用符号化配置的方法来解决。这就是使得数据与展现是不同的,需要通过符号中介来实现。
  如果仅仅是上面的区别那倒也没什么,产生GIS分析与制图表达难以融合的根本原因还在于GIS是一门分析科学,而制图更多的是一门艺术,这一差异使得根本不可能通过简单的符号配置架起跨越两者鸿沟的桥梁。
  在制图中存在很多不规律的和特殊的表达,他们在GIS模型和制图模型中是不一致的。比如双线河,它在GIS中用双线来表示,而在制图中却需要将其填充,从这种意义上来说,它既不是纯粹的线,也不是纯粹的面,是一种混合产物,这在严格按照点线面模型区分的GIS中是根本不可表达的。另外比如在制图中有很多填充不规律的随机填充面,这在讲究精确的GIS中也没有相应得方法进行表达。又比如制图中用到的跳线,这完全是一种艺术化的行为,这在GIS中很难实现,也许有人说我们都是通过把需要跳线的线单独打断,配上相应的符号同样可以达到这种效果。不错,是这样,但是问题也随之而来,那就是你破坏了原始数据,你这份数据只能用来出图,而不能用于其他用途,还有一些重叠过多的线需要删除一部分不重要的线来突出主题元素,这同样破坏了原始数据,采用这种办法是没办法的办法,每做一张图就需要拷贝一份原始数据,它会使得我们的数据量大增。这样的问题很多,相信熟悉制图的GIS人都很清楚这些问题,这里不再赘述。
  由于CAD和GIS模型的不一致,使得CAD数据转换成GIS数据必然存在信息的损失,而且一部分CAD类型的数据根本是无法转换为正确的GIS数据的,目前大部分的CAD到GIS的数据转换对于比较难以解决的对象转换都采用了实体化的方法,这一方法可以暂时缓解数据转换的矛盾,毕竟目前阶段,大家大部分还是进行制图和数据发布,还没有真正进入大规模数据分析时代。但这种方法为大家留下了极为严重的后遗症,一旦分析时代到来,大家必然面临着数据的重新生产问题,这极大地增加了数据生产的成本。
  那么我们是否有办法解决上述问题呢,这里有两条思路。一种是将GIS和制图分家,各取所长,一种是GIS和制图融合。
  对于第一种思路来说,GIS既然存在制图上方方面面的缺陷,那么GIS就不要再做制图,将其交给专门的制图软件来完成,比如CorelDraw,GIS只提供数据转换的接口即可。这种方式从软件研发方面来说成本最低,可以各取所长,拓宽应用,但用户的软件购置成本提高了,另外是不方便进行管理,数据和地图不能够一体管理,需要分开,还有就是增大了数据量,数据需要重复存储。
  对于第二种思路来说,那需要GIS软件厂商投入大量的成本进行软件的改造和制图软件的开发,这种方法从技术上来说是可行的,目前网上已经有一些厂商专门做了符号化软件,可以按照国标来显示数据,当然数据必须按照他们的要求来进行生产。我认为从这个方面入手重点是解决GIS模型上的一个缺陷。
  目前大家所使用的GIS模型基本上都是一致的,不外乎下面的结构:

  数据的展现也就是由数据视图到地图视图是通过符号化的方式,而版面视图中则是直接引用了地图视图中的Map,这个地方就存在一个严重的缺陷,那就是在Map中是展现了所有的数据,而且是严格按照GIS模型组织的,是为了方便人们从可视化的角度认识数据,而制图本身和这个目的不同,需要将数据艺术化,数据的准确度不是唯一的标尺,有时为了突出重要图素,甚至需要采用偏移、夸大等手法,所以这个地方不应该直接引用地图,而是应该采用一个地图的副本,使得用户可以在这个地方修改版面的展示,而不影响实际的数据。
  另外从数据文件的角度来讲,一般软件提供的版面文件中不存放任何相关的地图信息,只是存储了到地图的引用路径,实际上版面中应该采用更加松散的数据模型,并且在文件中存储每个几何数据的符号化信息,使得每个图形都可以任意修改其风格,可以任意删除和打断数据而不影响本来的原始数据。
  上面这一模型大家基本上都是从ESRI那里抄来并演化过来的,可以从某种程度上来说,大家过分依赖别人的成果,而不考虑我们的实际情况,从实际情况出发,进行相应的创造是造成国内目前这种状况的原因所在。
  从行业的发展趋势来看,两种方式会并存发展,第一种方式会在专业的地图出版中使用,而第二种方式应该在一般的地图制图中使用更广泛一些。
  当然这个问题的解决不是一方面的因素,除了GIS需要在技术方面努力,争取解决数据与制图的矛盾,也需要在地图制图标准方面有所变化,大家知道,目前的国标地图制图标准基本上还是为纸质地图制图设定的,从根本上来说还没有转变到数字制图上面来,我们急切期待相关部门能够尽快制定符合数字制图特点的标准来,避免一些在制图中很难表达和与GIS数据模型急剧冲突的情况出现,相信大家都会更加轻松一点。
  让我们共同努力,GIS的明天会更加美好。
(原文地址:http://blog.gisforum.net/u/38730/archives/2007/1471.html)



BMP文件格式研究)

作者:clever101(博客名:clever101的BLOG)

  前言:这是我研究bmp文件格式的一篇学习笔记。
  BMP文件中文成为位图文件,实际上取自Bit Map的缩写。位图分为四种:
  线画稿:只有黑白两种颜色,所以像素用0,1表示
  灰度图象:在灰度图像中,像素灰度用8bit表示,像素灰度级用8bit表示,所以每个像素都是介于黑色和白色之间的256种的灰度的一种。
  索引图像:在真彩色出现之前,由于技术上的原因,计算机在处理时并没有达到每像素24位的真彩色水平,为此人们创造了索引颜色。索引颜色通常也被称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也有限,索引颜色的图像最多只能显示256种颜色。一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。
  真彩色图像:在真彩色图像中,每一个像素由红、绿和蓝三个字节组成,每个字节为8bit,表示0~255之间的不同的亮度值,这三个字节组合可以产生1670万种不同的颜色。

1. BMP文件组成
  BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。
2. BMP文件头
  BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。
其结构定义如下:
typedef struct tagBITMAPFILEHEADER
{
WORDbfType; // 位图文件的类型,必须为BM
DWORD bfSize; // 位图文件的大小,以字节为单位
WORDbfReserved1; // 位图文件保留字,必须为0
WORDbfReserved2; // 位图文件保留字,必须为0
DWORD bfOffBits; // 位图数据的起始位置,以相对于位图
// 文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;
3. 位图信息头
  BMP位图信息头数据用于说明位图的尺寸等信息。
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // 本结构所占用字节数
LONGbiWidth; // 位图的宽度,以像素为单位
LONGbiHeight; // 位图的高度,以像素为单位
WORD biPlanes; // 目标设备的级别,必须为1
WORD biBitCount// 每个像素所需的位数,必须是1(双色),
// 4(16色),8(256色)或24(真彩色)之一
DWORD biCompression; // 位图压缩类型,必须是 0(不压缩),
// 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
DWORD biSizeImage; // 位图的大小,以字节为单位
LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数
LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数
DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数
DWORD biClrImportant;// 位图显示过程中重要的颜色数
} BITMAPINFOHEADER;
4. 颜色表
  颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:
typedef struct tagRGBQUAD {
BYTErgbBlue;// 蓝色的亮度(值范围为0-255)
BYTErgbGreen; // 绿色的亮度(值范围为0-255)
BYTErgbRed; // 红色的亮度(值范围为0-255)
BYTErgbReserved;// 保留,必须为0
} RGBQUAD;
颜色表中RGBQUAD结构数据的个数有biBitCount来确定:
当biBitCount=1,4,8时,分别有2,16,256个表项;
当biBitCount=24时,没有颜色表项。
位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader; // 位图信息头
RGBQUAD bmiColors[1]; // 颜色表
} BITMAPINFO;
5. 位图数据
  位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:
当biBitCount=1时,8个像素占1个字节;
当biBitCount=4时,2个像素占1个字节;
当biBitCount=8时,1个像素占1个字节;
当biBitCount=24时,1个像素占3个字节;
Windows规定一个扫描行所占的字节数必须是
4的倍数(即以long为单位),不足的以0填充,
一个扫描行所占的字节数计算方法:
DataSizePerLine= (biWidth* biBitCount+31)/8;
// 一个扫描行所占的字节数
DataSizePerLine= DataSizePerLine/4*4; // 字节数必须是4的倍数
位图数据的大小(不压缩情况下):
DataSize= DataSizePerLine* biHeight;
几个值得注意的问题:
  Windows 规定图像文件中一个扫描行中的一个扫描行所占的字节数必须是4的倍数(即以字为单位),不足的以0填充。(这时我产生一个疑问,对于vista等64位系统,位图文件格式是不是要作出相应变化呢?)
  RGBQUAD数据结构中,增加了一个保留字段rgbReserved,它不代表任何颜色,必须取固定的值“0”,同时,RGBQUAD结构中定义的颜色值中,红色、绿色和蓝色的排列顺序与一般的真彩色图像文件的颜色数据排列顺序恰好相反,即:若某个位图中的一个像素点的颜色的描述为“00,00,ff,00”,则表示该点为红色,而不是蓝色。
  为什么除了真彩色图像外的位图都要使用颜色表?很简单,节省磁盘空间。那么为什么真彩色图像不使用颜色表?因为真彩色图像使用颜色表将更耗费磁盘空间。一个简单的问题,现在有一个500*500的索引图像,使用颜色是200种,那么使用颜色表比不使用颜色表节省多少磁盘空间?
  大家可以思考位图的优缺点。我个人认为位图优点在结构简单,因此读取方便,缺点在于比较耗费磁盘空间。
  下篇预告《编程实现读取bmp文件》,敬请关注!
参考文献:
1. 《bmp文件格式详解》,来源:
http://blog.csdn.net/youyoufengxinzi/archive/2007/02/28/1516523.aspx
2. 《Visual C++实践与提高——数字图像处理与工程应用篇》
(原文地址:http://blog.gisforum.net/u/69679/archives/2007/1596.html)



你其实也可以成为解决SuperMap许可设置问题的高手

作者:zhangming(博客名:卫图天下)

  这两天用户咨询许可方面的问题比较多,尤其是通过设置试用许可文件的用户。问题主要表现为获取了正确的许可文件,也按正常步骤设置了许可,可是在使用SuperMap相关产品的时候还是报找不到许可。为了便于其他有类似问题的用户尽快解决此问题,把精力投入到熟悉SuperMap产品功能过程中。我将软件许可配置管理相关内容简单介绍一下。
  SuperMap许可方式有4种,分别为:单机加密锁,网络加密锁,硬件识别码和计算机名方式。其中前两种主要是购买了SuperMap产品的正式用户(使用加密锁进行加密),后两种主要针对SuperMap产品的试用用户和参加GIS大赛的学生。
  试用SuperMap时,安装了SuperMap相关产品,其中会弹出界面来设置许可,在第一个界面下拉列表中选择需要使用的SuperMap产品,下面的单选框中选择软件许可文件方式,按下一步,进入到设置界面。在设置许可文件的界面中有两个选项卡,一个是硬件ID,另一个是计算机名(一般当硬件ID项识别码一栏显示0的时候采用计算机名加密)。以硬件ID方式举例,在识别码一栏会看到9-10位数字(这个是机器硬盘的识别码),把这个数字提供给SuperMap相关销售人员,等待销售人员发送试用许可文件(试用期一般为一个月)。收到试用许可文件后设置后点击确定,就可以使用相关产品了。
  我们可以了解一下试用许可文件内容。 下面以一个试用许可文件(许可文件名后缀为dat)举例。这个许可文件我们可以用记事本打开,内容及注释如下:
[Common]------------------------------------基本信息节点
Deion=SuperMap GIS 5 License File-----描述信息
Version=5.0---------------------------------此许可文件支持的SuperMap产品版本
[UserInfo]----------------------------------用户信息节点
User=v2sky----------------------------------用户名
Company=v2sky-------------------------------用户所在公司
HardwareID=2769455625-----------------------用户机器的硬件识别码
TrialVersion=1------------------------------试用类型(1表示有时间限制,0表示无时间限制)
ExpiedDate=2007-06-09-----------------------试用期截止日
[SmoDevCore]--------------------------------核心开发许可节点
LicenseData=CC97F1409E31D80
[SmoDev3D]----------------------------------3D开发许可节点
LicenseData=F165F2906555CAF3
[SmoDevLayout]------------------------------布局开发许可节点
LicenseData=A1CAB5D618CAB6AB
[SmoDevTopology]----------------------------拓扑组件开发许可节点
LicenseData=BC2916B2BD7495E0
[SmoDevAnalyst]-----------------------------空间分析组件许可节点
LicenseData=EDFDFCCC7D11B589
[SmDevSDX]----------------------------------SDX引擎许可节点
LicenseData=CE3DF69EE567CA7
[SmoRtCore]---------------------------------核心组件运行许可节点
LicenseData=3E8462386141EA65
[SmoRt3D]-----------------------------------3D组件运行许可节点
LicenseData=C56DFFA3B3B17D8
[SmoRtLayout]-------------------------------布局运行许可节点
LicenseData=8FCE83674583EB1F
[SmoRtTopology]-----------------------------拓扑运行许可节点
LicenseData=92788AFD52DF5FA
[SmoRtAnalyst]------------------------------空间分析运行许可节点
LicenseData=AE1880B6D0FAF89E
[SmRtSDX]-----------------------------------SDX引擎运行许可节点
LicenseData=97788A48C09BD3C
[SuperMapDeskpro]---------------------------SuperMap Deskpro许可节点
LicenseData=3FD1043B81B7F6
[SuperMapExpress]---------------------------SuperMap Express许可节点
LicenseData=941CB9827644C8CD
[SmISNETProfessional]-----------------------IS专业版许可节点
LicenseData=C8CDA0207DBDC822
[SmISNETAdvanced]---------------------------IS企业版许可节点
LicenseData=E234A789A20BAD
[SuperMapDBuilder]--------------------------DBuilder许可节点
LicenseData=9383BD124DBBF17
  从上面这个许可文件内容可以看出来,其中基本涵盖了SuperMap所有产品的试用许可。用户申请试用时一般只有部分产品的许可,比如用户主要做数据的,那么可能许可文件中只有Deskpro许可;如果是做C/S项目二次开发的,那就会包括SmoDev相关许可。
  在运行了软件许可配置管理工作设置好许可后,在软件许可配置管理程序同目录会创建一个SuperMapLic.ini配置文件,打开此文件后,我们会看到类似这样的信息(为了说明配置文件信息,这里示范了许可文件方式,网络加密锁方式以及单机加密锁方式):

[Common]
Deion=SuperMap GIS 5 License File
Version=5.1.0
[Objects Runtime]--------------------------Objects运行许可节点
LicMode=3----------------------------------许可模式3表示硬件识别码方式
User=v2sky
Company=v2sky
LicPath=C:\2769455625(0603062).dat---------许可文件所在路径
ExpiredDate=2007-06-09---------------------许可过期时间
TrivalVersion=1----------------------------许可类型,此处为试用
[SuperMap Deskpro]-------------------------Deskpro许可节点
LicMode=1----------------------------------许可模式为1表示试用单机加密锁
[SuperMap Express]-------------------------Express许可节点
...
[Objects Develope]-------------------------Objects开发许可节点
...
[SuperMap IS.NET Adv]----------------------IS企业版许可节点
LicMode=2----------------------------------许可模式为2表示网络加密锁
Protocol=1---------------------------------网络许可通信方式1表示TCP_IP;2表示IPX;...
Server=Server------------------------------网络加密锁所在的服务器名字(或者IP)


用户设置许可后不能使用有什么样的原因呢,一般有下面几种:
1,没有在下拉列表中选择需要使用的软件;
比如本来需要使用SuperMap Deskpro,但是没有选择下拉列表中的Deskpro(默认是SuperMap Objects开发版),这样设置许可时只是对SuperMap Objects开发版设置许可。对于此原因重新设置一下就可以了。
2,设置许可后把相关的dat文件移动位置或者删除了;
我们看上面配置许可后的ini文件,其实ini文件中只是记录了连接信息,并没有把真正的序列号放在ini文件中,所以许可文件在设置后不能移动目录或者删除。对于此问题原因可以把许可文件放到一个不常被移动的位置,设置一下许可。
3,修改了操作系统时间;
SuperMap试用时,系统中记录了设置以及过期时间,不可以为了延期使用来修改操作系统时间(其实如果想继续使用只要再申请就是)。
4,设置许可后可能有其他原因导致许可配置信息文件内容不全;
比如本来是试用许可,可是设置好许可后,ini配置文件中的ExpiredDate值为空。建议把许可配置信息文件(ini文件)删除,重新配置许可。
5,无法生成ini配置信息文件;
这个原因是最近刚刚遇到,用户设置好许可文件后,在许可配置管理工具没有生成对应的ini文件(后来查明其登陆此系统的用户权限不够)。
6,许可文件中缺少需要使用软件的许可;
重新向SuperMap 销售人员申请需要的许可即可。
...若存在其他原因,卫图天下将继续补充。
上面整理的关于许可内容的介绍,许可配置信息文件内容以及一般设置好许可后使用不了软件的原因,相信各位看了以后也能成为配置许可的高手。
感谢 http://www.v2sky.com 卫图天下|v2sky|大明 整理
(原文地址:http://blog.gisforum.net/u/28376/1247.html)



SuperMap IS.NET Ajax的一点认识

作者:John.B.Jim(博客名:独驴一枝花)

  前一段时间学了一下IS.NET Ajax,一直想写点东西,现在付之实施。
  对Ajax的认识恐怕也是从IS.NET Ajax开始的,之前只是零星的看过一点这方面的概念,很模糊,也很好奇——为什么现在的GIS公司都转向Ajax发展WebGIS?
  Ajax不是一种技术,它是一种框架,一种模式,它的核心在XMLHttpRequest异步调用上,利用脚本对其进行控制,当然这些都是基于DOM(文件对象模型)得以完成的。它可以直接从浏览器与后端服务进行通信,而用户则感觉不到这一通信过程,从而使得用户获得更好的浏览体验。
  以前的Web服务是强制用户提交请求,等待(Blank),Web服务器处理,反馈处理后的DHTML给用户的过程。不过Ajax则是通过脚本控制,让DOM异步提交请求,并且不刷新页面,等待反馈结果,在得到处理结果后相应的对象进行更新,这样便完成了一次互动传输。可以看出来,利用Ajax后,用户不会像以前那样总是面对空荡荡的Blank Page了,而是不知不觉中就获得了数据和操作更新。
  正是因为这样的优点,对于WebGIS来说绝对是个诱惑,因为WebGIS是要求不断进行大数据量通信的,而在不刷屏的情况下进行操作处理,会让用户不用烦躁的等待Blank page了,也使得WebGIS更加Common and Convenient。
  SuperMap IS .NET5.2版本主要精力集中在MapControl、TCPMap上,当然也提供WebService,现在5.3版本将会把精力主要放在AjaxControl、Ajax上,相应的提供MapControl、TCPMap、WebService等。AjaxControl继承了MapControl的所有功能,并且加入了放大镜等新的功能,开发过程也和MapControl相似,但是在理念上却有所不同。Ajaxs则是客户端脚本开发的一种方式,通过这种方式,developer可以用丰富的Javas来自由灵活的进行开发,无疑为那些脚本高手们带来了新的惊喜。如果developer能够结合Ajax控件和脚本开发,那么相信将会使Ajax特点发挥的伶俐尽致。
  当然这些东东还是要大家多多使用多多揣摩,使其发挥最大的功效的:-)
(原文地址:http://blog.gisforum.net/u/94879/1518.html)





忧郁而死的鱼

作者:刘霞(博客名:折尺〔刘霞〕的blog)

  我家养了两条鱼,没过多久,其中一条就死掉了。我很伤心,我那么小心的照顾它,它却死了。LG告诉我,那鱼是忧郁而死。我知道鱼缸是小点,但也不至于让鱼死掉。LG解释说,鱼缸小,鱼活动范围小,因为担心碰壁所以鱼精神高度紧张,以致患了忧郁症就死了。啊?还有这样的道理。“你不会是在说我吧?”“呵呵”LG笑了。这是他开导我的方法。
  是呀,由于工作压力大,向来开朗自信的我曾经一度烦躁,乱发脾气。可后来想想,那样根本与解决问题一点好处的没有,反而更糟。事情没有解决,把自己的也弄的很狼狈。我必须调整自己的状态,千万不要因为任何事情而去生气烦躁。万物都有规律,无论多么复杂的事情都会解决。生活本来就是这样的。
  我不想做忧郁而死的笨鱼,我要做自由自在快乐的鱼。尽管我的空间很小,但我拥有自己自由的空间,我应该尽情享受这份自由,修身养性。即使有一天我投身大海,我也能迎接汹涌的风浪。

(原文地址:http://blog.gisforum.net/u/90609/1466.html)
分享到:
评论

相关推荐

    欧母龙PLC例程源码陶瓷厂用程序及图纸

    欧母龙PLC例程源码陶瓷厂用程序及图纸提取方式是百度网盘分享地址

    node-v19.6.1-darwin-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    集比赛直播、新闻资讯、数据查询为一体的APP,支持Android和iOS双平台.zip

    NBA Player是由React Native创作的集比赛直播、新闻资讯、数据查询为一体的APP,支持Android和iOS双平台

    那年的毕业设计.zip

    那年的毕业设计

    精品企业智慧中台规划与建设总体方案.rar

    企业智慧中台规划与建设总体方案是一个针对企业数字化转型需求而设计的综合性IT解决方案。该方案旨在构建一个集中、高效和灵活的中台架构,通过整合企业内外部的数据资源、业务流程和应用服务,为企业提供一个统一的数字化运营平台。在当前的商业环境下,企业面临着激烈的市场竞争和不断变化的客户需求。为了应对这些挑战,企业需要快速响应市场变化,提高运营效率,降低成本,并实现持续创新。因此,企业智慧中台的规划和建设成为了关键任务。该方案的核心思想是将企业的业务逻辑、数据管理和技术创新紧密结合起来,形成一个高度集成的智慧中台系统。通过构建标准化的数据模型和接口,实现数据的一致性和可访问性,同时提供丰富的数据分析和挖掘工具,帮助企业发现潜在的商业价值和机会。此外,该方案还注重用户体验和业务敏捷性。通过构建灵活的应用开发框架和API接口,支持快速的业务迭代和定制化需求,满足不同部门和角色的个性化需求。同时,通过智能化的自动化流程和决策支持系统,提高企业的决策效率和准确性。总之,企业智慧中台规划与建设总体方案是一个全面而深入的IT解决方案,旨在帮助企业实现数字化转型,提升竞争力和创新能力。通过构建集中、高效和灵活

    node-v14.2.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    欧母龙PLC例程源码自动包装欧姆龙PLC实例程序

    欧母龙PLC例程源码自动包装欧姆龙PLC实例程序提取方式是百度网盘分享地址

    2017年 可穿戴电子设备中无线充电技术的应用专利技术综述.zip

    2017年 可穿戴电子设备中无线充电技术的应用专利技术综述.zip

    机械设计下拉式四柱液压机sw16可编辑非常好的设计图纸100%好用.zip

    机械设计下拉式四柱液压机sw16可编辑非常好的设计图纸100%好用.zip

    python制作九宫格切图器

    请你介绍一下九宫格 九宫格是一种将一个方形划分为九个小方格的布局形式。每个小方格可以容纳一个元素或显示一个图标,用于进行导航、操作或展示内容。 以下是对九宫格的一些基本说明: 布局结构:九宫格布局通常由三行三列的方格组成,其中每个方格都有相同的大小和形状。通过这种均匀的网格结构,可以更有效地组织和展示信息。 导航和操作:九宫格常用于移动应用程序、网站和用户界面设计中,作为导航和操作的元素。每个方格可以代表一个功能、页面或模块,用户可以点击相应的方格来执行相应的操作。 图标排列:在九宫格布局中,每个方格通常包含一个图标,用来表示相应的功能或内容。这些图标可以是文本、图像、按钮或其他可交互的元素。通过合适的图标选择和排列方式,可以使界面更加直观和易于操作。

    中医与人工智能-基于Protégé构建知识图谱

    https://blog.csdn.net/m0_38139250/article/details/121877883 中医与人工智能-基于Protégé构建知识图谱 配套资源

    毕业设计 基于Python+Flask+Vue的知识图谱(Neo4j)的课程学习智能问答系统源码+详细文档+全部数据资料高分项目

    【资源说明】 毕业设计 基于Python+Flask+Vue前后端分离的知识图谱(Neo4j)的课程学习智能问答系统源码+详细文档+全部数据资料(高分项目)毕业设计 基于Python+Flask+Vue前后端分离的知识图谱(Neo4j)的课程学习智能问答系统源码+详细文档+全部数据资料(高分项目)毕业设计 基于Python+Flask+Vue前后端分离的知识图谱(Neo4j)的课程学习智能问答系统源码+详细文档+全部数据资料(高分项目) 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    matlab粒子群优化算法,通过栅格法实现移动机器人路径规划.zip

    【验】粒子群优化算法,通过栅格法实现移动机器人路径规划.zip

    基于java-242_基于微信小程序的快递代取系统设计与实现-源码.zip

    提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

    C语言本科毕业设计-电动车巡航速度控制系统源码.zip

    C语言本科毕业设计-电动车巡航速度控制系统源码。一套以STM32单片机作为主控的电动车巡航速度控制系统,能实现定速巡航、自动避障等

    node-v18.16.0-darwin-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    windows2012升级程序

    云计算专栏里的windows2012升级程序 1.Windows8.1-KB2911106-x64 2.Windows8.1-KB2914218-x64 3.Windows8.1-KB2919442-x64 4.Windows8.1-KB2919355-x64 5.Windows8.1-KB2999226-x64

    51单片机音乐盒设计 程序+原理图+仿真+实物图+PCB图+其他资料

    51单片机音乐盒设计 程序+原理图+仿真+实物图+PCB图+其他资料

    node-v14.15.3-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v18.15.0-darwin-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics