描述:openstreetmap官网目前支持nominatim作为地理编码服务进行搜索,官网地址:
https://nominatim.openstreetmap.org/ui/reverse.html?lat=22.65080&lon=113.92105&zoom=18

一,搭建
1,nominatim不建议在windows下安装,一般是在linux下,当前以ubuntu18.04系统搭建

2,安装docker

3,拉指定nominatim镜像,mediagis/nominatim:4.0,github地址:
https://github.com/mediagis/nominatim-docker/tree/master/4.0

4,下载地图文件,目前我用的是pbf格式的osm文件,下载地址网页(亚洲):
http://download.openstreetmap.fr/extracts/asia/
下载中国地址(有953M):
http://download.openstreetmap.fr/extracts/asia/china.osm.pbf

下载整个地球地图,有几十个G,而且安装的时候特别费硬盘,有固态硬盘会安装快些,如果做测试的话,下载一个城市的地图就行了,比如北京市地图(22M)

5,启动容器:
docker run -d -e PBF_PATH=/nominatim/data/china.osm.pbf -e REPLICATION_URL=https://download.geofabrik.de/europe/monaco-updates/ -p 8080:8080 -p 5432:5432 -v /home/hzp/osm/osm-maps/data:/nominatim/data --name nominatim mediagis/nominatim:4.0

PBF_PATH:第4步下载的地图文件,如果指定PBF_PATH,那么得将该文件挂载到容器中
PBF_URL:pbf文件的地址,可以在启动容器的时候再去下载,跟PBF_PATH不能同时使用

里面会起一个postgresql,加载导入的地图数据,加载过程会比较耗时,4核,5G内存,机械硬盘,加载一个中国地图,花了9个小时,另外加载中国地图的话,硬盘得配100G,一个城市的地图大概20G也够了

6,用虚拟机的话访问里面的pg,得把端口映射出来,pg端口:5432,数据库用户名:nominatim,密码:qaIACxO6wMR3

7,nominatim暴露的端口为8080,可测试curl localhost:8080,返回[]表示服务可用

二,接口
1,反向地理寻址,经纬度查找
http://ip:port/reverse.php?lat=#{lat}&lon=#{lon}&zoom=18&format=jsonv2

2,关键字查找:
http://ip:port/search.php?q=#{keyword}&polygon_geojson=1&format=jsonv2

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐