【总结整理】关于切图
参考
http://www.cnblogs.com/naaoveGIS/p/4982549.html
一般WebGIS项目中,前端展示数据的流程基本是先做数据入库、服务发布、然后前端调用展示
a.动态出图可以使用WMS中的GetMap请求。
b.矢量查询可以使用WFS中的GetFeature请求。
c.要素编辑可以使用WFS中的Transaction请求。
目前支持矢量瓦片展示的前端有leaflet,openlayers,arcgis js4.0。
使用成熟的开源GIS解决方案:geoserver(服务器)+tomcat(中间件)+postgis(数据库)+uDig(desktop),实现地图的编辑、存储、发布、服务。
我们不仅仅局限于现有开源软件的使用,在此基础上做了大量优化和改进:
(1)基于geoserver进行定制化二次开发,比如轨迹优化查询等。
(2)自主开发出一套完善的数据批量自动入库、发布工具,免去各个软件间的频繁切换使用,减少没有GIS知识的人员使用难度。
矢量数据按需请求
根据需要,每次向服务器(比如根据地理范围、属性信息)进行请求,将请求返回的数据绘制在前端。
优点是,按需请求,数据返回量有限,单个请求效率较高。
缺点是,频繁和服务器交互,在给服务器造成巨大压力的同时,多个请求,甚至某些重复请求,都会增大前端交互耗时,降低用户体验。
可以看见,在页面初始化时就将所有矢量信息读取到前端,然后根据需求进行分级别聚类展示。
优点是:减少与服务端的交互,降低服务端的压力,提高用户体验。
缺点是:第一次请求返回的数据量过大,网络耗时较多,服务器在迎接第一次请求时也有相当压力,并且对客户端电脑配置有一定的依赖。
3.换一种解决思路——矢量切图
3.1 何为矢量切图
何为矢量切图呢?说直白点,就是将矢量数据以建立金字塔的方式,切割成一个一个描述性文件,比如以GeoJson格式组织或者以自定义格式组织。
目前研究中发现的缺点
a.矢量切图工具只能切WGS84坐标系下的矢量图层。
b.leaflet只能加载显示可以转换为WGS84坐标系的矢量瓦片数据。
前端缓存优化
将读取过的矢量瓦片以一定的缓存机制缓存至内存中,使用缓存调度算法进行调度。
6.使用场景
a.根据范围查询展示矢量数据时,可以完全使用矢量切图。
b.根据范围和属性展示矢量数据时,可以先根据范围返回数据,在前端根据属性数据进行过滤,最后展示。
7.有待解决的地方
开源矢量切图工具目前只能切WGS84的矢量数据,将任何格式数据转换成WGS84的数据是不现实的。针对这种问题,自己开发矢量切图工具不失为一种选择。开发可以支持点数据的矢量切图工具难度不大,但是开发能够支持线和面数据的矢量切图工具则存在不小的难度。后续还需继续研究。