• 矢量地图方案的进一步探讨


    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

    1. 背景

           在之前多篇文章中我描述了如何编写矢量地图切片工具、如何基于Geoserver来进行矢量切片方案。这两种方案各有局限:

    1. 矢量地图预切片工具对实时数据的实时更新很难做出及时更新,需人工干预。    
    2. Geoserver切片方案需要依赖于Geoserver地理服务器。

       这里,我们可以将方案进一步升级。

    2. 整体设计

           需要解决的几点:

           a.统一矢量数据源,无需针对项目中不同系统采用不同的配图方案。由于项目中环境复杂,往往涉及老系统、新系统、PC端、移动端。对于老系统并不支持矢量切片的解析,难道还要再次对数据配图,采用arcgis切片?

           b.摆脱Geoserver的束缚,对于已经有arcgis(10.2以前)的环境的项目,难道还要再安装一个Geoserver?

           c.矢量配图得实现可视化,难道每次手写样式文件?

           d.即支持切片预处理,也得支持切片的动态更新。

           根据这几点要求,做了如下设计:

     

           具体描述为:

           a.服务端支持根据PG数据源生成矢量切片。

           b.服务端支持根据PG数据源和样式文件生成图片切片。

           c.配图平台支持分别生成矢量切片样式文件和图片切片样式文件。

           d.前端根据产品版本,分别发送对应格式的切片获取请求。

    3. 基于PG的矢量切片生成

           9.6以上postgresql+2.4postgis,提供了两个矢量切片的空间函数:ST_AsMVT,ST_AsMVTGeom(mapbox格式),即可生成。但是由于不能保证各项目的PG为此版本以上,这里采用可以普适的方案,服务端基于pbf开发包(java-vector-tile、protobuf-javanano、protobuf-java)来进行。

     

           a.根据瓦片范围查询PG库获取要素(wkt)。

           b.对要素解析成geometry格式。

           c.将要素的几何坐标转换为屏幕坐标。

           d.将此时的要素编码成pbf格式。

           测试结果:

                  

    4. 基于PG的图片切片生成

           在开源架构中,通常为:QGIS、UDig做桌面数据处理工具,Geoserver、MapServer是比较常用的地理服务器,Postgresql+PostGIS作为空间数据库。但是,随着地理数据库PG越来越强大,Geoserver的功能反而在被逐渐弱化。PG可以支持各类空间查询,空间分析,甚至路径分析上。而针对切片的生成,PG+Mapnik的方案,也能很好的解决。

           这里选用python进行代码测试:

     

     

           测试样式文件,编写数据源配置和样式配置:

     

           测试结果:

     

                        -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                               如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                               

  • 相关阅读:
    生成错误:对路径".dll"的访问被拒绝
    实现一个类似于收趣APP的功能
    使用Jquery.form.js ajax表单提交插件弹出下载提示框
    关于Mysql错误:./bin/mysqld_safe --user=mysql& [1] 32710 121003 16:40:22 mysqld_safe Logging to '/var/log/mysqld.log'. 121003 16:40:22 mysqld_s
    Linux下更新时间
    关于轻松安装LNMP和LAMP的编译环境
    LAMP环境CentOS6.4 PHP5.4随笔未整理
    论Linux运维的一些基础安全知识和简单办法
    shell脚本笔记(原创不断记录)
    MySQL创建一个用户,指定一个数据库 授权
  • 原文地址:https://www.cnblogs.com/naaoveGIS/p/10255487.html
Copyright © 2020-2023  润新知