蜈蚣

百足之虫,死而不僵
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

给ArcIms穿件清凉的外衣

Posted on 2007-05-21 17:02  蜈蚣  阅读(1752)  评论(7编辑  收藏  举报
   用ArcIMS的html View做过项目的人都有个相当痛苦的经历。整天在一顿javascript 和ArcXml上转啊转,里面的结构一是一般的乱,东西也不是一般的多。如果新手拿着esri公司的参考文档看半天能找出个东南西北,头脑算是比较清醒的。
 最主要的是那个慢啊。。。。。
 单位有个项目,要求用VML在地图上动态绘制点东西。每次看到连续定义50个以上变量的代码我就容易发疯。所以还没看完第一个方法,我就开始想歪主意。想坏主意一般是从最熟悉的方向下手。在这之前曾用VML/底图方式分别实现矢量地图/图片地图的放大,缩小,移动,测量,选择,鹰眼.(用底图的缩放是伪缩放,不过用多级平滑处理后勉强能蒙过去)。干脆给拖过来试试,顺便测试下原来设计的兼容性。
   webGis地图操作,最常用的也就是放大,缩小,移动,测量,选择。顶多就偶偶做做图层切换。原来的实现方式是依赖以一个xml配置文件,根据坐标动态切换图片。
   不过这个活ArcIMS已经给我们包装好了(这个简单的包装其实是相当的昂贵的,一个key就好几万哪),只要向服务器发送出用ArcXML包装好的请求,服务器就能生成图片。
   说说流程吧:
    1, 获取地图信息
    2, 根据信息解析空间坐标,图层信息等
    3, 加载一张默认地图
    4, 根据用户进行地图操作(放大,缩小,移动,测量,选择)
    5, 根据操作屏幕坐标,换算出新的地图位置(投影坐标/地理坐标)
    6, 发出ArcXML请求
    7, ArcIMS服务器返回图片信息(包括图片位置和坐标)
    8, 将位置信息重新计算。
   好家伙,认真看了一下,原来地图操作方法和接口基本上不用动。只要改下缩放和绘制方法就ok了。
 
    核心代码
      
核心代码
   搞了半天,终于能跑了,不过给偶们部门经理几句话就给毙了:“设计思路清晰,但没有像HTML viewer模版一样经过测试,公司无法预测风险”。既然公司用不上,那就给别人用吧,说不定还可用当作个ArcIMS入门级的练习程序,再不济,当个ArcIMS服务的测试程序也比HTML Viewer强。
   代码下载: /Files/sukyboor/ArcIMSDemo.rar。配置好arcIMS服务后,改下MapImageService地址就可用。(注意这里假设默认坐标系为投影坐标,通过定义一个经纬度区域与之对应,所以算出来的经纬度不一定正确。但如果直接用经纬度作为默认坐标系,则无此问题)
   有兴趣的人可任意在此基础上进行开发,并希望有好的应用能发一份给我看看。