google栅格map技术实现原理和用户体验方式
google map的推出,改变了MapGIS用户体验,国内也起来了mapabc mapbar纷纷效仿。
这是一种用户体验的变革,相信不是google首创,但确实是google使得这项技术发扬光大。
b8V*]*j W*x!I0
以前大概也接触过一些gis应用技术,arcGIS mapinfo是王道,国产的mapgis supermap也很成熟,二次开发都有。但webgis方面总不尽人意,如以前的DHTML展现的go2map,还有不少javaapplet activex做web嵌入客户端的技术。
虽然能够做到矢量无极缩放,各种高级功能都可以通过后台引擎提供。但效率一直是一个很大的问题。
每一次简单的交互操作(如移动、放大)都会通过后台服务器查询、
检索、显示、输出,后台压力不小,多几个并发就响应不过来。再怎么优化也不适合公众使用。
开发平台确实都成熟,都有相关的web开发组件。但效果确实感觉不佳。即使用集群,也是非常复杂的事情。
2:google的栅格map方式,在用户体验和性能优化上确实值得赞叹。
1)需求分析,用户浏览地图,有多少真正希望了解地图上一条线,一个面呢?那些无级缩放的图层有必要提供给用户交互吗?用户无非是关注一下大概的形状、地名点、关键道路,而这些数据量比起地图的全部图层来说,是小得可怜的。因此google在这一块,把所有图层叠加生成了不同比例尺下很大的静态
图片,就好比输出成一张挂图。
这一点,使得后台系统不必每回动态生成显示,极大程度降低了服务器负担,因为这些数据确实不会大变,即使变化数据的更新也是很大的工程。而上面的标注点,道路的有权有向图,或者行业业务数据才是频繁更新的。
除了矢量地图,叠加的卫星航拍图也这么处理,更大程度降低了服务器负担,我想,怎么着也有80%以上吧。
2)用户交互,一张全世界的地图可大得吓人,不可能临时裁剪显示输出。google很聪明的使用了Grid方式,把图切成无数小块,每回使用滑动窗口输出有限的小图,再拼在一起显示。再加上(可视/后台缓冲)图片格的障眼法使得用户拖动时感觉不出拼接。
ajax的应用,使得后台下载填充缓冲格为下一次移动做好了准备。
具体操作:
先用专业GIS系统,把矢量图图层叠加做好,做到显示效果最佳,再根据不同的缩放输出不同比例尺的图片,然后按一定大小切块,如128*128,每级图层按一定比例缩放,一般可以是2倍,这样就会有十几个不同比例尺的栅格图了。这些国产的GIS平台都提供了这种跑图的工具。人工做好基础图,让程序自己输出就行了。
都是切好了的小块。
具体存放都不用放数据库,如 map/level/row/row_col.gif 以这种方式存放,调用起来只需要承受web服务器的负担,做负载均衡也相当方便。最大负担的数据已经被这样缓冲起来了。
虽然损失了矢量的无级缩放,但对于用户来说速度提高了,更有价值。
每个图片都可以根据他的比例尺、格子坐标换算出相应的精度纬度,这些比例都是固定的,因此粗略计算点间距离客户端都可以算出来。
图片缩放、定位无非就是找到一个不同比例尺的中心格子,然后显示周围的格子。运算、特效,在google map上都看得到。研究一下他的ajax的js代码就知道了。障眼法。
滑动窗口,使得我们在做移动操作时看不到延时。因为可视区域周围的格子已经被后台下载到本地了。
这样,一个效率很高的网上地图就实现了,级别上都不需要gis引擎,光apache就够了。
当然如果仅仅是浏览的话,跟家里买个挂图差不多。要利用上gis各项技术,只需在地图的基础上扩展。我想这些扩展再怎么耗
资源,也是有限的,比起实时运算各个图层再生成地图的消耗来说,少之甚少。
典型的应用
点标注查询,通过地名点ID,又可以从关系数据库获得大量的属性数据。这也是最常见和最有用的功能,定位,看属性。不少行业都有需求,当然mapbar mapabc之类的都在搞民间的标注工作。
不过电信114服务后台这些数据实在是太全了,而且和各地电话号码都可以挂钩,比民间标注强实在太多,不过电信肯定是偷偷的藏起来,让你打电话他们帮忙查,再收钱,怎么都舍不得公开的。金砖啊。
一些行业gis应用的查询系统,用这种webgis展现也是非常实用和高效的。
通过javascript橡皮条之类的在地图上选取范围,转换成坐标后传到后台返回出响应的点叠加到地图上,或者通过web列表出来。再点击后进一步查看属性数据。或者生产统计信息。总之查询功能通过GIS很容易实现,数据是有限的,查询效率自然高,甚至都可以不通过gis引擎优化,直接拼凑sql语句到 dbms中检索。
还有通过输入位置,查周围多少范围内的某类标记点,后台查询也都会很快,还是数据量小的原因。
80%人用的查询功能完成了。
简单的标注功能也很容易实现,只要有响应的接口,获得用户标注的位置,转换成坐标系即可。结合mis系统添加属性数据,一般行业用户不需要专门的gis工具都可以达到数据录入的要求,方便快捷。
2:道路拓扑,网络分析,最优路径
对道路线网做有向、有权的图运算操作,相信现有的GIS技术早就就不成问题。
利用专门的gis工具生成运算处理这些东西实在是很成熟了。国内几家GIS引擎都很完善了,再算得慢用户也感觉不出来。毕竟那几条路数也数得清楚。
已经有的应用如汽车导航,车辆换乘,最短路径。
这是今天和合作伙伴探讨gis技术时听来的,实在都是一些优化技巧,损失一些80%用不到的功能,强化20%最需要的功能。好用户体验就是这么个权衡法则。
说实话,国内的一些gis厂商确实做得不错,从基础的地图矢量化、加工处理、国产gis平台、引擎、开发组件、行业应用,一条龙服务,赚都赚不完的钱啊。
中国各个城市的数据是垄断的,是涉密的,相信google也只能做个中国的卫星图了。理论上他没有义务帮我国画地图。
|