OSM数据为mapBox格式

时间:2017-05-16 12:54:57

标签: openstreetmap mapbox

我看到了几个将OSM数据转换为MVT(mapbox矢量切片)的地方,以便进行简单渲染。

包括:

  • OSRM,提供用于渲染的路线的基于MVT的图像
  • OpenMapTiles,可以下载MVT格式的OSM地图
  • GeoServer可以导入OSM并导出MVT

是否有一个简单的工具可以在本地将OSM数据转换为MVT?

我有自己的OSM格式数据,我希望将其转换为MVT并在本地存储,而无需渲染到地图图像。

3 个答案:

答案 0 :(得分:2)

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' s 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 - C ++ / OpenGL矢量地图库,包含适用于Android,iOS,Node.js,macOS和Qt的原生SDK
  • Mapbox GL JS - JavaScript / WebGL矢量地图库。
  • OpenLayers 3 - JavaScript vector&光栅库。
  • WhirlyGlobe/Maply - 能够在iOS设备上读取和渲染矢量切片(以及使用mapnik xml的样式)的目标C代码。
  • Leaflet.MapboxVectorTile能够从REST端点读取PBF MapboxVectorTiles,并在Leaflet Map上将它们渲染为TileLayer。如果要在标准Leaflet Web地图上使用矢量切片而不需要WebGL,请使用此选项。
  • CARTO Mobile SDK - C ++地图库专注于离线功能,适用于iOS,Android,Windows Phone和Xamarin,带有Java,Objective-C和C#的绑定。基于Nutiteq Maps SDK,但开源并使用CartoCSS。
  • Mapzen Tangram - 用于呈现2D& amp;的JavaScript库3D地图使用WebGL在Web浏览器中生效,支持MVT,GeoJSON,TopoJSON
  • Mapzen Tangram-es - 使用OpenGL ES 2自定义样式和交互来渲染2D和3D地图的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 - 将矢量切片图层绘制为网络地图的一部分。通过mapbox-gl-js集成完成渲染。
  • mapscii - 用于xterm兼容终端的盲文和ASCII渲染器的矢量图块

应用程序/命令行工具

  • Mapbox Studio - 桌面设计工作室,用于从原始地理数据创建矢量切片,并将其即时渲染到图像切片中。内部使用tilelive.js模块处理矢量切片(请参阅tilelive-bridgetilelive-vector
  • kosmtik - 使用CartoCSS和Mapnik设计地图。
  • ArcGIS Pro - 从ArcGIS Pro中创作的地图生成矢量切片或从ArcMap导入。
  • MVT Styler - 矢量图块的地图样式编辑器。
  • Maputnik - Mapbox GL样式规范的视觉样式编辑器。

CLI Utilities

  • 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插件

  • gl-draw - 在Mapbox GL JS地图上添加对绘图和编辑功能的支持

服务器

  • tessera - 支持服务和渲染矢量切片。使用与Mapbox Studio相同的核心库。
  • tilestrata - 使用tilestrata-vt,它可以生成Mapnik矢量图块;使用tilestrata-postgismvt,它可以从PostGIS数据库
  • 提供Mapbox Vector Tiles
  • SpatialServer (PGRestAPI) - 在SpatialDev创建的多用途GeoSpatial NodeJS网络服务器,不仅可以提供填充了矢量图块的MBTile,还可以从PostGIS数据库中动态剪切矢量图块。
  • Utilery服务器从PostGIS查询生成矢量切片。基于Python
  • tileserver Mapzen Vector Tile Service。
  • TileStache通过.pbf扩展请求添加了对Mapbox Vector切片的支持。
  • Kartotherian具有Tilerator后端磁贴预生成器的维基百科磁贴服务器
  • ArcGIS Online - 支持在由ArcGIS API for JavaScript支持的地图应用程序中提供矢量切片和渲染
  • Portal for ArcGIS - 支持在由ArcGIS API for JavaScript支持的地图应用程序中提供矢量切片和渲染
  • tilesplash - 一个轻快的nodejs网络服务器,用于从postgis后端提供topojson或mapbox矢量图块
  • go-vtile-example - 用Go
  • 编写的示例服务器
  • Tegola - 用纯Go编写的MVT服务器,支持从PostGIS数据提供程序提供服务切片。
  • t-rex - 用Rust编写的单个可执行文件中的MVT服务器。提供PostGIS中支持自定义图块网格的图块。

低级实用程序

文章

答案 1 :(得分:0)

MVT的具体内容是这是平铺和多分辨率(基于缩放)显示优化,更像是"渲染"地图用于视觉快速渲染和样式,它不是真正的典型地理数据格式。例如,它没有地理坐标,它有像素空间"用于矢量对象的tile中的坐标。这使得转换简单'从/到地理数据相当棘手,非常典型的转换解决方案是一个奇怪的 - 使用地图服务器或服务与您的数据,然后从中刮取瓷砖。对于拼贴,最好的工具似乎是tilelive-copy

但是,从上面的长列表中你可能想要的最接近的是tippecanoe,它将GeoJSON转换为MVT(在mbtiles文件中)。如果您的数据是.osm格式,那么您需要将其转换为geojson;但是还有其他工具,例如ogr2ogr。请注意,OSM文件包含许多数据层,并且结构非常具体,因此您需要为所有转换步骤找到运行良好的配置。

答案 2 :(得分:0)

经过长时间的搜索,这是我目前的结论:

  • gdal应该与ogr2ogr cli工具转换器一起使用。从理论上讲,它可以从osm转换为mvt(geojson步骤不是必须的)。

  • tippecanoe所做的工作相当安静,从geojson到mvt(ogr2ogr或osmium可以帮助将.osm转换为.geojson)

但是魔鬼在细节上:您需要明确表示什么数据在mvt层(水,道路,建筑物等)上显示。 我尚未找到一种方便的“多合一”工具,该工具能够将osm建筑物或建筑物零件的多边形和关系转换为mvt建筑物图层,依此类推...看起来每个团队(mapbox和co)都秘密地保存了它带有API密钥系统的API服务。