水世界-水处理技术社区(论坛)

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信登录

扫一扫,用微信登录

搜索
查看: 2530|回复: 0
打印 上一主题 下一主题

ArcIMS + ArcEngine 生成等值线图

[复制链接]

1万

积分

5860

金钱

4894

帖子

铂金水师

QQ
跳转到指定楼层
楼主
发表于 2007-8-27 18:22:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



马上注册并关注水世界微信号,获得更多资料

您需要 登录 才可以下载或查看,没有帐号?注册   扫一扫,用微信登录

x
上周做了一个ArcIMS + ArcEngine生成等值线图的一个demo,整个思路可以用来完成任意ArcIMS + ArcEngine开发的程序,开发思路比较简单: 1.计算机上同时可以调用arcims服务和arcengine开发包。 2.做个简单的arcims程序,可以显示地图及对地图的常规操作(放大、缩小、平移、图例等),可以参考blueviewer或其他已有的成型例子。 3.用arcengine写等值线生成的代码,提供arcims需要的入口参数,返回结果是生成等值线shape文件,然后在arcims网站服务器端调用该功能方法,用动态图层的方法在页面上显示该shape。 4.在网页上添加一个参数输入口,例如textbox,后台程序根据输入的值来生成该值对应的等值线图,用ajax异步刷新地图,实际速度很快。 小结一下,就是三步,arcims程序、engine服务器端程序、两者之间的桥接(网页的服务器端)。 开发过程中也容易碰到一些问题,主要体现在这些方面: 1.arcengine写的方法在页面的服务器端调用,但是这些方法通过什么形式存在呢,一种是联合调试,在一个解决方案中添加两个工程,一个是 arcims工程,一个是arcengine工程;一种是将代码封装为dll,但这种方式打包可能会碰到一些麻烦,如arcims用 asp.net/C#,engine用VC++.net,engine程序打包后可能会碰到无法调用COM的问题;还有一种最直接的,全部用一种语言写, engine功能方法放在网站的App_Code文件夹里。 2.已有点状数据,及根据点数据的业务字段生成grid栅格图,arcengine接受到arcims传过来的参数后,在已有的栅格图基础上生成 shape等值线,arcims通过动态图层添加等值线,这样等值线不能写到内存中,一是因为arcims不能读内存,二是访问量大了内存也吃不消。如果将等值线写到硬盘上如本地文件,只能通过AO自身的命名法(对生成的每一个等值线文件名最后一位数字加1)来生成等值线,这样的好处是每个用户访问不会相互冲突,缺点是会在本地生成大量的shape文件,即使该shape没有被用户使用了,还是会因为arcims后台进程占用无法删除,带来数据上的冗余,可以考虑一下是否有更好的方式来处理?当然,如果等值图上差异值比较少,一共二三十条等值线,完全可以将等值线全部做好后供arcims来调用,有点缓存的意思,免去了engine的工作减轻服务器负担,但毕竟不是正途,server在这一点就容易处理的多。 最后看看效果图:
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册   扫一扫,用微信登录

本版积分规则

联系管理员|手机版|小黑屋|水世界-水处理技术社区(论坛) ( 京ICP备12048982号-4

GMT+8, 2025-6-17 07:17 , Processed in 0.242960 second(s), 39 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表