在 Tileserver-gl-light 中的卫星栅格顶部显示国家边界以在 Plotly Mapboxes 中使用?

问题描述

我已在本地启动并运行 tileserver-gl-light,并且已成功托管 satellite_low_res.mbtiles

不幸的是,我被要求在栅格顶部以“青色”覆盖国家边界和海岸线。

一个快速的谷歌搜索出现了 tippecanoe 将 GeoJSON 数据转换为 .mbtiles 格式,这样我就可以创建一个新的 tileserver 来托管新的 mbtiles。我找到的 GeoJSON 文件here

我将 GeoJSON 保存为 border.GeoJSON 并运行以下 tippecanoe 命令以转换为 .mbtiles

tippecanoe --minimum-zoom=0 -z10 -o borders.mbtiles borders.GeoJSON

但是,每当我尝试使用 maptiler-desktop 查看矢量切片 [borders.mbtiles] 时,它清楚地告诉我 border.mbtiles 中没有可用的矢量数据。

我使用 podman 运行带有各自 .mbtiles 的 docker 容器。

sudo podman -it -v $(pwd):/data:z -p 8008:80 maptile_server --mbtiles satellite_low_res.mbtiles

sudo podman -it -v $(pwd):/data:z -p 8081:80 maptile_server --mbtiles borders.mbtiles

每当我访问 localhost:8081 时,我都可以看到 tileserver 正在运行,但同样,没有要预览的矢量切片。 如何获得 tileserver-gl-light 期望的正确格式?

还要引入 Plotly 库。

我可以制作一个简单的地图框图,如下所示。 [这适用于卫星低分辨率]

import plotly.graph_objects as go
figure = go.figure()

trace = go.MapBox(lat=[10,20,30],lon=[10,mode='markers')
figure.update_layout(mapBox_style='white-bg',mapBox_layers=[{'below':'traces','sourcetype':'raster','source':['http://127.0.0.1:8080/data/openmaptiles_satellite_lowres/{z}/{x}/{y}.jpg']}])
figure.show(renderer='browser')

我想要做的是为 maBox_layers kwarg 中的边框添加一个图层。我尝试了以下方法

import plotly.graph_objects as go
figure = go.figure()

trace = go.MapBox(lat=[10,'source':['http://127.0.0.1:8080/data/openmaptiles_satellite_lowres/{z}/{x}/{y}.jpg']},{'below':'traces','sourcetype':'vector','source':['http://127.0.0.1:8081/data/borders/{z}/{x}/{y}.pbf']}])
figure.show(renderer='browser')

然而,这不起作用。

有谁知道怎么做:

  1. 如何使 tileserver-gl-light 从 geoJSON 文件中识别出诚实的矢量切片?
  2. 如何使用 Plotly 在光栅图像上添加国家边界?

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)