MapBox MB 平铺与矢量平铺

Posted

技术标签:

【中文标题】MapBox MB 平铺与矢量平铺【英文标题】:MapBox MB Tile vs Vector Tile 【发布时间】:2016-01-27 23:50:33 【问题描述】:

我对 MapBox 中的 Tiles 有点困惑。据我了解,瓷砖是一小块地图,就像拼图游戏一样。

MBTiles 是图像,但它们连接到数据库以读取数据并让交互成为可能。所以如果我移动鼠标,我可以在光标下显示图层的详细信息。

Vector Tiles 将所有数据存储在矢量中,它们仅用于快速渲染图像。无法与此类数据进行交互。

我错了吗?

现在,我看到有用于 MBTiles 的工具 TileMill 和用于 Vector Tiles 的 MapBox Studio Classic。我猜它们是出于不同的目的;第一个用于交互式地图,后者用于快速渲染。 那么....为什么 TileMill not supported anymore 支持 MBStudio? 是否也可以使用 MBStudio 制作交互式地图?

谢谢

【问题讨论】:

【参考方案1】:

如果元数据表包含记录格式=pbf,则 mbtiles 是矢量图块而不是栅格。 mbtiles SQLite 数据库可以是在 Tiles 表和 tile_data blob 字段中具有矢量切片的容器 PBF -Protocol Buffers - protobuf(https://github.com/google/protobuf - 用于序列化结构化数据的语言中立平台中立机制)由 Google 开发。 MapBox Studio 等工具从 GIS 矢量数据和数据库构建矢量切片

【讨论】:

【参考方案2】:

这是一个很好的问题!

mbtile 是一种文件类型,可以包含光栅或矢量切片。把它想象成一个 Adob​​e Illustrator .ai 文件——它可以包含矢量或光栅数据。栅格切片和矢量切片都可以是mbtile 格式。

使用 TileMill,您的矢量数据(shapefile、CSV 等)与您的 CartoCSS 样式相结合,并传递给 Mapnik 以生成一堆平铺图像。然后,您可以存储您的切片并通过切片服务器将它们提供给 Web 地图。使用 Mapbox Studio Classic,您可以将数据转换为矢量切片并创建 CartoCSS 样式来设置数据样式,但在通过浏览器请求地图之前不会创建图像切片。最终,地图上的输出是相同的——栅格瓦片网格。

您在 TileMill 中使用光栅图块创建的交互性是通过 UTFGrid 进行的。这是一个不可见的栅格图层,位于图像图块下方,并为某些位置添加交互性。交互性实际上根本没有连接到任何单个功能 - 它只是与您的功能位于同一位置。这在 Mapbox Studio Classic 中也是可能的,因为地图中的输出也将是栅格图块网格。您可以在 style quickstart guide 中阅读有关如何在 Mapbox Studio Classic 中执行此操作的更多信息。

因此,为了回答您的问题,迁移到 Mapbox Studio Classic 是为了利用矢量图块。它们比光栅图像图块小很多,并且可以动态设置样式,因此,例如,您不必存储两组单独的图像来适应视网膜屏幕。这也意味着您可以动态地将多种样式应用于相同的矢量数据,这意味着您不必为每种样式或每个小的更改重新生成一整套图像。

【讨论】:

是否可以在一个样式项目中为多个图层添加这样的交互性?或者我应该创建多个样式,每个样式都有其交互式 UTFGrid,然后将它们作为单独的图层添加到地图中? FWIW,mbtiles 规范(截至撰写时 - v1.2)仅支持栅格数据。但是有一个普遍的习惯是忽略规范。并在那里填充矢量数据。数据通常采用压缩 Mapbox Vector Tiles 的形式。

以上是关于MapBox MB 平铺与矢量平铺的主要内容,如果未能解决你的问题,请参考以下文章

【GIS】矢量瓦片,GeoServer+Mapbox

在 mapbox-gl 中加载 ESRI 矢量图块

qgis中加载矢量切片

Mapbox系列之矢量切片工具Tippecanoe

Android Compose - 如何平铺/重复位图/矢量?

GeoServer矢量切片地址获取