From 54247dd220ed623b513a3fdd598a66abf2d5f43e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AF=85?= <128562567+cyccycy@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:08:37 +0800 Subject: [PATCH 1/6] Create nominatim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 地址检索/反向地理编码 --- nominatim | 1 + 1 file changed, 1 insertion(+) create mode 100644 nominatim diff --git a/nominatim b/nominatim new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/nominatim @@ -0,0 +1 @@ + From ac5d767fc9c1ab0e84cdf877932724c0b32da935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AF=85?= <128562567+cyccycy@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:10:33 +0800 Subject: [PATCH 2/6] Delete nominatim --- nominatim | 1 - 1 file changed, 1 deletion(-) delete mode 100644 nominatim diff --git a/nominatim b/nominatim deleted file mode 100644 index 8b13789..0000000 --- a/nominatim +++ /dev/null @@ -1 +0,0 @@ - From 426d1d2091beff716f44b9517796469e868b4e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AF=85?= <128562567+cyccycy@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:53:04 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=A3=80=E7=B4=A2/?= =?UTF-8?q?=E5=8F=8D=E5=90=91=E5=9C=B0=E7=90=86=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 地址检索/反向地理编码 --- nominatim/docker-compose.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 nominatim/docker-compose.yml diff --git a/nominatim/docker-compose.yml b/nominatim/docker-compose.yml new file mode 100644 index 0000000..9292105 --- /dev/null +++ b/nominatim/docker-compose.yml @@ -0,0 +1,23 @@ +services: + nominatim: + image: mediagis/nominatim:5.2 + container_name: nominatim + restart: unless-stopped + ports: + - "8080:8080" + environment: + # 首次启动会自动导入 PBF 数据 + PBF_PATH: /nominatim/pbf/china-251030.osm.pbf + + # 必须设置数据库密码(任意) + NOMINATIM_PASSWORD: ${NOMINATIM_PASSWORD} + + # 可选:关闭数据更新(纯离线运行) + REPLICATION_ENABLED: "false" + + volumes: + - /home/nominatim/pbf:/nominatim/pbf + - /home/nominatim/data:/var/lib/postgresql/14/main + - /home/nominatim/cache:/var/lib/nominatim + shm_size: "2g" + From 9275fecd49ce9f9781df3359e7858769c7061a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AF=85?= <128562567+cyccycy@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:54:38 +0800 Subject: [PATCH 4/6] Add Nominatim password to .env file --- nominatim/.env | 1 + 1 file changed, 1 insertion(+) create mode 100644 nominatim/.env diff --git a/nominatim/.env b/nominatim/.env new file mode 100644 index 0000000..a11b357 --- /dev/null +++ b/nominatim/.env @@ -0,0 +1 @@ +NOMINATIM_PASSWORD=nominatim From bbe2679bd32037f3d8ef56a94043a305753dce29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AF=85?= <128562567+cyccycy@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:56:04 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=9C=B0=E5=8C=BA=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nominatim/nominatim-auto-import.sh | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 nominatim/nominatim-auto-import.sh diff --git a/nominatim/nominatim-auto-import.sh b/nominatim/nominatim-auto-import.sh new file mode 100644 index 0000000..48d0ffd --- /dev/null +++ b/nominatim/nominatim-auto-import.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# ============================================== +# Nominatim 自动增量导入脚本(全自动扫描版) +# 自动检测 /nominatim/pbf 下新 PBF 文件 +# ============================================== + +# 配置参数 +NOMINATIM_USER="nominatim" +NOMINATIM_DIR="/nominatim" +PBF_DIR="$NOMINATIM_DIR/pbf" +THREADS=${THREADS:-20} # 默认线程数 +LOG_DIR="$NOMINATIM_DIR/import_logs" # 日志目录 +IMPORTED_LIST="$LOG_DIR/imported_files.txt" # 已导入文件记录 +APPEND_FLAG="--append" # 增量导入标志 + +# 创建日志目录和已导入记录文件 +mkdir -p "$LOG_DIR" +touch "$IMPORTED_LIST" + +# 查找所有 PBF 文件 +PBF_FILES=$(find "$PBF_DIR" -maxdepth 1 -type f -name "*.osm.pbf" | sort) + +if [[ -z "$PBF_FILES" ]]; then + echo "[提示] $PBF_DIR 中没有 PBF 文件" + exit 0 +fi + +# 遍历每个 PBF 文件 +for OSM_FILE in $PBF_FILES; do + BASENAME=$(basename "$OSM_FILE") + + # 检查是否已导入 + if grep -Fxq "$BASENAME" "$IMPORTED_LIST"; then + echo "[跳过] 文件已导入过: $BASENAME" + continue + fi + + TIMESTAMP=$(date +'%Y%m%d_%H%M%S') + LOG_FILE="$LOG_DIR/${BASENAME%.*}_$TIMESTAMP.log" + + echo "====================================================" + echo "[导入开始] $OSM_FILE" + echo "日志文件: $LOG_FILE" + echo "线程数: $THREADS" + echo "====================================================" + + # 切换目录和权限 + cd "$NOMINATIM_DIR" || exit 1 + sudo chown -R $NOMINATIM_USER:$NOMINATIM_USER "$NOMINATIM_DIR" + + # 执行导入并记录日志 + sudo -E -u $NOMINATIM_USER nominatim import \ + --osm-file "$OSM_FILE" \ + $APPEND_FLAG \ + --threads $THREADS \ + 2>&1 | tee "$LOG_FILE" + + # 标记为已导入 + echo "$BASENAME" >> "$IMPORTED_LIST" + + echo "[导入完成] $OSM_FILE" +done + +echo "====================================================" +echo "所有新文件处理完成" From ad1c6c8c89d2bd87ec3b539f547e1fd3ba4e7de3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E6=AF=85?= <128562567+cyccycy@users.noreply.github.com> Date: Thu, 27 Nov 2025 16:00:18 +0800 Subject: [PATCH 6/6] Delete nominatim/nominatim-auto-import.sh --- nominatim/nominatim-auto-import.sh | 65 ------------------------------ 1 file changed, 65 deletions(-) delete mode 100644 nominatim/nominatim-auto-import.sh diff --git a/nominatim/nominatim-auto-import.sh b/nominatim/nominatim-auto-import.sh deleted file mode 100644 index 48d0ffd..0000000 --- a/nominatim/nominatim-auto-import.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash -# ============================================== -# Nominatim 自动增量导入脚本(全自动扫描版) -# 自动检测 /nominatim/pbf 下新 PBF 文件 -# ============================================== - -# 配置参数 -NOMINATIM_USER="nominatim" -NOMINATIM_DIR="/nominatim" -PBF_DIR="$NOMINATIM_DIR/pbf" -THREADS=${THREADS:-20} # 默认线程数 -LOG_DIR="$NOMINATIM_DIR/import_logs" # 日志目录 -IMPORTED_LIST="$LOG_DIR/imported_files.txt" # 已导入文件记录 -APPEND_FLAG="--append" # 增量导入标志 - -# 创建日志目录和已导入记录文件 -mkdir -p "$LOG_DIR" -touch "$IMPORTED_LIST" - -# 查找所有 PBF 文件 -PBF_FILES=$(find "$PBF_DIR" -maxdepth 1 -type f -name "*.osm.pbf" | sort) - -if [[ -z "$PBF_FILES" ]]; then - echo "[提示] $PBF_DIR 中没有 PBF 文件" - exit 0 -fi - -# 遍历每个 PBF 文件 -for OSM_FILE in $PBF_FILES; do - BASENAME=$(basename "$OSM_FILE") - - # 检查是否已导入 - if grep -Fxq "$BASENAME" "$IMPORTED_LIST"; then - echo "[跳过] 文件已导入过: $BASENAME" - continue - fi - - TIMESTAMP=$(date +'%Y%m%d_%H%M%S') - LOG_FILE="$LOG_DIR/${BASENAME%.*}_$TIMESTAMP.log" - - echo "====================================================" - echo "[导入开始] $OSM_FILE" - echo "日志文件: $LOG_FILE" - echo "线程数: $THREADS" - echo "====================================================" - - # 切换目录和权限 - cd "$NOMINATIM_DIR" || exit 1 - sudo chown -R $NOMINATIM_USER:$NOMINATIM_USER "$NOMINATIM_DIR" - - # 执行导入并记录日志 - sudo -E -u $NOMINATIM_USER nominatim import \ - --osm-file "$OSM_FILE" \ - $APPEND_FLAG \ - --threads $THREADS \ - 2>&1 | tee "$LOG_FILE" - - # 标记为已导入 - echo "$BASENAME" >> "$IMPORTED_LIST" - - echo "[导入完成] $OSM_FILE" -done - -echo "====================================================" -echo "所有新文件处理完成"