问题标签 [vector-tiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1192 浏览

openlayers-6 - Openlayers 6 离线本地矢量 pbf 文件“未实现类型:6”错误

我正在尝试将 OpenStreetMap 数据(osm.pbf 文件)转换为“z/x/y.pbf”文件夹/文件结构,并使用 Openlayers 6 和 Ionic 离线显示地图。

到目前为止我所做的是:

  1. 下载的 osm.pbf 文件(https://download.geofabrik.de/europe/netherlands/flevoland.html
  2. 使用 Maperitive 打开 osm.pbf 并用于generate-mbtiles [minzoom=0 maxzoom=16]生成 mbtiles
  3. 使用 mbutil ( https://github.com/mapbox/mbutil ) 和mb-util --image_format=pbf input_folder output_folder命令。在此之后,我最终在正确的文件夹结构中使用 pbfs -到目前为止非常好
  4. 使用 openlayers 显示 pbfs(请注意,我使用的是 Ionic,所以这里有一些 Angular 代码)

在此之后,一旦我尝试在浏览器中查看地图,我就会得到“错误:未实现的类型:6”。 在此处输入图像描述

有趣的是,如果我使用https://openmaptiles.com/downloads并从那里下载 mbtiles 并执行第 3-4 步(在第 3 步中,我只是做额外的步骤并解压缩 pbfs,因为 openmaptiles gzip 是文件)一切都会正确显示,但这里的问题是 openmaptiles 提供 14 个缩放级别,我需要 16 个缩放级别。

知道如何克服这个问题吗?任何帮助将不胜感激!

0 投票
2 回答
469 浏览

openlayers - OpenLayers 6.22 上的矢量平铺 (tegola) / WMS 叠加问题

我正在尝试了解 openlayers (6.3.1) 上的一些矢量切片逻辑和实现。我有 2 层根本不重叠,导致下面的屏幕截图。我研究了多个示例,但它们只会增加我的技术疑虑,而系统则令人困惑:

  1. 矢量切片服务器

Tegola 服务器 ( ) ,使用默认选项(以像素为单位gospatial/tegola:v0.10.4的瓦片?大小源数据和 SQL )256srid=4326SQL:FROM XXX.XXX WHERE geom && !BBOX!

服务器层描述在这里:http://tiles.isric.org/capabilities/wosis.json

  1. 仓库管理服务

仓库管理服务:http://maps.isric.org/mapserv?map=/map/soc.map

  1. 运行示例

jsfiddle 中的完整代码示例:https ://jsfiddle.net/jorgejesus/vt6qndrw/1/

  1. 代码部分:

所以对于 tegola 服务器,我有这样的东西:

对于 WMS:

最后是 OL 6 视图:

我有下面的图像作为最终的代码结果,西欧享受墨西哥高尔夫的温暖水域会很愉快,但这不是我的目标。

请寻求提示并了解问题所在,我发现矢量切片文档非常分散,我可能对网格有一些误解。

在此处输入图像描述

0 投票
2 回答
1294 浏览

reactjs - 使用 Mapbox 使用 react-mapbox-gl 渲染矢量瓦片

vector.tiles我有一个 geoJSON 文件,我使用这个 npm 包转换成它。我用const tileIndex = geojsonvt(geoJSON). geoJSON 文件具有以下格式,并且转换后没有任何错误。

转换后得到的结果(geoJSON 矢量图块)如下 -

将具有 5000 层的巨大 geoJSON 文件转换为矢量图块后,我将此数据发送到客户端,在客户端使用React.jsMapbox*渲染地图。我使用以下来渲染地图,但我无法弄清楚我做错了什么。我得到的错误说error: layers.jsx-layer-0: layer "jsx-layer-0" must specify a "source-layer"

我同样浏览了 Mapbox 的文档,但我找不到我做错了什么。任何帮助都会有很大帮助。非常感谢。

0 投票
0 回答
197 浏览

leaflet - 客户端缓存 Protobuf 矢量切片 - LeafletJS

我正在运行一个小型烧瓶应用程序来为 LeafletJS 地图提供瓷砖。瓷砖用作 protobuf 并加载以下内容。

这有效,并且正确渲染了瓷砖。

来自第三方的其他图层包括 WMS 切片和 L.tileLayer 切片,它们会使用 LeafletJS 自动缓存,但我上面的切片没有。

关于如何进行客户端缓存的任何建议L.vectorGrid.protobuf

0 投票
1 回答
173 浏览

mapbox - 使用vector-tile JS库读取Vector Tile后找不到源层ID

我拿了一个矢量瓦片来读取图层及其相应的特征。

我发现

我的图层是“Landuse”,我找到了“Landuse”图层中的所有功能。我知道某些功能属于 Cemetry、Education 等。

问题是,我无法找到样式表中表示的每个功能的 ID。

没有“id”,我不能在“landuse”层中分离和显示我的特征

这是样式表中的一个示例

我的问题是如何获得“id”以及功能?

如果我在阅读 MVT 磁贴时遗漏了一些东西,请帮助我。

0 投票
0 回答
253 浏览

node.js - 使用 Express.JS 为矢量图块发送多个响应

我正在使用 PostgreSQL、Node.JS 和 OpenLayers 创建矢量图块。目前,我能够使用存储在 PostgreSQL 中的数据创建多层矢量图块,但我认为我遵循的过程是重复的,并且不确定这是正确的方法做。目前,当我运行服务器时,它会在地图上一一加载所有图层。有什么办法可以同时加载所有图层吗?

代码:

HTML 代码

0 投票
1 回答
325 浏览

sprite - Mapbox GL JS:如何为多个数据源使用多个精灵?

有没有办法将多个精灵 url 与 mapbox gl js 结合使用 maputnik?现在我们只使用我们自己的数据集,但将来会添加更多的外部资源。这里的问题是,我们不能将所有可能的精灵添加到我们自己的文件中。不存在的精灵只是循环。应该允许用户通过 url 将额外的 sprite 文件加载到项目中,以便他们可以看到数据的全部潜力。

提前致谢。

0 投票
1 回答
1482 浏览

google-maps - 如何使用 TileServer-GL 或 OpenMapTiles 服务器将多个 .pbf 文件而不是 .mbtiles 作为矢量切片提供到使用 Deck.GL MVTLayer 的 Google 地图中?

概括

我有 .geojson 文件并希望将它们(使用tippecanoe / geobuf / other)转换为 .mbtiles 或 .pbf 文件,以将它们作为来自服务器(TileServer-GL / OpenMapTiles / 其他矢量瓷砖服务器)的矢量瓷砖提供给谷歌地图Deck.GLMVTLayer

预期成绩:

  1. 能够从 TileServer-GL .pbf 文件而不是 .mbtiles 文件提供服务。
  2. 能够从 TileServer-GL 提供来自文件夹的多个 .mbtiles(或 .pbf)文件,而无需使用特定的 .mbtiles 文件显式启动它。

实际结果:

  1. 如下所示,我正在使用带有 Deck.GL MVTLayer与矢量平铺集成的谷歌地图,以提供来自 TileServer-GL 的特定 .mbtiles 文件,作为形状或点的集合。
  2. 什么都没管。

我的尝试

我从 Docker 运行 TileServer-GL,从包含数据文件的文件夹:

在 Docker 中,我通过 tippecanoe 将 .geojson 文件转换为 .mbtiles 文件。但是,对于更大的文件,转换似乎需要一些时间。我在 aprox 中获得了一个 890 MB 的 .mbtiles 文件。45 MB .geojson 文件 60 分钟,包含 57k 个功能。

我设法通过 geobuf (json2geobuf) 更快地将 .geojson 文件直接转换为 .pbf 文件。我在 aprox 中获得了一个 32 MB 的 .pbf 文件。45 MB .geojson 文件 37 秒,包含 57k 个特征。

但是,我似乎无法直接从 TileServer-GL 或 OpenMapTiles-Server 提供 .pbf 文件。


我试过了

但是 TileServer-GL 没有启动,我得到了

我还尝试在本地创建 config.json 文件后重新运行

配置文件

但是 TileServer-GL 没有启动,我得到了

在 OpenMapTiles 服务器上,我什至找不到如何指定输入文件(参考):


我的问题

  1. 如何使用 TileServer-GL 或 OpenMapTiles 服务器直接提供 .pbf 文件而不是 .mbtiles 文件?
  2. 如何使用 TileServer-GL 从文件夹中提供所有文件 (.mbtiles),而无需使用特定的 .mbtiles 文件显式启动它docker ... maptiler/tileserver-gl --mbtiles some-file.mbtiles

0 投票
1 回答
321 浏览

mapbox - 如何实现动态矢量瓦片服务器

在我的应用程序中,后端(使用 Spring Boot 用 Ja​​va 编写)提供 REST API,它公开了一个返回数千个坐标的服务(基于从客户端获取的过滤器)。我的前端正在使用这个 API,然后在 Mapbox 地图中显示结果。

对于 100K 以上的点,性能还不够好,我们想使用矢量图块。

由于数据是动态的,我们希望我们的后端充当矢量切片服务器,这可能吗?

为了服务器矢量切片请求需要什么?有图书馆可以提供帮助吗?

0 投票
1 回答
132 浏览

mapbox - 从矢量切片源对几何图形进行操作

在 MapBox 地图中加载矢量切片源时,我想在显示某些几何图形之前对其进行操作。但是,我不确定这是否可能,如果可以,更不用说如何完成了。

例如,我想创建一个获取 OpenStreetMap 瓦片数据的 MapBox 源。但在此数据显示为图层之前,我需要过滤掉所有没有标签"landuse='industrial'" 的土地利用特征。之后,剩余的几何图形应该增长(可能通过 TurfJS?)用户指定的距离。

我希望在纯客户端应用程序中解决这个问题,因为我已经尝试过使用附带的后端服务器并发现它不合适。因此,如果有人能指出我正确的方向,将不胜感激!