Mapbox由于配合其矢量瓦片pbf格式文件,有突出的渲染性能,被很多公司和开发者所使用。矢量瓦片的格式有很多种,其中pbf格式是一种二进制文件,直接把数据信息压缩位二进制了。

矢量瓦片优势

主要优势有

  • 数据传输量小
    相对与栅格瓦片数据量大大缩小
  • 不受分辨率影响
    矢量瓦片无论在地图放大到各种级别都是清晰的,都不会出现栅格放大后显示像元的问题。
  • 动态样式
    矢量瓦片会根据用户的定制的样式动态绘制,也可以动态改变
  • 支持前端查询
    由于使用的是矢量瓦片,可以在前端直接进行信息查询

矢量瓦片的问题

矢量瓦片的优势虽然多,但问题也很明显,坐标和属性信息是可以被用户解析的,也就是安全性的问题。

Mapbox的pbf瓦片解析

今天就展示一下,如何解析Mapbox的pbf瓦片文件。这里我是用node.js进行开发和测试的。从Mabox地图的url中抓取了一个pbf文件。

依赖

{"name": "testpbf","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC","dependencies": {"fs": "^0.0.1-security","pbf": "^3.0.5","vector-tile": "^1.3.0"}
}

js解析代码

var Pbf = require('pbf');
var fs = require('fs');
var VectorTile = require('vector-tile').VectorTile;var data = fs.readFileSync('response.pbf');
var tile = new VectorTile(new Pbf(data));var layerNames = Object.keys(tile.layers);
console.log("图层名称", layerNames);
if (layerNames.length > 0) {//获取其中一个图层的一个要素的geoJson格式;var orig = tile.layers[layerNames[0]].feature(0).toGeoJSON(0, 0, 1);console.log("geojson", orig);//查看坐标console.log("部分坐标",orig.geometry.coordinates[0]);
}

运行代码

node index.js

输出结果

"C:\Program Files\nodejs\node.exe" index.js
图层名称 [ 'dt_xzy' ]
geojson {type: 'Feature',geometry: { type: 'MultiPolygon', coordinates: [ [Array], [Array], [Array] ] },properties: {objectid: 5050,qhdm: '411525112',qhmc: '陈集乡',sjxzqdm: '411525',bz: ' ',provincecode: '41',citycode: '4115',countycode: '411525',uuid: ' ',mj: 148351.45}
}
部分坐标 [[[ -110.6103515625, 85.34532513469131 ],[ -110.8740234375, 85.19679703289734 ],[ -109.775390625, 85.15985908749309 ],[ -109.3798828125, 85.05112877980659 ],..........................................[ -149.58984375, 84.67351256610525 ],[ -148.53515625, 84.68980559853495 ],[ -148.447265625, 84.79051706762746 ],[ -151.0400390625, 85.01689202162626 ],[ -151.0400390625, 85.18205572307536 ],[ -154.3359375, 85.34532513469131 ],[ -110.6103515625, 85.34532513469131 ]]
]Process finished with exit code 0

矢量瓦片使用注意

从上面的代码可以看出pbf文件是可以被解析出来的,所以在使用时一定要注意

  • 数据脱敏
  • 坐标数据脱密
  • 防爬虫抓取

Mapbox矢量瓦片pbf文件信息解析相关推荐

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

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

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

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

  3. 地图瓦片:矢量瓦片和栅格瓦片详解

    地图瓦片:矢量瓦片和栅格瓦片详解 为什么需要瓦片: 地图缓存技术:地图服务的性能需求越来越高:缓存技术大大提高了地图服务的性能:缓存技术降低了服务器端压力,不在需要进行动态出图:地图缓存或瓦块地图可以 ...

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

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

  5. java 生成瓦片_生成矢量瓦片 | SuperMap iDesktop Java

    SuperMap iDesktop 桌面产品支持将矢量地图生成遵循 MapBox MVT 规范的矢量瓦片(.mvt),瓦片数据包含要素的几何形状与属性信息,而要素的风格样式由 MapBox 标准样式文 ...

  6. OpenLayers实例-Advanced Mapbox Vector Tiles-高级Mapbox矢量贴图

    Advanced Mapbox Vector Tiles-高级Mapbox矢量贴图 知识要点 (主要)使用此方法加载矢量地图可以在缩放级别时重用相同的源瓦片,一定程度上节省移动设备的带宽,网络环境不好 ...

  7. SuperMap地图系列:矢量瓦片的应用

    作者:xinxin 背景   以图片为介质的栅格瓦片使得在线地图显示效果高,传输方便,但随着地图的移动化和应用的逐渐深入,栅格瓦片占用宽带和存储空间都较大,不利于地图在移动设备上的应用:另外,生成栅格 ...

  8. Maputnik样式信息解析(Mapbox-GL样式)

    具体可参考Mapbox-GL 当前Mapbox GL JS版本(v2.4.1),Style版本目前任然是8的版本 其他更改在以后的研究中逐渐总结,下面主要介绍新版的样式参考.样式文件为json结构,具 ...

  9. Web端MVT矢量瓦片加载之OpenLayers篇

    作者:LX 前言 MVT全称是Mapbox Vector Tile,是Mapbox标准的矢量切片.矢量瓦片具有创建效率高.传输和渲染速度快.数据和风格样式独立,更改配图方案无需重新创建瓦片.高显示质量 ...

最新文章

  1. arm el2与el3_armv8 memory translation
  2. html实体编码_多视角学习 | 当自动编码器“遇上”自动编码网络
  3. bootstrap table 分页_Java入门007~springboot+freemarker+bootstrap快速实现分页功能
  4. python实用么_使用Python这么多年,才发现Python还有这些实用的功能和特点
  5. MySQL系列:数据库基本操作(1)
  6. java进销存系统源码_青云源码——最新企业进销存管理系统源码分享
  7. 大多数项目能不能投资,能不能去创业,取决于自己是站在什么高度看问题
  8. 赚钱的一大障碍:知道的赚钱门路太多
  9. Timus 1741
  10. (转)iOS 屏幕适配
  11. 关于JS的面向对象总结
  12. 使用iTunes制作iPhone6s plus铃声
  13. python爬虫记录
  14. 大学生就业的三方协议基本概述
  15. Python练习task2:条件与循环
  16. Windows Server 2012 新功能:IPAM 配置
  17. [VB.NET]VB的vbFromUnicode、vbUnicode在vb.net中怎么使用
  18. 如何推导出Gamma分布
  19. linux挂载文件夹哪个最好,细说linux挂载——mount,及其他……
  20. WINSYS DAY02(02):如何管理组账号?

热门文章

  1. 【STM32】STM32之SWD
  2. Luogu 4844 LJJ爱数数
  3. Spring(https://www.zhihu.com/question/38597960)
  4. 【知识图谱】 一个有效的知识图谱是如何构建的?
  5. MySQLStudy——Mac 下 Navicat Premium 12.1破解教程
  6. 智联卓聘 卓聘聊聊(IM)开发实践
  7. 程序员面对产品提出的不合理需求,你们会怎么办?
  8. python 双重差分_双重差分的理论与实践
  9. 在Git上如何强推代码规范
  10. php wss发送,HTTPS 连接WSS问题