Nominatim API(OpenStreetMap官方地理编码服务)
2026年07月10日 09:10

GISBox是一站式三维GIS数据编辑、转换、发布平台,支持OSGB/GEOTIFF/RVT等多种GIS格式编辑,转换为3DTiles/Terrain等并发布。

简介

Nominatim API是OpenStreetMap官方提供的开源地理编码与反向地理编码服务,能够将人类可读的地址(如“中国浙江省杭州市西湖区”)转换为精确的经纬度坐标(正向地理编码),也能将经纬度坐标(如30.2642, 120.1667)还原为结构化的地址描述(反向地理编码),其数据完全依赖全球志愿者贡献的OpenStreetMap地图信息,支持自由文本查询与结构化参数过滤,广泛用于地图应用、位置搜索、数据分析等场景,且通过官方公共接口https://nominatim.openstreetmap.org/免费开放使用,但需遵守每秒不超过1次请求的使用政策。

文件结构

‌Nominatim的文件结构可从三个层面理解:

  1. 源码目录‌:nominatim/api/(API 接口层)、nominatim/tokenizer/(分词器)、lib-sql/(数据库函数)、settings/(配置文件)、sql/(建表脚本)、test/(测试套件)等。
  2. 部署文件系统‌:data/osm/(原始 OSM 数据文件)、postgres/(PostgreSQL 数据库存储,占用空间最大)、config/settings/local.php(自定义配置)、logs/(运行日志)、docker-compose.yml(容器部署配置)。
  3. 核心数据库表‌:place(存储所有地点)、search_name(搜索索引)、place_addressline(地址层级关系)、location_area/road(区域与道路辅助表),通过 PostGIS 空间索引支撑高效查询。

优点

  1. 开源免费‌:完全开源,无需支付任何许可费用,数据透明可查,适合个人项目与非商业应用。
  2. 基于全球协作数据‌:依托OpenStreetMap全球志愿者贡献的数据,覆盖全球范围,支持约167种语言与本地化地址。
  3. 支持多种查询方式‌:提供正向地理编码(地址→坐标)、反向地理编码(坐标→地址)、结构化参数查询及批量查询等丰富功能。
  4. 可完全离线运行‌:自建部署后无需外部网络连接即可提供服务,满足数据隐私与合规需求。
  5. 高度可定制‌:支持自定义分词规则、排名算法、国家行为设置,模块化设计便于扩展。

缺点

  1. 公共API严格限流‌:官方公共接口限制匿名用户每秒不超过1次请求,高频场景需自建服务或购买商业替代方案。
  2. 地区数据不均衡‌:数据质量高度依赖OSM社区贡献,欧美地区数据丰富,部分地区(如发展中国家农村)数据可能不完整。
  3. 自建部署复杂且资源消耗大‌:需手动管理PostgreSQL+PostGIS数据库,全球数据需1TB+存储,建议至少32GB内存、NVMe SSD,数据导入过程漫长。
  4. 查询性能有限‌:复杂或逆向查询响应时间可达数百毫秒至数秒,高并发下易出现性能瓶颈与OOM问题。
  5. 功能范围有限‌:仅提供地理编码与反向编码,不包含路线规划、导航、地图瓦片渲染等功能,无法满足完整地图应用需求。

应用场景

Nominatim API广泛应用于各类需要地址与坐标相互转换的场景,包括地图导航中将用户输入的地址定位到地图上、物流配送系统中标准化收件地址以规划路线、社交与旅游平台中为内容自动添加地理标签,以及房地产、城市规划、应急救援、商业数据分析和IoT资产管理等领域,帮助开发者将文本地址批量转为经纬度坐标,从而实现基于位置的搜索、可视化与空间决策。

示例图

1. docker镜像容器搭建nominatim地理编码服务。

Snipaste_2026-07-10_09-35-17.jpg

文件打开方式

1. Web端加载OpenStreetMap地图。

Snipaste_2026-07-10_09-37-34.jpg

相关 GIS 服务

Web 地图渲染服务 OGC API

切片地图服务

HERE Technologies

Azure Maps API

参考资料

  1. https://blog.csdn.net/weixin_45428910/article/details/148293785
  2. https://blog.csdn.net/weixin_38850930/article/details/139059087
  3. https://blog.csdn.net/qq_17486399/article/details/100136606