抛开arcgis9 的 arcgis Server.先说arcIms开发。(以Image Services为例,ArcMap Image Services我估计在arcgis9中,着重在arcGIS Server体现)
arcIms的核心是AcrXML,也可以说是围绕着ArcXML进行的开发,如果熟悉了ArcXML,估计关于arcIms的开发就掌握了60%.
象htmlview,javaconnect,Activex等各种连接,只是对ArcXML的一个封装。
ArcIMS服务器,其实相当于一个webservice.我们输入一定格式的参数,他处理后就返回相应的结果。而这个格式就是ArcXML。(其实 ArcXML还是ims的配置文件,由author生成。)ARCXML包括内容丰富,还在不断增强。
我们常用的请求为Using GET_IMAGE and IMAGE with Image Services,Using FEATURES and FEATURES 分别得到图象和属性值
对于我们二次开发来说,我们只是不断的组合请求的ArcXML,得到我们想要的结果。然后显示这些结果。 我把这个开发过程分为
GIS业务应用 和 WEB编程。 比如:北京工交网:其实就是组合了几个ARCXML ,然后显示出来。IT公司WEB编程肯定没问题,所以现在GIS行业焦点在如何最大的挖掘需求,挖掘行业应用。如何把行业需求用GIS软件提供的功能表达出来。(难啊!)作了两年GIS,做的基本都是放大,缩小。业务上,在中国政府机构,公司很难提出什么应用来。(急需一些标准)。估计以后是个方向。(我要有钱,专门做GIS应用行业标准)
我较喜欢htmlview, 用他可以作出很漂亮的界面(有段时间我认为做GIS和做美工性质一样)。很多工作在客户端。但安全性低,都用javascript实现。至于 javaConnect等,更符合OOP,但是1、因为webGIS系统有很多状态,比如地图的比例,活动层的选择等要保持,要保持这些状态,必须把这些放到缓冲中,那对于大用户量来说,性能是个大问题。2、javaconnect和mapxtreme很类似, 改变地图要刷新MAP对象,把MAP对象放到SESSION中。(急剧影响性能,访问量大了)所以状态要保持,对web服务器也是个挑战。对很酷的地图操作也是个挑战。3、个人觉得javaconnector类库的设计好象不是面向开发人员的,完全以地理分类的概念分组,打包。(package Map对象应该分成几个对象,弄的太复杂了,对不同的请求,有些属性是空的。)
(现在我正在研究用javaconnector开发高性能ims webGIS)
在ArcGIS9中,ESRI公司有了新的webGIS编程模型,地理分析可以在web上实现(当然IMS还有),主要针对J2ee 和.Net平台。 新内容有 1、由arcgis Server管理AO对象 2、可以远程调用这些AO对象3、有个ArcObject Develop FrameWork(ADF) 和运行时,支持J2ee,.net平台,可以开发ebgis.4、webservice,EJB支持看了一下文档,焦点在对象的远程调用和对象状态的保持两方面。 第一点,性能问题,没用过,但估计悬, 但AO对象强大的功能通过远程对象访问搬到web上来了,值得期待。 第二点:对象状态保持,和mapxtreme一样,有对象池了概念。和EJB的有状态bean无状态Bean类似。和有状态Bean一样,对象状态保持问题好象解决的不好。但gis大多为有状态对象。麻烦啊。状态保持方案 好象有shallowly stateful application 和 deeply stateful Web application。需要很大的编程技巧。 个人感觉,.net在这开发还好。J2ee的JSF不知道什么时候能成熟啊。
(二)客户端选择 就IMS来说提供了 HTML Viewer Java Standard Viewer Java Custom Viewer
Java Standard Viewer,Java Custom Viewer功能差不多。 对于程序员、中国客户来说。Java Standard Viewer基本不用。典型的胖客户端,Image 和Feature MapServices 都要下载APPLET,客户端还要装jre。随着微软IE对applet的抵制 和 Arcgis Server(远程数据分析,Feature MapServices的替代)成熟,估计这种胖客户端没什么大用了,至少我觉得在中国是这样的。就我接触的webgis项目中,applet的应用不是很多,政府部门更是因为安全性,很少用。(
http://www.668map.com/)用applet,但是假如我们对于大数据量的gis应用,有还多业务查询、分析。估计把数据放到缓冲中的做法就悬了。还有假如我要加遥感应用,数据量大的更是可怕。
我个人对Java Viewer前景不是看好。
HTML Viewer:DHTML和JavaScript
实现。随着web程序的流行,dhtml,javascript,css的成熟(对不同浏览器有统一标准就完美了,不过客户端IE就现在还是老大)。arcgis server的客户端也是html view(没办法.net,j2ee还是以浏览器为主要客户端的)。另外html是如此的轻便,页面是可以如此的漂亮,扩展,维护也不用编译什么的。虽然不支持Feature MapService,但Feature MapService的应用可以由arcgis server实现。 连接器选择。.NET Link 、ActiveX 、AppServerLink 、ColdFusion 、General、Java 、Servlet、WMS
思想就是把ArcXML封装了,再向ArcIMS发送请求,客户端展示。下面以arcIMS提供了例子探讨一下Servlet
Connector ,javaconnector。请自行配置htmlview和javasconnector的例子。
Servlet Connector:修改viewer.htm,使jsForm.htm 可以在页面中看到。(<FRAMESET
ROWS="30,*,30,50"—)
jsForm.htm加载地图前代码
......
function passXML() {
}
......
加载地图后代码
......
function passXML() {
var XMLResponse='<?xml version="1.0" encoding="UTF-8"?><ARCXML
version="1.1"><RESPONSE><IMAGE><ENVELOPE minx="116.325273231549"
miny="39.9126536248245"
maxx="116.741417757427" maxy="40.08" /><OUTPUT
url="
http://zhangkj:8080/Output/txzy_ZHANGKJ188425841.jpg"
/></IMAGE></RESPONSE></ARCXML>';
parent.MapFrame.processXML(XMLResponse);
}
........
在aimsXML.js中看函数function
htmlSendToServer(URLString,XMLRequest,theType)和function processXML(theReplyIn)
一目了然了,htmlSendToServer把我们组合的arcXML发送到com.esri.esrimap.Esrimap?ServiceName,返回的XMLResponse由processXML显示出来。
核心代码就这些,你在javascript文件夹中的大部分js文件是 组合请求的arcXML字符串 和
解析从arcIMS返回的arcXML字符串。其他js文件是DHTML,参数,公有函数等。看上去挺吓人的。我个人觉得htmlview例子里的js代码可重用性很高。但必须很熟悉这些代码,函数。和其他连接器比较,htmlview可以说是最简单的了。
熟悉html,熟悉javascript,有arcXML文档,这就够了。
剩下的是用 javascript构造不同的arcXML,请求arcIms, 用dhtml,javascript显示返回arcXML.
(大家可以看一下jspForm.jsp,用com.esri.aims.mtier.io.ConnectionProxy类来请求IMS服务。和上面的流程差不多。
http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.gateway&p=16&pf=217上面讲的都不错,从更深的角度讲了各个连接)
javaconnector:把arcXML文档用java对象封装起来。组合arcXML的工作由纯面向对象的java语言来做,
com.esri.aims.mtier.io.ConnectionProxy对象请求ims服务器,返回java对象的响应。servlet
connector 是字符串,而java connector是java对象。这样java语言的优势,java对象的可操作性,易用性,方便性就显露出来拉。javaconnector对arcIMS服务动态增加等。
Map map=new Map();
map.initMap(mapCon,750,false,false,false,false);
map.setHeight(500);
map.setWidth(400);
map.refresh();
String url=map.getMapOutput().getURL();
Map对象封装ArcXML,map.refresh() 请求IMS服务。
请求完了Map对象包括响应的内容。(其实map.initMap也触发了一次请求
GET_SERVERINFO。javaconnector的类库设计的有问题。)
(三) servlet connector 和 javaconnector比较 一、性能
servlet connector:
用户下载javascript文件。组合arcXML在客户端执行。如果用户机器不是太慢的话,性能应该是最好的,服务器压力也小。据说ims 群集安装,系统配置的好的话,可以支持几百万用户。
javaconnector:比不上servlet
connector。1、java对象的封装,在服务器端运行。(不过可忽略)2、Map对象建立的性能损耗。map.initMap(),map.refresh()都要触发请求ims。操作一次地图新建一个map对象的做法是不可能的。有两个解决 把map对象放到Session中和map对象池。把map对象放到Session,用户多的时候,web服务器压力很大,多用户时不可行。 map对象池 ,map对象的钝化,激活(EJB的提法)操作复杂。因为不同用户当前操作状态不一样(在arcgis9 server中,状态保存是个值得研究的地方)。
运用javaconnector 性能问题得考虑。
(个人觉得javaconnector类库建立的有问题,用反编译工具看,代码设计有改进的地方,可以解决map对象初始化问题)。
二、功能:
servlet connector: arcXML的所有功能。 问题在 组合arcXML和显示响应的arcXML的环节上。
因为这些用javascript实现。有一定局限性。 比如,我要把 响应arcXML 的查询结果排序。实现起来费事。(arcXML查询不支持order by ).不可以对ims服务操作。
javaconnector:arcXML的所有功能。可以用java语言的优势处理很多问题。比如前面排序。动态图层、与遥感影象图的叠加实现起来都比较方便。还可以结合arcSDE的java接口处理原数据。
待续.....
分享到:
相关推荐
《ArcIMS开发经验总结》 ArcIMS是Esri公司推出的一款用于构建地理信息系统(GIS)Web应用程序的平台。它允许用户通过网络浏览器访问和操作地理空间数据。本文将深入探讨ArcIMS开发中的关键概念和实践经验,特别是...
在本文中,我们将深入探讨ArcIMS(现在称为ArcGIS Server JavaScript ...随着技术的发展,现在的ArcGIS Server JavaScript API提供了更现代和强大的功能,但理解基础的ArcIMS开发经验对于理解现代GIS开发仍然有其价值。
6. **arcims(HtmlView)开发经验总结1.txt**: 这可能是开发者在使用HtmlView(ArcIMS的一种视图类型)开发过程中的心得总结,分享了遇到的问题和解决方案,对于初学者来说是一份宝贵的实践指南。 7. **如何监视...
总结来说,通过《ArcIMS轻松入门》这本书,读者不仅能够学习到ArcIMS的基础知识和安装过程,还能了解到如何使用其核心工具进行地图配置与发布,以及如何进行更高级别的开发工作。这对于希望快速上手ArcIMS并构建实用...
总结,ArcIMS作为一款早期的Web GIS解决方案,它的核心功能包括地图服务发布、数据交互以及网络分析。理解并掌握这些基础知识点,对于从事GIS开发和应用的人员来说,能够更好地利用ArcIMS实现地图服务的创建和优化,...
IMS经验总结,特别是针对GIS(地理信息系统)的实施,是一个复杂的过程,涉及到多个关键组件的选择和配置。在规划ArcIMS站点时,首要决策是确定客户端的类型,这直接影响到用户体验和系统性能。 ArcIMS提供了三种...
- **实战经验**:理论学习之外,积累实际开发经验同样重要。通过参与具体项目,开发者可以更好地理解GIS应用的全生命周期,从需求分析到系统设计、编码实现、测试优化等各个环节。 #### 四、安装部署 - **开发环境...
根据提供的信息,我们可以总结出以下与AO(ArcObjects)相关的学习资源及知识点: ### AOVBA 开发教程 - **作者**: locokoy - **链接**: [AOVBA开发教程](http://www.3snews.net/bbs/viewth...&extra=page%3D6) *...
- **服务器 GIS**:包括 ArcGIS Server、ArcIMS 和 ArcSDE 等产品,用于创建和管理基于服务的 GIS 应用程序。 - **移动 GIS**:ArcPad 等移动应用支持 GPS 和其他无线技术,适合野外数据采集和信息访问。 #### ...
根据给定的文件信息,我们可以总结出以下关键知识点: ### ArcGIS软件架构 #### 1.1 ArcGIS介绍 - **概述**:ArcGIS是由ESRI公司推出的一套全面且可伸缩的地理信息系统(GIS)平台。该平台集成了数据库、软件工程...
- **ArcIMS定制开发**:提供了关于如何定制开发ArcIMS(HTML Viewer)的方法,包括框架定制、外观定制和功能定制等方面。 #### 六、项目管理 - **案例分析**:通过对一个失败的政府项目的前期商务运作进行分析,...
- **ArcIMS**:ArcIMS(ArcGIS Image Management System)是一个图像管理解决方案,主要用于分发和管理大量的遥感图像数据。 - **ArcGIS Server**:ArcGIS Server是一个企业级的地理信息系统服务器,用于发布地图...