基于PG与PostGIS搭建实时矢量瓦片服务

  • 矢量瓦片(MVT)
    • MVT标准
    • 矢量瓦片优势
  • 实时矢量瓦片
    • 为什么要有实时的矢量瓦片
  • PostGIS中矢量切片相关函数
  • 实战
    • 只有点层的SQL语句
    • 点、线、面层在一起的SQL
  • 写在最后
  • 关于作者
  • 相关链接

在PG相关分享上已经分享过两次关于PG与PostGIS做实时矢量切片这块的内容了。这次写几篇博客来分享这块的知识。

矢量瓦片(MVT)

本文中提到的矢量瓦片为Mapbox Vector Tile格式,简称MVT。

MVT标准

MVT标准参考Mapbox官方文档。传送门链接

矢量瓦片优势

  1. 可以支持高分辨率屏幕的显示
  2. 地图渲染在前端,可以支持一套数据随意更改配图方案,解决传统栅格瓦片动态样式上的问题
  3. 要素查询可以在前端进行
  4. 保持了矢量数据的优势,同时采用切片方式又提高了传输上的效率

实时矢量瓦片

顾明思议,矢量瓦片不在使用工具线下进行预先切片,采用即时浏览即时传输矢量瓦片。

为什么要有实时的矢量瓦片

采用实时切的矢量瓦片可以做到数据编辑功能。如果采用预先切片方式,那么在数据编辑后,浏览的数据还是旧的数据,做到实时的矢量瓦片后,编辑数据之后浏览到的矢量瓦片就是最新数据。这样就可以解决数据编辑后瓦片不是最新的问题。

PostGIS中矢量切片相关函数

本文介绍使用PG+PostGIS来做到实时的矢量瓦片,在实战之前先介绍几个用到的矢量瓦片相关的函数。

主要函数:

  • ST_AsMvtGeom 将Geom转化为MVT的geom
  • ST_AsMVT 将geom转换为MVT数据
  • ST_TileEnvelope(3.0以上支持) 根据行列号获取Envelope

辅助函数:

  • ST_Transform 坐标转换函数,用它可以做到支持任何坐标系的矢量瓦片
  • ST_Simplify 简化,用它来做线或者面的简化
  • ST_SimplifyPreserveTopology 与简化类似

实战

思路:

  • 前端地图库浏览时,将请求URL传到后台
  • 后端实现URL的服务,根据x、y、z获取对应范围数据,使用sql查询到数据返回给前端

只有点层的SQL语句


点、线、面层在一起的SQL


写在最后

  • 本文先介绍如何使用PG+PostGIS生成矢量瓦片。后续会写几篇一些小的优化技巧,用来支持大数据量下的浏览,欢迎关注。

  • 本人写了后端服务以及前端浏览(mapboxgljs)的源代码,后端服务使用Go与Node.js分别实现了一遍,以下附上源代码地址,github链接觉得有用动动手给个star。

  • 在分享会上的PPT分享给大家,传送门

关于作者

GISer
小刘先森
QQ: 1016817543
邮箱:1016817543@qq.com
github:https://github.com/MrSmallLiu (欢迎star)

相关链接

以下为本人参与开发的一些库,欢迎各位Star、Issues、PR

  • 更方便快捷的基于PostgreSQL和PostGIS的坐标转换函数,支持点、线、面的WGS84和CGCS2000与GCJ02和BD09坐标系与之间互转
  • 统一社会信用代码相关的PostgreSQL函数,包括验证、随机生成等
  • 以上工具的交流群:QQ: 947051720

基于PG与PostGIS搭建实时矢量瓦片服务相关推荐

  1. ArcGIS API for JavaScript 4.x加载Mapbox在线矢量瓦片服务(weixin公众号【图说GIS】)

    前言 大家都知道,Mapbox在矢量瓦片这个领域做的很好.那么如何使用ArcGIS API 4.x加载,经过研究,将解决方案总结如下. 分析问题 查询ArcGIS JS API // Typical ...

  2. 七牛云 RTN:基于 WebRTC 零基础搭建实时音视频平台

    近年来,在线教育.狼人杀.在线抓娃娃.线上 KTV 等多人视频互动模式不断涌现,实时音视频通信风头正劲,实时音视频技术 WebRTC 也因此受到了广泛关注.相关数据显示,2017-2021 年期间,全 ...

  3. 单台安装nodejs公共(离线包、矢量瓦片服务)

    #一.需求 需要在172.16.100.138服务器上离线安装node,一台即可 用户名,密码都是root 集群测试: 放置需求 IP说明 1台单独放 -> nginx [124]后期nginx ...

  4. 基于矢量瓦片技术的Web电子海图优化方法

    范梦琪, 宋伟东, 郑人维, 何欢. 2021. 基于矢量瓦片技术的Web电子海图优化方法[J]. 海洋科学, 45(2): 68-75. FAN Meng-qi, SONG Wei-dong, ZH ...

  5. delphi bmp绘制矢量文件效率慢_聊一聊矢量瓦片的常识

    一.矢量瓦片的基本原理和相关格式 现阶段,电子地图瓦片主要使用两种方式,一种是传统的栅格瓦片,另外一种是新出的矢量瓦片(Vector Tiles),前者是采用四叉树金字塔模型的分级方式,将地图切割成无 ...

  6. 【GeoServer + MapBox-GL 搭建离线矢量切片地图服务】多图详细流程 + 踩过的坑总结

    文章目录 前言 Geoserver 安装 前期工作 JDK的安装 安装 GeoServer GeoServer 的使用 进入 GeoServer 界面 使用 GeoServer 发布矢量切片离线地图 ...

  7. 矢量切片_数据粒度均衡的二维矢量瓦片构建方法

    作 者 信 息 应 申1,2,王子豪1,杜志强3,丁火平4, 李翔翔4 (1. 武汉大学 资源与环境科学学院,湖北 武汉 430079:2. 自然资源部城市国土资源监测与仿真重点实验室,广东 深圳 5 ...

  8. Mapbox加载天地图CGCS2000矢量瓦片地图服务

    1.背景 最近在做天地图的项目,要基于MapBox添加CGCS2000矢量切片数据,但是 Mapbox 只支持web 墨卡托(3857)坐标系的数据.Github有专业用户修改了mapbox-gl的相 ...

  9. geoserver矢量瓦片发服务前端展示偏移问题解决

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 在之前的<项目角度谈矢量切片运用以及Geoserver处理自定义 ...

  10. python爬取pbf格式的矢量瓦片并转换为shp使用

    一.原理 1.瓦片地图原理:瓦片地图原理- 简书 (jianshu.com) 二.过程 爬取数据 1.找到矢量瓦片服务地址,以及瓦片的请求规则,构造请求url 2.计算瓦片范围,通过查看服务参数信息, ...

最新文章

  1. lpi linux认证权威指南 pdf,LPI Linux认证指南读书笔记
  2. 如何快速创建程序组_如何快速开发小程序
  3. python的return语句求两数之和_程序题(python解)
  4. 用python画皮卡丘-教你用Python画一只属于自己的皮卡丘
  5. 深入浅出SharePoint Designer 2010
  6. 国内主要OTT平台背后的那些CDN服务商
  7. PHP利用SMTP发送邮件,测试ok
  8. Win2000 Server***监测
  9. 【UVA 1589 --- Xiangqi】
  10. 下载open jdk 和阿里Alibaba Dragonwell (开源open JDK)
  11. mysql frm ibd 创建表_MySQL数据库实现从.frm文件和.ibd文件恢复数据表方法
  12. Zen程序员的10条规则
  13. Linux使用shell定时任务实现ffmpeg视频转码和截图
  14. 一个完整的网站建设需要哪些流程?
  15. 使用app inventor快速开发安卓app(第一课,点击计数游戏)
  16. 10. 大数据:人工智能的基石
  17. 搜索引擎最新算法大全|更新到2020.2.28日(百度算法大全、360算法大全)
  18. 一个通信开发方面的论坛
  19. 恶搞:python病毒
  20. Linux虚拟机ens33无法连接问题

热门文章

  1. [4G+5G专题-137]: 终端 - 射频前端(滤波器、功率放大器)详解
  2. PHP商城源码-单个商品详情页、单品商品购买源码
  3. tif格式文件用什么打开(如何打开怎么打开) tif是什么格式文件 ...
  4. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at:
  5. [后缀数组][trie合并][启发式合并][并查集] LOJ #6198. 谢特
  6. 软件测试cpu性能测试案例,性能测试之用例得分评价和 CPU 内存数据监控——谈谈个人看法和实践总结...
  7. 定义一个三角形的类来进行一些操作
  8. Python实现批量自动发工资条
  9. 电脑网络wifi图标消失,图标变成灰色的解决办法之一
  10. 计算机上没有端口DOT4,dot4_001端口