Nominatim(全称:Name to Address)是一款基于OpenStreetMap(OSM)数据的开源地理编码工具,简单来说就是能把“地名”转换成具体的经纬度坐标,也能反过来把经纬度转换成对应的地址信息,是地理信息领域常用的基础工具之一。它由OpenStreetMap社区维护,完全免费且开放源代码。
数据下载
http://download.openstreetmap.fr/extracts/asia/china/
安装部署
docker run -it
-e PBF_PATH=/nominatim/data/hainan-latest.osm.pbf
-e IMPORT_STYLE=address
-p 8080:8080
-p 5433:5432
-v /nominatim/data:/nominatim/data
--name nominatim
mediagis/nominatim:4.2
API应用
https://nominatim.org/release-docs/develop/api/Overview/
正向地理编码
输入地址文本,获取对应的经纬度和详细地址信息。
示例请求
https://nominatim.openstreetmap.org/search?q= 上海市浦东新区银城中路501号&format=json&addressdetails=1&accept-language=zh&limit=1
result
[
{
"place_id": 123456,
"lat": "31.2304",
"lon": "121.5090",
"display_name": "上海中心大厦, 银城中路, 陆家嘴街道, 浦东新区, 上海市, 200120, 中国",
"address": {
"building": "上海中心大厦",
"road": "银城中路",
"suburb": "陆家嘴街道",
"city_district": "浦东新区",
"city": "上海市",
"postcode": "200120",
"country": "中国",
"country_code": "cn"
}
}
]
逆向地理编码
输入经纬度坐标,获取对应的地址信息。
示例请求
https://nominatim.openstreetmap.org/reverse?lat=31.2304&lon=121.5090&format=json&addressdetails=1&accept-language=zh
result
{
"place_id": 123456,
"lat": "31.2304",
"lon": "121.5090",
"display_name": "上海中心大厦, 银城中路, 陆家嘴街道, 浦东新区, 上海市, 200120, 中国",
"address": {
"building": "上海中心大厦",
"road": "银城中路",
"suburb": "陆家嘴街道",
"city_district": "浦东新区",
"city": "上海市",
"postcode": "200120",
"country": "中国",
"country_code": "cn"
}
}
一切简单自然的事物都是美好的。