在Tileservergllight卫星光栅顶部显示国家边界,以便在绘图地图框中使用?

2024-06-09 10:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

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

不幸的是,我被要求用“青色”覆盖国家边界和海岸线

快速的谷歌搜索发现TipperCanoe将GeoJSON数据转换为.mbtiles格式,这样我就可以创建一个新的tileserver来承载新的mbtiles。我找到的GeoJSON文件是here

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

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

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

我使用podman运行docker容器及其各自的.mbtile

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正在运行,但是仍然没有要预览的向量Tile如何获得tileserver gl light期望的正确格式?

还可以引入Plotly库

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

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

trace = go.Mapbox(lat=[10,20,30],lon=[10,20,30],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,20,30],lon=[10,20,30],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']},
{'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在光栅图像的顶部添加国家边界

提前谢谢


Tags: godatalayersgeojson向量mapboxbelow边界