zoukankan      html  css  js  c++  java
  • 【总结整理】关于切图

    参考

    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的数据是不现实的。针对这种问题,自己开发矢量切图工具不失为一种选择。开发可以支持点数据的矢量切图工具难度不大,但是开发能够支持线和面数据的矢量切图工具则存在不小的难度。后续还需继续研究。

  • 相关阅读:
    C#成员设计建议
    基于任务的异步编程模式(TAP)的错误处理
    基于任务的异步编程模式(TAP)
    C#克隆
    C#操作excel打印
    父元素如何围住浮动子元素
    intellij idea创建第一个动态web项目
    Idea快捷键
    Python中列表的copy方法
    C++读取数量不定的数据
  • 原文地址:https://www.cnblogs.com/lianghong/p/8617569.html
Copyright © 2011-2022 走看看