【地图引擎】基于现有docker镜像搭建nominatim地理编码服务
描述: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 -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
PBF_PATH:第4步下载的地图文件,如果指定PBF_PATH,那么得将该文件挂载到容器中
PBF_URL:pbf文件的地址,可以在启动容器的时候再去下载,跟PBF_PATH不能同时使用
里面会起一个postgresql,加载导入的地图数据,加载过程会比较耗时,4核,5G内存,机械硬盘,加载一个中国地图,花了9个小时,另外加载中国地图的话,硬盘得配100G,一个城市的地图大概20G也够了
注意:在安装过程中会出现以下类似错误,查阅了资料后发现:因为openstreetmap已经被墙了,导致安装时需要远程获取数据时连接错误。
解决方法:下载地图包后,docker执行安装时,要开启FQ软件,让数据能够正常更新。
Failed to load URL : https://www.openstreetmap.org/api/0.6/node/10165779452/1
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
————————————————
版权声明:本文为CSDN博主「vatrenoludilo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vatrenoludilo/article/details/125003804