docker部署openStreetMap相关服务
部署openStreetMap-tile-server
#创建需要挂载路径
mkdir -p /home/osm-planet/{data,config}
# 创建挂载盘
docker volume create osm-planet
# 在/home/osm-planet/data中添加pbf文件
docker run -it --rm --name osm-planet \
-v /home/osm-planet/data/planet-latest.osm.pbf:/data/region.osm.pbf \
-v osm-planet:/data/database/ \
overv/openstreetmap-tile-server import
# 需要查看日志,确认配置文件生成完毕
docker cp osm-planet:/data/style/ /home/osm-planet/config/
docker rm -f osm-planet
docker volume rm osm-planet
docker volume create osm-planet
# 修改依赖包地址后,导入数据
docker run -d --rm --name osm-planet \
-v /home/osm-planet/data/planet-latest.osm.pbf:/data/region.osm.pbf \
-v osm-planet:/data/database/ \
-v /home/osm-planet/config/style/:/data/style/ \
overv/openstreetmap-tile-server import
docker run \
--name osm-planet \
-p 18080:80 \
-p 15432:5432 \
-v osm-planet:/data/database/ \
-v /home/osm-planet/config/style/:/data/style/ \
-e ALLOW_CORS=enabled \
-d overv/openstreetmap-tile-server \
run
docker run -d --rm --name osm-planet \
-e THREADS=40 \
--shm-size="24g" \
-v /home/osm-planet/data/planet-latest.osm.pbf:/data/region.osm.pbf \
-v osm-planet:/data/database/ \
-v /home/osm-planet/config/style/:/data/style/ \
overv/openstreetmap-tile-server import
docker run \
--name osm-planet \
-p 8080:80 \
-p 5432:5432 \
-v osm-planet:/data/database/ \
-v /home/osm-planet/config/style/:/data/style/ \
-e ALLOW_CORS=enabled \
-e THREADS=60 \
--shm-size="100g" \
-d overv/openstreetmap-tile-server \
run
mkdir -p /home/nominatim
docker run -d \
-e PBF_PATH=/nominatim/planet-latest.osm.pbf \
-e POSTGRES_SHARED_BUFFERS=2GB \
-e POSTGRES_MAINTAINENCE_WORK_MEM=10GB \
-e POSTGRES_AUTOVACUUM_WORK_MEM=2GB \
-e POSTGRES_WORK_MEM=50MB \
-e POSTGRES_EFFECTIVE_CACHE_SIZE=24GB \
-e POSTGRES_SYNCHRONOUS_COMMIT=off \
-e POSTGRES_MAX_WAL_SIZE=1GB \
-e POSTGRES_CHECKPOINT_TIMEOUT=10min \
-e POSTGRES_CHECKPOINT_COMPLETITION_TARGET=0.9 \
-p 8080:8080 -p 5432:5432 \
-v /home/nominatim:/nominatim \
-v osm-nominatim:/var/lib/postgresql \
--name nominatim \
mediagis/nominatim:4.5
底图汉化
连接PG数据库,执行sql
--添加原始名称备份字段
ALTER TABLE public.planet_osm_line ADD COLUMN raw_name character varying(255);
ALTER TABLE public.planet_osm_point ADD COLUMN raw_name character varying(255);
ALTER TABLE public.planet_osm_polygon ADD COLUMN raw_name character varying(255);
ALTER TABLE public.planet_osm_roads ADD COLUMN raw_name character varying(255);
--更新当前名称,如果中文名称中包含`/`,只保留前半段
update planet_osm_line set name = split_part(tags->'name:zh', '/', 1) , raw_name = name where tags->'name:zh' is not null and tags->'name:zh'!= name and raw_name is null;
update planet_osm_point set name = split_part(tags->'name:zh', '/', 1) , raw_name = name where tags->'name:zh' is not null and tags->'name:zh'!= name and raw_name is null;
update planet_osm_polygon set name = split_part(tags->'name:zh', '/', 1) , raw_name = name where tags->'name:zh' is not null and tags->'name:zh'!= name and raw_name is null;
update planet_osm_roads set name = split_part(tags->'name:zh', '/', 1) , raw_name = name where tags->'name:zh' is not null and tags->'name:zh'!= name and raw_name is null;
--构建名称索引
CREATE INDEX ON public.planet_osm_line (name ASC ) where name is not null;
CREATE INDEX ON public.planet_osm_point (name ASC ) where name is not null;
CREATE INDEX ON public.planet_osm_roads (name ASC ) where name is not null;
CREATE INDEX ON public.planet_osm_polygon (name ASC) where name is not null;
删除容器中已渲染瓦片
docker exec -it osm-planet bash
cd /data/tiles && rm -rf default
docker restart osm-planet
浏览器清除缓存,重新加载
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 木子李
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果