关于自己使用Docker安装托管OpenStreetMap(OSM)贴片踩过的几个问题及解决
文章目录
这个项目是我几个月前做的,那时候中还没有可以解决我遇到的问题的中文指南,踩了不少坑。今天想总结一下。
环境
系统:Ubuntu 20.04 LTS for WSL2, Windows 11 Home
软件:Docker Desktop for Windows
整个安装过程基本参照镜像的Github说明进行。
下面说说所遇到的问题,以及如何解决的。
问题
无法导入所需的地图pbf文件
地图服务器镜像中的导入路径说明如下:
但是我试了好几次,都无法成功导入。当无法导入时,它会自动下载示例数据,就像这样:
+ echo 'WARNING:No import file at /data.osm.pbf,so importing Luxembourg as example...
+ DOWNLOAD_PBF=https://download.geofabrik.de/europe/luxembourg-latest.osm.pbf
+ DOWNLOAD_POLY=https://download.geofabrik.de/europe/luxembourg.poly
于是我查看了OSM官网的另一篇说明,发现这其中有差距:
docker run \
-v /home/renderaccount/zambia-latest.osm.pbf:/data.osm.pbf \
……
上面,其中挂载文件的路径定义不完全相同,于是换用这个路径就解决了。
猜想:在翻看Github指南的“提交历史”中,发现这个路径是最近被修改的,也就是说这个镜像还在快速迭代中,可能还未更新到我使用的版本,如果其中一个路径不行就可以试试另一个。
顺带一提,在官方的指南与镜像的教程中,数据库的位置也是不一样的,若出现无法导入的情况,也可以尝试另一个。
导入代码,注意要将路径换成自己的文件所在地:
docker run -v (自己的pbf地图文件地址):/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server import
Checking Table 过程时间过长/报错
INFO:root:Checking table simplified_water_polygons
如果你尝试跳过这一步,而后启动服务器则会抛出“An error occurred while loading the map layer ‘ajt’ ”(加载ajt图层时发生错误)。
当你进行到“Checking table simplified_water_playgons”这一步时可能会卡着不动了,检查后发现是要从一个德国的OSM网站下载几个GB的文件,因为博主家网烂无法正常下载,于是只好取折中方案——将文件先下载下来,再将URL指定为本地搭建的服务器以获取文件。
访问德国OSM网站,以下是将要下载的5个文件:(数字可能会不同,请自行对号修改路径)
- antarctica-icesheet-outlines-3857.zip
- antarctica-icesheet-polygons-3857.zip
- ne_110m_admin_0_boundary_lines_land.zip
- simplified-water-polygons-split-3857.zip
- water-polygons-split-3857.zip
下载的话我们可以使用“百度网盘离线下载”,百度网盘有时就是这个好用。将下载好的文件丢入临时搭建的本地服务器即可,这里使用轻量应用EasyWebSvr。
定义下载URL的文件位于容器的“/home/user/openstreetmap-carto/external-data.yml”,我们使用docker容器的cp命令将文件拷出来,修改为本地临时URL完成后再将文件覆盖回去。
docker cp (容器名字):/home/user/openstreetmap-carto/external-data.yml (自己的目录)
红圈修改为自己的URL,共5处,(若后续新增其他可根据其链接进行下载)。修改完后将两个路径对调一下即可覆盖。
方法二:当然也可以替换包含这个文件的整个库,详见镜像Github页面“使用其他风格”小节,亲测可行,不再详述。
后记
我一直都很喜欢看地图,于是才有了这次本地部署的想法。顺便也可以看看我做的OSM地图图片拼接导出小工具,可以把电子地图打印成“复古的”纸质版也不错。
外部链接
官方
OpenStreetMap(官方)
迁移至OSM地图(官方英文)
其他
地图服务器Docker镜像Github页(English)
OSM地图图片拼接导出小工具(作者本人)
德国OSM网站(德文)