浏览 5151 次
锁定老帖子 主题:Ajax and WebGIS
精华帖 (3) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-22
最后修改:2010-04-27
WebGIS应用需要和空间应用服务器进行大量交互,简单的如漫游、查询、搜索,复杂的有地理编码、路径计算、空间分析,在发布面向企业的地图服务时,多台空间应用服务器做负载均衡是家常便饭,更不用说面向公众的地图服务。三四年前大家配置好服务器后,能在客户端看到地图显示,做一些基本查询就觉得非常新鲜了,没有过多去关心用户体验,后来为了适应大量用户访问的需要,WebGIS开始应用多级缓存技术,其中切片或瓦片就是其中关键技术之一,简单易用,同时Ajax的出现被立即证明它和WebGIS是不可分割的,所有WebGIS基本功能都可以基于Ajax方式去实现,缓存技术和Ajax在减轻空间应用服务器负载的同时大大改善了原有的用户体验,成为支撑现在WebGIS的经典技术(Ajax暂且也称为技术吧)。 Ajax和WebGIS颇有渊源的,两者几乎是在同一时期开始流行,2006年我参与的一个项目就用Ajax异步调用的方法实现地理查询和动态显示,当时还没有多少项目使用prototype,更不用提mootools、jquery了,全部手工去写,现在大家看来都非常easy,那时确实给客户留下了深刻印象。现在小结一些基本Ajax+WebGIS应用模式:
确实,简单的几个技术组合将WebGIS向前推进了一大步,直接提升了客户对WebGIS应用的认识和要求,在经过新鲜感的过渡期之后,越来越多的客户需要将WebGIS和具体业务紧密结合在一起,最典型的应用之一是在WebGIS基础去查询或管理业务POI。过去,咱们都是在体验Ajax带给WebGIS的便捷,现在开始出现困惑了,例如WebGIS查询,当查询POI结果有几千到几万时,就会出现性能问题,客户端要异步刷新显示成千上万个POI点,会对客户端会造成较大的压力,如果还要基于这些点进行分级渲染,压力就更大了,有时在稍微年长一点的电脑上根本无法完成。抽稀是一种解决方法,以网状结点去代表每个比例尺级别周围临近的POI点,但这种方法不能适用于所有情况,有的应用非常关心POI点所在的位置有没有超出规定界限,这时抽稀反而带来了显示结果的不准确性。 对于这个问题曾想过很多办法,最后发现自己陷入了固定思维的泥潭,Ajax和WebGIS是天生一对,但在这种模式下,用传统地图请求响应模式比Ajax有效,一万个点在服务器端生成好后,以图片形式传给客户端,网络传输加上客户端的压力和对十个点查询的压力基本相同,压力抛给服务器去处理,看来WebGIS也有不适应Ajax的时候。综合考虑,当请求不多时可以考虑这种模式,当请求量很大时,服务器压力会大大增加,也不是一种万能的方法,不知道有没有更好的技术方案? 现在WebGIS Flex客户端已经开始流行,WebGIS在Flex中同样是基于异步的调用,一万个点仍然是可望不可及的事情,除非提升客户端电脑的配置,如果从开发技术上去实现有没有更好的方法? Google Map: http://ditu.google.com Mapbar: http://www.mapbar.com ArcGIS Flex API: http://resources.esri.com/arcgisserver/apis/flex/ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-22
呵呵,1万个点的话还是在服务端画吧,用flash效率也勉强可以接受了。
|
|
返回顶楼 | |
发表时间:2008-12-22
最后修改:2008-12-22
yishh 写道 呵呵,1万个点的话还是在服务端画吧,用flash效率也勉强可以接受了。
Intel Core 2 Extreme X9100 3.06GHz + 4G内存还能画,但用户体验已经不好了,因为仅仅是显示点而已,如果要根据属性对点做分级渲染,效果可想而知。 大家可能会想现实中有没有这样的需求,实际是存在的,例如地图上一个图层有几千个面状要素,代表着该区域的人口密集程度,用半透明的浅红到深红分别渲染面状要素,以此说明整个地区的人口分布情况,这样去做机器真的会死掉。点状要素也有类似需求,就不列举了。 Flex擅长于客户端显示,但我发现对于专题图而言,它只适合做饼图、柱状图,不适合做渐变渲染,而渐变渲染恰好是服务器的强项。 |
|
返回顶楼 | |