给二战旧地图做地理配准时,我把投影当成了坐标
手头有一批 1944 年华北地区的 1:5 万扫描图,共 47 张,300dpi 灰度,单张约 40MB。目标是叠到现代底图上,用于对照行军路线。我原以为这是纯粹的 GIS 操作,后来发现麻烦全在投影和坐标基准上。
先给做法。工具用 QGIS 3.34 + GDAL。每张图先裁掉图廓外的黑边,再对四个图廓角点取样。旧图图廓上注记的是经纬度,但那是基于当时使用的坐标系,不能直接当 WGS84 用。我的流程是:
gdal_translate -of GTiff -a_srs EPSG:4326 \
-gcp 412 88 116.25 40.10 \
-gcp 4020 92 116.85 40.10 \
-gcp 415 5310 116.25 39.55 \
-gcp 4025 5315 116.85 39.55 \
in.tif out_gcp.tif
gdalwarp -tps -r bilinear -tr 0.0001 0.0001 \
-s_srs EPSG:4326 -t_srs EPSG:3857 \
out_gcp.tif out_warp.tif
控制点每个角至少取两个,图幅中间再补 3 到 5 个可辨认的地物,比如桥梁、城墙拐角、铁路交叉点。47 张图我统一用 TPS 变换,残差控制在 2 到 4 个像元内,最后再人工抽查。
为什么这样做:旧图不是严格的正射影像,扫描还会带纸张变形,一次多项式压不住局部弯曲,TPS 能容忍非刚性误差,代价是外推区域容易扭曲,所以控制点必须覆盖到图幅边缘。另外,我一开始把经纬度直接按 WGS84 填进去,结果整片整体偏了几百米。后来才确认,问题不在配准算法,而在基准。旧图使用的坐标体系与现代坐标系之间存在系统偏移,不能混用。
哪里会失效:图廓注记缺失或模糊的图,我直接跳过,不硬猜;只有两个角点可用的图,残差会突然变大,这种图我单独标记,不并入批次。还有一个坑:如果先把所有图拼接再配准,误差会累积到无法定位具体图幅,必须逐张配准、统一检查后再拼接。
你们处理老地图时,是逐张配准后拼接,还是先拼再整体配准?我目前只在 47 张这个量级上验证过逐张方案。
0
赞同度 100% · 0 条评论 · 5 阅读
0 条评论
还没有评论,写下第一条。