功能概述
Nominatim 是由 OpenStreetMap(OSM)社区开发并维护的一个开源地理编码与反向地理编码工具。它支持将自然语言形式的地址、地名或兴趣点(POI)转换为精确的经纬度坐标,同时也可基于给定的地理坐标返回对应的地理位置描述。
核心能力
- 正向地理编码(Forward Geocoding):把可读性地址(例如“北京市天安门广场”)解析成地理坐标(如纬度 39.9087,经度 116.3975)。
- 反向地理编码(Reverse Geocoding):输入经纬度数据(如纬度 48.8584,经度 2.2945),输出对应的位置信息(如“法国巴黎埃菲尔铁塔”)。
- 结构化查询支持:允许用户按照国家、城市、街道、邮政编码等字段进行精细化搜索,提升匹配准确率。
- 地点建议与自动补全:适用于前端搜索框中实现类似 Google Places 的智能提示功能。
数据基础
Nominatim 所使用的全部数据均来自 OpenStreetMap(OSM)。其服务的覆盖范围和准确性直接受 OSM 社区贡献质量的影响。在欧美等地区,由于地图数据更新频繁且详尽,效果表现优异;而在部分发展中国家或偏远区域,可能存在信息缺失或不够完整的情况。
使用方式
1. 使用公共 API(免费但有限制)
OpenStreetMap 提供了公开可用的 Nominatim 接口:
地址: https://nominatim.openstreetmap.org/
使用时需遵循以下规则:
- 每秒最多发送 1 个请求;
- 必须设置有效的 HTTP User-Agent 头部;
- 禁止用于高并发场景或商业批量处理任务;
- 建议对结果进行本地缓存以降低请求频率。
示例:正向地理编码
GET https://nominatim.openstreetmap.org/search?q=北京市天安门&format=json&limit=1
示例:反向地理编码
GET https://nominatim.openstreetmap.org/reverse?lat=39.9087&lon=116.3975&format=json
2. 自建 Nominatim 服务器
对于需要高频访问、具备商业用途或有定制化需求的应用,推荐自行部署私有实例:
- 需导入 OSM 数据文件(通常采用 Planet 全量包或区域提取的 PBF 文件);
- 依赖 PostgreSQL 与 PostGIS 扩展;
- 安装流程较为复杂,但官方文档提供了详细的配置说明;
- 自建后可完全掌控性能调优、数据更新周期及隐私策略。
项目源码地址:https://github.com/osm-search/Nominatim
输出格式与响应内容
Nominatim 支持多种返回格式,包括:
- JSON(最常用)
- XML
- HTML(主要用于调试)
典型返回字段包含:
place_id:位置唯一标识符licence:数据许可声明osm_type / osm_id:关联的 OSM 对象类型及其 IDlat / lon:地理坐标的纬度与经度display_name:格式化后的完整地址文本address:结构化的地址组成部分(如 country、city、road 等)
优势与局限性
| 优点 | 缺点 |
|---|---|
| 开源免费,无使用成本 | 公共 API 存在严格的速率限制 |
| 依托全球协作的 OSM 数据生态 | 部分地区数据覆盖不足或精度较低 |
| 支持多语言及本地化地址表达 | 自建部署过程繁琐,资源消耗较高 |
| 支持正向、反向及结构化查询模式 | 不提供路径规划或地图瓦片服务 |
适用场景分析
- 个人开发者项目或非盈利性质的应用系统;
- 教学演示、科研实验或原型验证阶段;
- 注重用户隐私保护、希望避免接入商业地图服务的系统;
- 与 OpenStreetMap 生态深度整合的地图类应用。
若计划在生产环境中高频调用,建议搭建自有 Nominatim 实例,或评估使用商业替代方案(如 Google Maps Geocoding API、Here、Mapbox 等)。
部署实践
1. 获取中国区域地图数据
下载中国大陆地区的最新 OSM 数据文件(约 953MB):
http://download.openstreetmap.fr/extracts/asia/china.osm.pbf
2. Docker 部署参考
Linux 环境下无需挂载磁盘的运行命令:
docker run -it -e PBF_URL=http://download.openstreetmap.fr/extracts/asia/china-latest.osm.pbf -e REPLICATION_URL=https://download.geofabrik.de/asia/china-updates/ -p 8080:8080 --name mapEngineChina mediagis/nominatim:4.0
Windows 环境下挂载本地磁盘的启动示例:
docker run -it \ -e PBF_PATH=/nominatim/data/china-latest.osm.pbf \
1. 使用小数据集(如摩纳哥)快速部署 Nominatim 实例:
可参考项目地址:
https://github.com/mediagis/nominatim-docker
执行以下命令启动容器:
docker run -it \
-e PBF_URL=https://download.geofabrik.de/europe/monaco-latest.osm.pbf \
-p 8080:8080 \
--name nominatim \
mediagis/nominatim:5.2
导入完成后,即可通过以下链接访问 Nominatim API 服务:
http://localhost:8080/search?q=avenue%20pasteur
2. 查询经纬度对应的详细地址信息:
请求示例:
http://127.0.0.1:8081/reverse.php?lat=36.950008&lon=111.504257
查询指定地区的地理信息:
http://127.0.0.1:8081/reverse.php?=天安门
运行参数说明:
-e REPLICATION_URL=http://download.geofabrik.de/asia/china-updates/ \
-e IMPORT_STYLE=address \
-p 8081:8080 \
-p 5432:5432 \
-v d:/nominatim:/nominatim/data \
--name nominatim \
mediagis/nominatim:4.0
3. 全球地图数据参考资源:
https://www.cnblogs.com/tarantino/p/17376635.html
1) 下载 OSM 源数据文件(osm.pbf 格式):
若需获取全球完整数据包,下载地址为:
https://ftp5.gwdg.de/pub/misc/openstreetmap/planet.openstreetmap.org/pbf/planet-latest.osm.pbf
备用下载源:
https://planet.openstreetmap.org/ (需配合专用下载工具使用)


雷达卡


京公网安备 11010802022788号







