💡
原文中文,约4100字,阅读约需10分钟。
📝
内容提要
Immich 通过经纬度查询数据库进行反向地理编码,以获取照片位置。为了提高使用便利性,作者对默认英文名称进行了汉化,利用 GeoNames 数据库提取国家、省、市信息,并通过 API 重新识别地名,从而提升准确性。
🎯
关键要点
- Immich 通过经纬度查询数据库进行反向地理编码,以获取照片位置。
- 默认英文名称汉化,利用 GeoNames 数据库提取国家、省、市信息。
- Immich 的反向地理编码在 reverseGeocode 函数中实现,使用 SQL 查询获取最近的地理点。
- earth_box 创建以给定点为中心的球体范围,筛选距离输入点 25 公里内的地理点。
- 如果未找到详细地名,则通过自然地球国家划分确定国家信息。
- 反向地理编码数据来自 GeoNames,存放在 /build/geodata 文件夹下。
- 导入数据时会检查更新时间,避免重复导入。
- 汉化过程分为国、省、市三级,使用不同文件和 API 进行翻译和识别。
- node-i18n-iso-countries 库用于国家名称的汉化,admin1CodesASCII.txt 和 alternateNamesV2.zip 用于省级名称的翻译。
- cities500.txt 文件用于市级名称翻译,结合地图 API 进行标准化识别。
- 总结了 Immich 逆向地理编码的原理及汉化实现,相关代码已上传至仓库。
➡️