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