问题标签 [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.
openlayers-6 - Openlayers 6 离线本地矢量 pbf 文件“未实现类型:6”错误
我正在尝试将 OpenStreetMap 数据(osm.pbf 文件)转换为“z/x/y.pbf”文件夹/文件结构,并使用 Openlayers 6 和 Ionic 离线显示地图。
到目前为止我所做的是:
- 下载的 osm.pbf 文件(https://download.geofabrik.de/europe/netherlands/flevoland.html)
- 使用 Maperitive 打开 osm.pbf 并用于
generate-mbtiles [minzoom=0 maxzoom=16]
生成 mbtiles - 使用 mbutil ( https://github.com/mapbox/mbutil ) 和
mb-util --image_format=pbf input_folder output_folder
命令。在此之后,我最终在正确的文件夹结构中使用 pbfs -到目前为止非常好。 - 使用 openlayers 显示 pbfs(请注意,我使用的是 Ionic,所以这里有一些 Angular 代码)
在此之后,一旦我尝试在浏览器中查看地图,我就会得到“错误:未实现的类型:6”。
有趣的是,如果我使用https://openmaptiles.com/downloads并从那里下载 mbtiles 并执行第 3-4 步(在第 3 步中,我只是做额外的步骤并解压缩 pbfs,因为 openmaptiles gzip 是文件)一切都会正确显示,但这里的问题是 openmaptiles 提供 14 个缩放级别,我需要 16 个缩放级别。
知道如何克服这个问题吗?任何帮助将不胜感激!
openlayers - OpenLayers 6.22 上的矢量平铺 (tegola) / WMS 叠加问题
我正在尝试了解 openlayers (6.3.1) 上的一些矢量切片逻辑和实现。我有 2 层根本不重叠,导致下面的屏幕截图。我研究了多个示例,但它们只会增加我的技术疑虑,而系统则令人困惑:
- 矢量切片服务器
Tegola 服务器 ( ) ,使用默认选项(以像素为单位gospatial/tegola:v0.10.4
的瓦片?大小源数据和 SQL )256
srid=4326
SQL:FROM XXX.XXX WHERE geom && !BBOX!
服务器层描述在这里:http://tiles.isric.org/capabilities/wosis.json
- 仓库管理服务
仓库管理服务:http://maps.isric.org/mapserv?map=/map/soc.map
- 运行示例
jsfiddle 中的完整代码示例:https ://jsfiddle.net/jorgejesus/vt6qndrw/1/
- 代码部分:
所以对于 tegola 服务器,我有这样的东西:
对于 WMS:
最后是 OL 6 视图:
我有下面的图像作为最终的代码结果,西欧享受墨西哥高尔夫的温暖水域会很愉快,但这不是我的目标。
请寻求提示并了解问题所在,我发现矢量切片文档非常分散,我可能对网格有一些误解。
reactjs - 使用 Mapbox 使用 react-mapbox-gl 渲染矢量瓦片
vector.tiles
我有一个 geoJSON 文件,我使用这个 npm 包转换成它。我用const tileIndex = geojsonvt(geoJSON)
. geoJSON 文件具有以下格式,并且转换后没有任何错误。
转换后得到的结果(geoJSON 矢量图块)如下 -
将具有 5000 层的巨大 geoJSON 文件转换为矢量图块后,我将此数据发送到客户端,在客户端使用React.js和Mapbox*渲染地图。我使用以下来渲染地图,但我无法弄清楚我做错了什么。我得到的错误说error: layers.jsx-layer-0: layer "jsx-layer-0" must specify a "source-layer"
我同样浏览了 Mapbox 的文档,但我找不到我做错了什么。任何帮助都会有很大帮助。非常感谢。
leaflet - 客户端缓存 Protobuf 矢量切片 - LeafletJS
我正在运行一个小型烧瓶应用程序来为 LeafletJS 地图提供瓷砖。瓷砖用作 protobuf 并加载以下内容。
这有效,并且正确渲染了瓷砖。
来自第三方的其他图层包括 WMS 切片和 L.tileLayer 切片,它们会使用 LeafletJS 自动缓存,但我上面的切片没有。
关于如何进行客户端缓存的任何建议L.vectorGrid.protobuf
?
mapbox - 使用vector-tile JS库读取Vector Tile后找不到源层ID
我拿了一个矢量瓦片来读取图层及其相应的特征。
我发现
我的图层是“Landuse”,我找到了“Landuse”图层中的所有功能。我知道某些功能属于 Cemetry、Education 等。
问题是,我无法找到样式表中表示的每个功能的 ID。
没有“id”,我不能在“landuse”层中分离和显示我的特征
这是样式表中的一个示例
我的问题是如何获得“id”以及功能?
如果我在阅读 MVT 磁贴时遗漏了一些东西,请帮助我。
node.js - 使用 Express.JS 为矢量图块发送多个响应
我正在使用 PostgreSQL、Node.JS 和 OpenLayers 创建矢量图块。目前,我能够使用存储在 PostgreSQL 中的数据创建多层矢量图块,但我认为我遵循的过程是重复的,并且不确定这是正确的方法做。目前,当我运行服务器时,它会在地图上一一加载所有图层。有什么办法可以同时加载所有图层吗?
代码:
HTML 代码
sprite - Mapbox GL JS:如何为多个数据源使用多个精灵?
有没有办法将多个精灵 url 与 mapbox gl js 结合使用 maputnik?现在我们只使用我们自己的数据集,但将来会添加更多的外部资源。这里的问题是,我们不能将所有可能的精灵添加到我们自己的文件中。不存在的精灵只是循环。应该允许用户通过 url 将额外的 sprite 文件加载到项目中,以便他们可以看到数据的全部潜力。
提前致谢。
google-maps - 如何使用 TileServer-GL 或 OpenMapTiles 服务器将多个 .pbf 文件而不是 .mbtiles 作为矢量切片提供到使用 Deck.GL MVTLayer 的 Google 地图中?
概括
我有 .geojson 文件并希望将它们(使用tippecanoe / geobuf / other)转换为 .mbtiles 或 .pbf 文件,以将它们作为来自服务器(TileServer-GL / OpenMapTiles / 其他矢量瓷砖服务器)的矢量瓷砖提供给谷歌地图Deck.GL的MVTLayer。
预期成绩:
- 能够从 TileServer-GL .pbf 文件而不是 .mbtiles 文件提供服务。
- 能够从 TileServer-GL 提供来自文件夹的多个 .mbtiles(或 .pbf)文件,而无需使用特定的 .mbtiles 文件显式启动它。
实际结果:
- 如下所示,我正在使用带有 Deck.GL MVTLayer与矢量平铺集成的谷歌地图,以提供来自 TileServer-GL 的特定 .mbtiles 文件,作为形状或点的集合。
- 什么都没管。
我的尝试
我从 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 服务器上,我什至找不到如何指定输入文件(参考):
我的问题
- 如何使用 TileServer-GL 或 OpenMapTiles 服务器直接提供 .pbf 文件而不是 .mbtiles 文件?
- 如何使用 TileServer-GL 从文件夹中提供所有文件 (.mbtiles),而无需使用特定的 .mbtiles 文件显式启动它
docker ... maptiler/tileserver-gl --mbtiles some-file.mbtiles
?
mapbox - 如何实现动态矢量瓦片服务器
在我的应用程序中,后端(使用 Spring Boot 用 Java 编写)提供 REST API,它公开了一个返回数千个坐标的服务(基于从客户端获取的过滤器)。我的前端正在使用这个 API,然后在 Mapbox 地图中显示结果。
对于 100K 以上的点,性能还不够好,我们想使用矢量图块。
由于数据是动态的,我们希望我们的后端充当矢量切片服务器,这可能吗?
为了服务器矢量切片请求需要什么?有图书馆可以提供帮助吗?
mapbox - 从矢量切片源对几何图形进行操作
在 MapBox 地图中加载矢量切片源时,我想在显示某些几何图形之前对其进行操作。但是,我不确定这是否可能,如果可以,更不用说如何完成了。
例如,我想创建一个获取 OpenStreetMap 瓦片数据的 MapBox 源。但在此数据显示为图层之前,我需要过滤掉所有没有标签"landuse='industrial'" 的土地利用特征。之后,剩余的几何图形应该增长(可能通过 TurfJS?)用户指定的距离。
我希望在纯客户端应用程序中解决这个问题,因为我已经尝试过使用附带的后端服务器并发现它不合适。因此,如果有人能指出我正确的方向,将不胜感激!