Repolode
osm-search

osm-search/Nominatim

基于 OpenStreetMap 数据的开源地理编码服务,支持按名称和地址搜索及逆地理编码。

可替代:Google Maps Geocoding API

Star
4,553
Fork
869
未关闭 Issue
104
最近提交
4天前

这是什么?

Nominatim 是一个基于 OpenStreetMap 数据的搜索工具,可以按名称和地址进行地理编码,也能反向生成任意 OSM 点位的合成地址,即逆地理编码。OpenStreetMap 首页的搜索框就使用它作为数据源之一,项目也提供一个数据持续更新的公共实例供直接查询。

自建服务时,需要克隆仓库、下载国家网格文件、安装 API 与数据库相关的 Python 包,然后将 OSM 数据文件(如 planet 文件的子集)导入项目目录。之后通过 nominatim serve 命令配合 uvicorn 和 falcon 启动 Web 服务,对外提供搜索接口。

项目主要使用 Python 编写,并包含供 osm2pgsql 使用的 Lua 配置文件。文档覆盖稳定版与开发版的安装、管理和故障排查。

核心功能

  • 01正向地理编码:按名称搜索 OSM 数据中的地点和地址。
  • 02逆地理编码:根据坐标生成对应地址。
  • 03将 OSM 数据文件(包括 planet 文件的子集)导入本地项目。
  • 04通过 Python Web 服务(uvicorn 与 falcon)提供搜索接口。

适用场景

  • 为地图应用添加地址搜索和自动补全功能。
  • 将 GPS 或日志中的坐标转换为可读地址。
  • 基于区域性 OSM 数据子集搭建私有地理编码服务。

快速上手

  1. 1

    克隆代码仓库

    git clone https://github.com/osm-search/Nominatim.git
  2. 2

    创建 Python 虚拟环境

    python3 -m venv nominatim-venv
  3. 3

    将 Nominatim 软件包安装到虚拟环境中

    ./nominatim-venv/bin/pip install packaging/nominatim-{api,db}
  4. 4

    创建项目目录,然后导入你的 OSM 数据

    nominatim import --osm-file <your planet file> 2>&1 | tee setup.log

使用前须知

  • 采用 GPL-3.0 许可证,这是一种 copyleft 许可证,要求衍生作品也必须开源。
  • 自行运行需要导入完整的 OSM planet 文件,自托管工作量较大。

标签

#geocoding#openstreetmap#reverse-geocoding#gis#python#search#osm

常见问题

Nominatim 是什么?
基于 OpenStreetMap 数据的开源地理编码服务,支持按名称和地址搜索及逆地理编码。 Nominatim 是一个基于 OpenStreetMap 数据的搜索工具,可以按名称和地址进行地理编码,也能反向生成任意 OSM 点位的合成地址,即逆地理编码。OpenStreetMap 首页的搜索框就使用它作为数据源之一,项目也提供一个数据持续更新的公共实例供直接查询。
Nominatim 可以免费使用吗?用的什么许可证?
Nominatim 以 GPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
Nominatim 还在维护吗?
活跃维护中。Nominatim 最近一次提交是在 2026年11月3日。
Nominatim 适合用来做什么?
为地图应用添加地址搜索和自动补全功能。 将 GPS 或日志中的坐标转换为可读地址。 基于区域性 OSM 数据子集搭建私有地理编码服务。
Nominatim 怎么安装和运行?
克隆代码仓库: git clone https://github.com/osm-search/Nominatim.git 创建 Python 虚拟环境: python3 -m venv nominatim-venv 将 Nominatim 软件包安装到虚拟环境中: ./nominatim-venv/bin/pip install packaging/nominatim-{api,db} 创建项目目录,然后导入你的 OSM 数据: nominatim import --osm-file <your planet file> 2>&1 | tee setup.log
在哪里获取 Nominatim?
源代码和安装说明在 GitHub 上:https://github.com/osm-search/Nominatim

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目