为什么来自较低缩放级别的矢量切片的点与源数据不匹配?

Why do points from vector tiles at lower zoom levels not match source data?

我正在从创建到缩放级别 11 的切片查询缩放级别 8 的原始矢量切片。然后我将这些切片中的点要素转换为 geojson。转换后的要素几何与缩放级别 11 的切片几何不匹配,或者缩放级别 11 中的切片转换为 geojson。我用两个不同的程序(tegola 和 geojson-vt)创建了这些图块。我正在使用 vt2geojson 转换图块。我试图确定在转换过程中的哪个阶段正在操作几何图形——创建图块、将图块转换回 geojson 或在 mapbox gl js 中。据我所知,坐标在创建或转换过程中没有被修剪,但我对此不是 100% 肯定的。我明白了在较低缩放级别简化线和多边形的原因,但我没有看到任何操纵点几何的理由。

.

从图像中可以看出,在原始图块的最大缩放级别之后,点开始漂移。一种解决方法是简单地过滤矢量切片以仅显示生成的 geojson 特征中的特征,因为属性仍然完好无损或将坐标存储在属性中,但这并不理想。

底线 - 如果我想查看尽可能接近原始数据的点,我应该使用什么最大图块缩放级别(即 11、12、13、14),以及几何在什么阶段被操纵?

很难说出您的确切问题是什么,但如果我理解正确的话,它本质上是:"Why do I lose spatial accuracy when I overzoom my vector tiles",答案是 "because you're overzooming them"。这是他们工作方式中固有的。

您的原始数据可能有 10 位有效数字的精度。矢量瓦片中一个点的每个偏移量通常编码为 1 到 4096 之间的整数。

你的选择基本上是:

  • 提高生成图块的空间精度(例如,tippecanoe 的 -d 标志)
  • 生成更高缩放级别的图块
  • 不要过度缩放它们