MBTiles 爬取,读取,数据转换,发布

MBTiles  :https://github.com/mapbox/mbtiles-spec/blob/master/1.3/spec.md

1.MBTiles是什么

MBTiles是一个在SQLite 数据库存储瓦片地图数据的标准,该标准的目的是即时传输和使用数据。

作为一个容器格式,MBTiles可以存储任何瓦片数据, 因为用来存储数据 ,所以不能对其做任何修改

2.如何查看

我们可以通过SQLite打开MBTiles,或QGIS查看。

GDAL的MBTiles驱动读取;QGIS就依赖于GDAL;

GDAL : MBTiles — GDAL 文档 (osgeo.cn)

3.如何发布

通过geoserve 添加插件发布;

如果存储矢量瓦片格式使用 MBTiles with vector tiles - MBTiles with vector tiles 发布。

如果存储栅格瓦片格式使用 MBTiles - MBTiles plugin 发布。

4.MBTiles中瓦片数据格式

MBTiles 中存储的瓦片为矢量瓦片和栅格瓦片;

4.1.矢量瓦片格式

MBTiles 中储存的矢量瓦片格式遵从mapbox矢量瓦片规格。

4.1.1 mapbox矢量瓦片规格

mapbox矢量瓦片规格:

mapbox矢量瓦片格式使用 Google Protocol Buffers 作为编码格式(.pbf)。Protocol Buffers 是一种与语言无关、与平台无关的可扩展机制,用于序列化结构化数据。

4.1.2  矢量瓦片规格读取
  • @mapbox/vector-tile

@mapbox/vector-tile:mapbox/vector-tile-js: Parses vector tiles with JavaScript (github.com)

矢量瓦片有两种传输或者储存方式,一种未压缩,一种zlib库压缩,两种读取都有示例。

一般MBTiles 里储存的mvt都是遵循serialtiles-spec 规范,这种规范矢量数据是zlib库压缩方式。

mapbox/serialtiles-spec:流式瓦片传输协议 (github.com)

  • GDAL 的 MVT驱动程序读取

GDAL MVT:MVT:地图框矢量平铺 — GDAL 文档 (osgeo.cn)

一般通过MVT驱动程序:矢量瓦片格式为独立文件、未压缩文件或gzip压缩文件(典型的扩展名是.pbf、.MVT、.MVT.gz)。

  • QGIS直接查看
4.2 栅格瓦片格式

这没什么可说的。

5 .矢量瓦片中格式整体关系

关于矢量瓦片中 mvt 与 pbf 的关系:

6 MBTiles爬取到发布

知道数据格式与原理后实战:

首先拿到矢量图层链接{z}/{x}/{y}.pbf  到 QGIS添加数据源 使用工具箱下载矢量瓦片;

发布:geoserve MBTiles with vector tiles 发布 。发现无法发布提示无json字段;

看文档 : 

如果是 pbf格式, 元数据表Vector tileset metadata 必须 包含这一行:

  • json (JSON字符串): 列出矢量瓦片中出现的层,和名字, 和层中出现的特性所包含属性的类型。 

矢量瓦片集元数据Vector tileset metadata:

json行中的JSON对象必须包含vector_layers 键, 它的值是一个JSON对象数组。

json 行的 JSON 对象也可以包含 tilestats 键, 它的值是一个"geostats"格式的对象。

即必须包含vector_layers ,至于tilestats 无所谓。

那就添加 通过SQLite编辑:

{  "vector_layers": [{
            "id": "airways",
            "description": "airways",
            "minzoom": 0,
            "maxzoom": 7,
            "fields": {
                "wkt_geom": "LineString",
                "ident": "String",
                "type": "String"
            }
        },]}

通过QGIS矢量要素识别找到fields 与id;

再次添加成功:--->点击发布 

最后成功发布;

7.数据转换

  • @mapbox/vt2geojson

依赖与@mapbox/vector-tile  ,能读取自然就能转换。

  • geoserver

发布之后建立图层组预览图层那里选择格式导出即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952649.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记合集

大家好,这里是好评笔记,公主 号:Goodnote。本笔记的任务是解读机器学习实践/面试过程中可能会用到的知识点,内容通俗易懂,入门、实习和校招轻松搞定。 笔记介绍 本笔记的任务是解读机器学习实践/面试过程中可能会用到…

java_将数据存入elasticsearch进行高效搜索

使用技术简介: (1) 使用Nginx实现反向代理,使前端可以调用多个微服务 (2) 使用nacos将多个服务管理关联起来 (3) 将数据存入elasticsearch进行高效搜索 (4) 使用消息队列rabbitmq进行消息的传递 (5) 使用 openfeign 进行多个服务之间的api调用 参…

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务,如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信,接收作业并提交到执行队列,Gitlab-Runner从队列中获取作业,并允许在不同环境下进行作…

SpringBoot项目实战(41)--Beetl网页使用自定义函数获取新闻列表

在Beetl页面中可以使用自定义的函数从后台新闻列表中获取新闻数据展示到页面上。例如我们可以从后台新闻表中获取新闻按照下面的格式展示&#xff1a; <li><a href"#">东亚非遗展即将盛妆亮相 揭起盖头先睹为快</a></li><li><a hre…

LayaAir3.2来了:性能大幅提升、一键发布安装包、支持WebGPU、3D导航寻路、升级为真正的全平台引擎

前言 LayaAir3的每一个分支版本都是一次较大的提升&#xff0c;在3.1彻底完善了引擎生态结构之后&#xff0c;本次的3.2会重点完善全平台发布相关的种种能力&#xff0c;例如&#xff0c;除原有的安卓与iOS系统外&#xff0c;还支持Windows系统、Linux系统、鸿蒙Next系统&#…

【力扣热题100】—— Day18.将有序数组转换为二叉搜索树

期末考试完毕&#xff0c;假期学习开始&#xff01; —— 25.1.7 108. 将有序数组转换为二叉搜索树 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵平衡二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] …

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台&#xff0c;在即将到来的春季促销活动之前&#xff…

初学stm32 --- DAC模数转换器工作原理

目录 什么是DAC&#xff1f; DAC的特性参数 STM32各系列DAC的主要特性 DAC框图简介&#xff08;F1/F4/F7&#xff09; 参考电压/模拟部分电压 触发源 关闭触发时(TEN0)的转换时序图 DMA请求 DAC输出电压 什么是DAC&#xff1f; DAC&#xff0c;全称&#xff1a;Digital…

《HTTP协议与内外网划分:网络世界的基石知识》

http协议与内外网的划分 http协议的简介 HTTP&#xff08;超文本传输协议&#xff09;是互联网上应用最广泛的一种网络协议&#xff0c;用于从服务器传输超文本&#xff08;如HTML&#xff09;到本地浏览器的传输协议。以下是关于HTTP协议的简介&#xff1a; HTTP协议的基本…

二叉树层序遍历 Leetcode102.二叉树的层序遍历

二叉树的层序遍历相当于图论的广度优先搜索&#xff0c;用队列来实现 &#xff08;二叉树的递归遍历相当于图论的深度优先搜索&#xff09; 102.二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右…

特制一个自己的UI库,只用CSS、图标、emoji图 第二版

图&#xff1a; 代码&#xff1a; index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…

12工具篇(D3_Lombok)

目录 一、基本介绍 二、Lombok使用说明 1. 基本介绍 2. 安装插件 IDEA在线安装Lombok插件 IDEA离线安装Lombok插件 3. 引入依赖坐标 4. Lombok注解功能说明 NonNull Getter&Setter Cleanup ToString EqualsAndHashCode Constructor RequiredArgsConstructor …

STM32如何测量运行的时钟频率

前言 环境&#xff1a; 芯片&#xff1a;STM32F103C8T6 Keil&#xff1a;V5.24.2.0 一、简介STM32F103C8T6的时钟源 ①HSI 内部高速时钟,RC振荡器&#xff0c;频率为8MHz&#xff0c;精度不高。②HSE 外部高速时钟,可接石英/陶瓷谐振器&#xff0c;频率范围为4MHz~16MHz&…

【物流管理系统 - IDEAJavaSwingMySQL】基于Java实现的物流管理系统导入IDEA教程

有问题请留言或私信 步骤 下载项目源码&#xff1a;项目源码 解压项目源码到本地 打开IDEA 左上角&#xff1a;文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件&#xff0c;点击确定&#xff0c;根据图示步骤继续导入项目 查看项目目录&#xff…

时序数据库InfluxDB—介绍与性能测试

目录 一、简述 二、主要特点 三、基本概念 1、主要概念 2、保留策略 3、连续查询 4、存储引擎—TSM Tree 5、存储目录 四、基本操作 1、Java-API操作 五、项目中的应用 六、单节点的硬件配置 七、性能测试 1、测试环境 2、测试程序 3、写入测试 4、查询测试 一…

探索数据存储的奥秘:深入理解B树与B+树

key value 类型的数据红黑树&#xff08;最优二叉树&#xff0c;内存最优&#xff09;&#xff0c;时间复杂度&#xff1a;O&#xff08;logn&#xff09;,调整方便&#xff1b;一个结点分出两个叉B树一个节点可以分出很多叉数据量相等的条件下&#xff1a;红黑树的层数很高&am…

element ui前端小数计算精度丢失的问题如何解决?

文章目录 前言一、什么是精度丢失&#xff1f;产生精度丢失的原因如何避免或减少精度丢失的影响 二、实际项目开发实例举例以项目预算模块为例如何解决精度丢失 总结 前言 在《工程投标项目管理系统》项目开发中工程项目预算、成本管理、财务管理等模块的开发中不可避免的要和…

小程序textarea组件键盘弹起会遮挡住输入框

<textarea value"{{remark}}" input"handleInputRemark" ></textarea> 如下会有遮挡&#xff1a; 一行代码搞定 cursor-spacing160 修改后代码 <textarea value"{{remark}}" input"handleInputRemark" cursor-spacin…

k8s笔记29--使用kyverno提高运维效率

k8s笔记29--使用kyverno提高运维效率 介绍原理安装应用场景自动修正测试环境pod资源强制 Pod 标签限制容器镜像来源禁止特权容器其它潜在场景 注意事项说明 介绍 Kyverno是一个云原生的策略引擎&#xff0c;它最初是为k8s构建的&#xff0c;现在也可以在k8s集群之外用作统一的…