我看到了几个OSM数据转换为MVT(mapbox矢量切片)的地方,用于简单渲染 .
其中包括:
OSRM,它提供了基于MVT的渲染路线图像
OpenMapTiles,可以下载MVT格式的OSM Map
GeoServer可以导入OSM并导出MVT
Is there a simple tool to convert OSM data to MVT locally?
我有自己的OSM格式数据,我想转换为MVT并在本地存储,而不需要渲染到 Map 图像 .
MVT的具体内容是这是平铺和多分辨率(基于缩放)显示优化,更像是用于视觉快速渲染和样式的"rendered" Map ,它不是真正的典型地理数据格式 . 例如,它没有地理坐标,它在矢量对象的tile中有"pixel space"坐标 . 这使'simple conversion' from / to geodata相当棘手,而且非常典型的转换解决方案很奇怪 - 使用 Map 服务器或服务与您的数据,然后从中刮取瓷砖 . 对于瓷砖刮削,最好的工具似乎是tilelive-copy .
但是,从上面的长列表中你可能想要的最接近的是tippecanoe,它将GeoJSON转换为MVT(在mbtiles文件中) . 如果您的数据是.osm格式,那么您需要将其转换为geojson;但是还有其他工具,例如ogr2ogr . 请注意,OSM文件包含许多数据层,并且结构非常具体,因此您需要为所有转换步骤找到运行良好的配置 .
GitHub上的mapbox/awesome-vector-tiles存储库有很长的Mapbox Vector Tile实现列表 . 这是今天的清单:
vector-tile-js - 使用JavaScript解析矢量切片 .
mapnik-vector-tile - 在Mapnik之上的C矢量图块读/写实现 .
mbtiles-cpp - 用于将mbtiles和矢量数据解码为函数回调的C库 .
vector-tile-py - 将Mapnik矢量切片转换为GeoJSON的Python工具
node-mapnik - 用于矢量切片的Node.js API依赖于 mapnik-vector-tile
mapnik-vector-tile
vector-tile-cs - 使用C#解析矢量切片(本机C#实现,无依赖关系) .
mapbox-vector-tile-cs - 使用C#解析矢量切片(使用protobuf-net) .
tilelive-bridge - 实现Tilelive API用于从Node.js中的传统Mapnik数据源创建矢量切片 .
tilelive-vector - 实现Tilelive API用于读取矢量切片并渲染到Node.js中的图像切片 .
mapbox-vector-tile是由Mapzen维护的矢量切片编码的Python包 . (它用于Mapzen的vector tile service) .
geojson-vt - 在浏览器中即时将GeoJSON切片为矢量切片 .
java-vector-tile - 用于矢量切片的java编码器和解码器 .
mapbox-vector-tile-java - 对v2.1 Mapbox矢量图块进行编码和解码 . 将JTS Geometry转换为MVT功能和从MVT功能转换,包括简单的用户数据支持 . 用于将世界坐标转换为MVT坐标和剪切到平铺包络的实用程序功能 .
cached-vector-tile - vector-tile-js接口的替代实现,由纯JS对象/数组支持,而不是解析按需protobuf数据 . 以更快的feature.loadGeometry()调用换取内存效率 .
tilegrinder - 一个辅助库,用于在MBTiles中的每个矢量切片上应用数据更改功能,使用本机protobuf包装器进行解除编码,重新压缩结果并将它们存储在MBTiles中或作为单个文件存储 .
SwiftVectorTiles - 根据Mapbox矢量图块规范的矢量切片的Swift编码器 .
Mapbox GL Native - 带有原生SDK的C / OpenGL矢量 Map 库,适用于Android,iOS,Node.js,macOS和Qt
Mapbox GL JS - JavaScript / WebGL矢量 Map 库 .
OpenLayers 3 - JavaScript矢量和栅格库 .
WhirlyGlobe/Maply - 能够在iOS设备上读取和渲染矢量切片(以及使用mapnik xml的样式)的目标C代码 .
Leaflet.MapboxVectorTile能够从REST endpoints 读取PBF MapboxVectorTiles,并在Leaflet Map上将它们渲染为TileLayer . 如果要在标准Leaflet Web Map 上使用矢量切片而不需要WebGL,请使用此选项 .
CARTO Mobile SDK - C Map 库专注于离线功能,适用于iOS,Android,Windows Phone和Xamarin,带有Java,Objective-C和C#的绑定 . 基于Nutiteq Maps SDK,但开源并使用CartoCSS .
Mapzen Tangram - 用于使用WebGL在Web浏览器中呈现2D和3D Map 的JavaScript库,支持MVT,GeoJSON,TopoJSON
Mapzen Tangram-es - 使用OpenGL ES 2渲染2D和3D Map 的C库,具有自定义样式和交互
mapbox-gl-leaflet - 在Leaflet中创建Mapbox GL图层
react-native-mapbox-gl - 从React应用程序渲染Mapbox GL贴图
hoverboard - 使用Leaflet 0.7.x在画布上渲染矢量切片(支持GeoJSON,TopoJSON和protobuf)
Leaflet.VectorGrid - 在Leaflet 1.0.0中显示网格化矢量数据(切片GeoJSON,TopoJSON或Mapbox矢量图块)
ArcGIS API for JavaScript - 将矢量切片图层绘制为Web Map 的一部分 . 通过 mapbox-gl-js 集成完成渲染 .
mapbox-gl-js
mapscii - 用于xterm兼容终端的矢量平铺到盲文和ASCII渲染器
Mapbox Studio - 桌面设计工作室,用于从原始地理数据创建矢量切片并将其即时渲染到图像切片中 . 内部使用 tilelive.js 模块来处理矢量切片(参见 tilelive-bridge 和 tilelive-vector )
tilelive.js
tilelive-bridge
tilelive-vector
kosmtik - 使用CartoCSS和Mapnik设计 Map .
ArcGIS Pro - 从ArcGIS Pro中创作的 Map 生成矢量切片或从ArcMap导入 .
MVT Styler - 矢量切片的 Map 样式编辑器 .
Maputnik - Mapbox GL样式规范的可视样式编辑器 .
Datamaps C应用程序,可用于创建矢量切片并将其存储在mbtiles中 . 请参阅 render-vector 命令 .
render-vector
tilemaker - 直接从.osm.pbf提取生成矢量切片而不使用中间数据库的命令行工具 .
vector-tiles-producer C中的命令行工具使用Mapnik XML以选定的缩放级别为给定区域创建矢量切片 .
tippecanoe - 从大量GeoJSON功能集构建矢量tilesets .
vt-geojson - 将矢量切片解码为GeoJSON FeatureCollections
tl - tilelive的备用命令行界面
tileshrink - 减少图层范围并简化MBTiles中所有矢量图块的结果几何图形
tiler - 用于将GeoJSON,Shapefiles或PostGIS图层转换为原始矢量图块(或MBTiles)的命令行工具
geojson2mvt - 用于为geojson文件中的给定xyz边界构建静态矢量切片树的npm包(使用vt-geojson)
tessera - 支持服务和渲染矢量切片 . 使用与Mapbox Studio相同的核心库 .
tilestrata - 使用tilestrata-vt,它可以生成Mapnik矢量图块;使用tilestrata-postgismvt,它可以从PostGIS数据库中提供Mapbox Vector Tiles
SpatialServer (PGRestAPI) - 在SpatialDev创建的多用途GeoSpatial NodeJS Web服务器,不仅可以为填充了矢量切片的MBTile提供服务,还可以从PostGIS数据库中动态切割矢量切片 .
Utilery用于从PostGIS查询生成矢量切片的服务器 . 基于Python
tileserver Mapzen矢量平铺服务 .
TileStache通过.pbf扩展请求添加了对Mapbox Vector切片的支持 .
Kartotherian具有Tilerator后端磁贴预生成器的Wikipedia磁贴服务器
ArcGIS Online - 支持在由ArcGIS API for JavaScript支持的 Map 应用程序中提供矢量切片和渲染
Portal for ArcGIS - 支持在由ArcGIS API for JavaScript支持的 Map 应用程序中提供矢量切片和渲染
tilesplash - 一个轻快的nodejs网络服务器,用于从postgis后端提供topojson或mapbox矢量切片
go-vtile-example - 用Go编写的示例服务器
Tegola - 用纯Go编写的MVT服务器,支持PostGIS数据提供程序中的服务切片 .
t-rex - 用Rust编写的单个可执行文件中的MVT服务器 . 提供PostGIS中支持自定义图块网格的图块 .
mapbox-gl-function - Mapbox GL样式函数求值程序
mapbox-gl-filter-simplify - 简化和复合Mapbox GL样式中的过滤器
vt-pbf将表示矢量切片的JavaScript对象序列化为矢量切片的二进制协议缓冲区编码
2 回答
MVT的具体内容是这是平铺和多分辨率(基于缩放)显示优化,更像是用于视觉快速渲染和样式的"rendered" Map ,它不是真正的典型地理数据格式 . 例如,它没有地理坐标,它在矢量对象的tile中有"pixel space"坐标 . 这使'simple conversion' from / to geodata相当棘手,而且非常典型的转换解决方案很奇怪 - 使用 Map 服务器或服务与您的数据,然后从中刮取瓷砖 . 对于瓷砖刮削,最好的工具似乎是tilelive-copy .
但是,从上面的长列表中你可能想要的最接近的是tippecanoe,它将GeoJSON转换为MVT(在mbtiles文件中) . 如果您的数据是.osm格式,那么您需要将其转换为geojson;但是还有其他工具,例如ogr2ogr . 请注意,OSM文件包含许多数据层,并且结构非常具体,因此您需要为所有转换步骤找到运行良好的配置 .
GitHub上的mapbox/awesome-vector-tiles存储库有很长的Mapbox Vector Tile实现列表 . 这是今天的清单:
解析器和发生器
vector-tile-js - 使用JavaScript解析矢量切片 .
mapnik-vector-tile - 在Mapnik之上的C矢量图块读/写实现 .
mbtiles-cpp - 用于将mbtiles和矢量数据解码为函数回调的C库 .
vector-tile-py - 将Mapnik矢量切片转换为GeoJSON的Python工具
node-mapnik - 用于矢量切片的Node.js API依赖于
mapnik-vector-tile
vector-tile-cs - 使用C#解析矢量切片(本机C#实现,无依赖关系) .
mapbox-vector-tile-cs - 使用C#解析矢量切片(使用protobuf-net) .
tilelive-bridge - 实现Tilelive API用于从Node.js中的传统Mapnik数据源创建矢量切片 .
tilelive-vector - 实现Tilelive API用于读取矢量切片并渲染到Node.js中的图像切片 .
mapbox-vector-tile是由Mapzen维护的矢量切片编码的Python包 . (它用于Mapzen的vector tile service) .
geojson-vt - 在浏览器中即时将GeoJSON切片为矢量切片 .
java-vector-tile - 用于矢量切片的java编码器和解码器 .
mapbox-vector-tile-java - 对v2.1 Mapbox矢量图块进行编码和解码 . 将JTS Geometry转换为MVT功能和从MVT功能转换,包括简单的用户数据支持 . 用于将世界坐标转换为MVT坐标和剪切到平铺包络的实用程序功能 .
cached-vector-tile - vector-tile-js接口的替代实现,由纯JS对象/数组支持,而不是解析按需protobuf数据 . 以更快的feature.loadGeometry()调用换取内存效率 .
tilegrinder - 一个辅助库,用于在MBTiles中的每个矢量切片上应用数据更改功能,使用本机protobuf包装器进行解除编码,重新压缩结果并将它们存储在MBTiles中或作为单个文件存储 .
SwiftVectorTiles - 根据Mapbox矢量图块规范的矢量切片的Swift编码器 .
客户
Mapbox GL Native - 带有原生SDK的C / OpenGL矢量 Map 库,适用于Android,iOS,Node.js,macOS和Qt
Mapbox GL JS - JavaScript / WebGL矢量 Map 库 .
OpenLayers 3 - JavaScript矢量和栅格库 .
WhirlyGlobe/Maply - 能够在iOS设备上读取和渲染矢量切片(以及使用mapnik xml的样式)的目标C代码 .
Leaflet.MapboxVectorTile能够从REST endpoints 读取PBF MapboxVectorTiles,并在Leaflet Map上将它们渲染为TileLayer . 如果要在标准Leaflet Web Map 上使用矢量切片而不需要WebGL,请使用此选项 .
CARTO Mobile SDK - C Map 库专注于离线功能,适用于iOS,Android,Windows Phone和Xamarin,带有Java,Objective-C和C#的绑定 . 基于Nutiteq Maps SDK,但开源并使用CartoCSS .
Mapzen Tangram - 用于使用WebGL在Web浏览器中呈现2D和3D Map 的JavaScript库,支持MVT,GeoJSON,TopoJSON
Mapzen Tangram-es - 使用OpenGL ES 2渲染2D和3D Map 的C库,具有自定义样式和交互
mapbox-gl-leaflet - 在Leaflet中创建Mapbox GL图层
react-native-mapbox-gl - 从React应用程序渲染Mapbox GL贴图
hoverboard - 使用Leaflet 0.7.x在画布上渲染矢量切片(支持GeoJSON,TopoJSON和protobuf)
Leaflet.VectorGrid - 在Leaflet 1.0.0中显示网格化矢量数据(切片GeoJSON,TopoJSON或Mapbox矢量图块)
ArcGIS API for JavaScript - 将矢量切片图层绘制为Web Map 的一部分 . 通过
mapbox-gl-js
集成完成渲染 .mapscii - 用于xterm兼容终端的矢量平铺到盲文和ASCII渲染器
应用程序/命令行工具
Mapbox Studio - 桌面设计工作室,用于从原始地理数据创建矢量切片并将其即时渲染到图像切片中 . 内部使用
tilelive.js
模块来处理矢量切片(参见tilelive-bridge
和tilelive-vector
)kosmtik - 使用CartoCSS和Mapnik设计 Map .
ArcGIS Pro - 从ArcGIS Pro中创作的 Map 生成矢量切片或从ArcMap导入 .
MVT Styler - 矢量切片的 Map 样式编辑器 .
Maputnik - Mapbox GL样式规范的可视样式编辑器 .
CLI实用程序
Datamaps C应用程序,可用于创建矢量切片并将其存储在mbtiles中 . 请参阅
render-vector
命令 .tilemaker - 直接从.osm.pbf提取生成矢量切片而不使用中间数据库的命令行工具 .
vector-tiles-producer C中的命令行工具使用Mapnik XML以选定的缩放级别为给定区域创建矢量切片 .
tippecanoe - 从大量GeoJSON功能集构建矢量tilesets .
vt-geojson - 将矢量切片解码为GeoJSON FeatureCollections
tl - tilelive的备用命令行界面
tileshrink - 减少图层范围并简化MBTiles中所有矢量图块的结果几何图形
tiler - 用于将GeoJSON,Shapefiles或PostGIS图层转换为原始矢量图块(或MBTiles)的命令行工具
geojson2mvt - 用于为geojson文件中的给定xyz边界构建静态矢量切片树的npm包(使用vt-geojson)
Mapbox GL JS插件
服务器
tessera - 支持服务和渲染矢量切片 . 使用与Mapbox Studio相同的核心库 .
tilestrata - 使用tilestrata-vt,它可以生成Mapnik矢量图块;使用tilestrata-postgismvt,它可以从PostGIS数据库中提供Mapbox Vector Tiles
SpatialServer (PGRestAPI) - 在SpatialDev创建的多用途GeoSpatial NodeJS Web服务器,不仅可以为填充了矢量切片的MBTile提供服务,还可以从PostGIS数据库中动态切割矢量切片 .
Utilery用于从PostGIS查询生成矢量切片的服务器 . 基于Python
tileserver Mapzen矢量平铺服务 .
TileStache通过.pbf扩展请求添加了对Mapbox Vector切片的支持 .
Kartotherian具有Tilerator后端磁贴预生成器的Wikipedia磁贴服务器
ArcGIS Online - 支持在由ArcGIS API for JavaScript支持的 Map 应用程序中提供矢量切片和渲染
Portal for ArcGIS - 支持在由ArcGIS API for JavaScript支持的 Map 应用程序中提供矢量切片和渲染
tilesplash - 一个轻快的nodejs网络服务器,用于从postgis后端提供topojson或mapbox矢量切片
go-vtile-example - 用Go编写的示例服务器
Tegola - 用纯Go编写的MVT服务器,支持PostGIS数据提供程序中的服务切片 .
t-rex - 用Rust编写的单个可执行文件中的MVT服务器 . 提供PostGIS中支持自定义图块网格的图块 .
低级实用程序
mapbox-gl-function - Mapbox GL样式函数求值程序
mapbox-gl-filter-simplify - 简化和复合Mapbox GL样式中的过滤器
vt-pbf将表示矢量切片的JavaScript对象序列化为矢量切片的二进制协议缓冲区编码
文章