Mapbox矢量瓦片pbf文件信息解析
Mapbox由于配合其矢量瓦片pbf格式文件,有突出的渲染性能,被很多公司和开发者所使用。矢量瓦片的格式有很多种,其中pbf格式是一种二进制文件,直接把数据信息压缩位二进制了。矢量瓦片优势主要优势有数据传输量小相对与栅格瓦片数据量大大缩小不受分辨率影响矢量瓦片无论在地图放大到各种级别都是清晰的,都不会出现栅格放大后显示像元的问题。动态样式矢量瓦片会根据用户的定制的样...
·
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文件是可以被解析出来的,所以在使用时一定要注意
- 数据脱敏
- 坐标数据脱密
- 防爬虫抓取
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献8条内容
所有评论(0)