部署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

底图汉化

  1. 连接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;
  1. 删除容器中已渲染瓦片

docker exec -it osm-planet bash
cd /data/tiles && rm -rf default
docker restart osm-planet
  1. 浏览器清除缓存,重新加载