在 OpenMapTiles 中包含所有 OSM 标签

问题描述 投票:0回答:1

我正在考虑为 OSM 数据的一个非常小的子集生成一些向量 mbtile,即在有限区域内带有

railway
标签的任何内容。
railways:*
的命名空间相当大,这意味着在
mapping.yaml
中包含标签很麻烦。这意味着我可以选择并混合要渲染的功能,而无需提供多组矢量切片。

那么两个问题,是否可以:

  • 使用 make import-osm
     导入 OSM 数据时,包含 
    all
  • 标签,而不必单独指定它们
  • 通过 make generate-tiles-pg 生成图块时是否可以包含
    all
    标签。

我看过一些关于此的对话,但它们又回到了 2021 年:

有人知道这是否可能吗?如果可以的话该怎么做。

postgis openstreetmap maplibre-gl openmaptiles
1个回答
0
投票

这将会很困难(也许并非不可能,但对于 OpenMapTiles 来说尤其困难)。

背景

OpenMapTiles 实际上是两件事:一个模式和一组用于生成矢量切片的构建工具。

OSM 数据基本上是非结构化的(无模式)。这使得它无限灵活且易于编辑,但在使用它时会带来一些挑战(例如:用于地图)。

模式对无休无止的标签的非结构化海洋强加了秩序。这不仅仅是将一组便利设施集中到一个“干净”层;即使确定几何形状也并不简单。该模式定义了一些规则,例如,某些方式标签将其转换为一个区域并将其放入特定的层中。

问题

从 OSM 到 MVT(例如:在 mbtiles 存档中)需要至少有某种从 OSM 到矢量切片图层和特征的转换规则。您的第一个问题将是决定要使用哪些层。看起来有 40 个左右的铁路相关标签,但这可能会随着时间的推移而改变。您希望所有这些最终都在一层还是多层中?

这从根本上与 OpenMapTiles 的 schema 不兼容,因为,好吧,您可以在网站上看到架构,但事实并非如此;)构建工具可以调整吗?也许......但这可能并不容易。

另一个问题是矢量图块是为可视化而设计的。您需要一个模式才能使用当前工具(例如:MapLibre Styles)有效地进行可视化。当您基于某个键设置样式时,您需要有特定的谓词。拥有任意的键名变得具有挑战性。

我想一种选择可能是以编程方式生成样式骨架,但随后您将需要填充数十个属性的样式。您可能可以为铁路做到这一点,但这并不容易。对所有 OSM 标签执行此操作是不可能的。

重新定义问题

你的最终目标是什么?

如果要将铁路网络的某些内容可视化,那么矢量图块(可能)是一个很好的解决方案。但我不确定 OMT 是实现这一目标的最佳构建工具。我会看看tilemaker。我链接了一个示例配置,因为与 OMT 的 YAML 方法不同,tilemaker 极其灵活;您可以使用用任意 Lua 代码编写的正则表达式和规则动态定义铁路层来进行映射。这听起来比 OMT 更符合您的需求。

如果您尝试对数据进行一些分析,我认为使用 osm2pgsql 导入到 postgres 可能是更好的方法。

在这两种情况下,您仍然需要自己决定如何将 OSM 方式、节点和关系映射到对象。 OSM“模式”没有关于几何类型的信息,因此由您(和映射器的约定)来施加顺序。

抱歉,这不是一个简单的答案,但我希望它有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.