Skip to content

Commit bbe2679

Browse files
authored
地区导入
1 parent 9275fec commit bbe2679

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

nominatim/nominatim-auto-import.sh

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/bin/bash
2+
# ==============================================
3+
# Nominatim 自动增量导入脚本(全自动扫描版)
4+
# 自动检测 /nominatim/pbf 下新 PBF 文件
5+
# ==============================================
6+
7+
# 配置参数
8+
NOMINATIM_USER="nominatim"
9+
NOMINATIM_DIR="/nominatim"
10+
PBF_DIR="$NOMINATIM_DIR/pbf"
11+
THREADS=${THREADS:-20} # 默认线程数
12+
LOG_DIR="$NOMINATIM_DIR/import_logs" # 日志目录
13+
IMPORTED_LIST="$LOG_DIR/imported_files.txt" # 已导入文件记录
14+
APPEND_FLAG="--append" # 增量导入标志
15+
16+
# 创建日志目录和已导入记录文件
17+
mkdir -p "$LOG_DIR"
18+
touch "$IMPORTED_LIST"
19+
20+
# 查找所有 PBF 文件
21+
PBF_FILES=$(find "$PBF_DIR" -maxdepth 1 -type f -name "*.osm.pbf" | sort)
22+
23+
if [[ -z "$PBF_FILES" ]]; then
24+
echo "[提示] $PBF_DIR 中没有 PBF 文件"
25+
exit 0
26+
fi
27+
28+
# 遍历每个 PBF 文件
29+
for OSM_FILE in $PBF_FILES; do
30+
BASENAME=$(basename "$OSM_FILE")
31+
32+
# 检查是否已导入
33+
if grep -Fxq "$BASENAME" "$IMPORTED_LIST"; then
34+
echo "[跳过] 文件已导入过: $BASENAME"
35+
continue
36+
fi
37+
38+
TIMESTAMP=$(date +'%Y%m%d_%H%M%S')
39+
LOG_FILE="$LOG_DIR/${BASENAME%.*}_$TIMESTAMP.log"
40+
41+
echo "===================================================="
42+
echo "[导入开始] $OSM_FILE"
43+
echo "日志文件: $LOG_FILE"
44+
echo "线程数: $THREADS"
45+
echo "===================================================="
46+
47+
# 切换目录和权限
48+
cd "$NOMINATIM_DIR" || exit 1
49+
sudo chown -R $NOMINATIM_USER:$NOMINATIM_USER "$NOMINATIM_DIR"
50+
51+
# 执行导入并记录日志
52+
sudo -E -u $NOMINATIM_USER nominatim import \
53+
--osm-file "$OSM_FILE" \
54+
$APPEND_FLAG \
55+
--threads $THREADS \
56+
2>&1 | tee "$LOG_FILE"
57+
58+
# 标记为已导入
59+
echo "$BASENAME" >> "$IMPORTED_LIST"
60+
61+
echo "[导入完成] $OSM_FILE"
62+
done
63+
64+
echo "===================================================="
65+
echo "所有新文件处理完成"

0 commit comments

Comments
 (0)