有幸在arcims mapxtreme两大平台上做过开发,谈谈个人感受
抛开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 GET_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平台,可以开发webgis.4、webservice,EJB支持
看了一下文档,焦点在对象的远程调用 和 对象状态的保持 两方面。 第一点,性能问题,没用过,但估计悬, 但AO对象强大的功能通过远程对象访问搬到web上来了,值得期待。 第二点:对象状态保持, 和mapxtreme一样,有对象池了概念。和EJB的有状态bean 无状态Bean类似。和有状态Bean一样,对象状态保持问题好象解决的不好。但gis大多为有状态对象。麻烦啊。状态保持方案 好象有 shallowly stateful application 和 deeply stateful Web application。需要很大的编程技巧。 个人感觉,.net在这开发还好。J2ee的JSF不知道什么时候能成熟啊。