OSM学习笔记(一)OSM数据导入PG数据库

前言

最近公司项目需要,计划使用OSM数据解决纯内网部署问题,参考了网上很多大侠们的本子,一步一步操作,对于我这种0基础的菜鸟,看不懂代码,从来没做过研发工作,感觉一个坑接着一个坑,磕磕绊绊,目前基本上走到数据入库操作,但是入库后的数据还是有问题,先把结果总结下来,请各位看到的大侠指点指点。

一、软件安装

1、postgresql安装

去官网https://www.enterprisedb.com/downloads/postgres-postgresql-downloads下载对应的操作系统的安装版本,建议尽量选取较高版本,同时建议选择大版本,比较稳定。按照提示一步一步安装,网上有很多教程,此处不做赘述。
注意事项:
1)data一定要装到D盘,避免数据读写权限问题,我个人把软件直接都装到了D盘;
2)一定要装JAVA,我个人不知道什么原因,踩了几次坑之后,突然间就好了;
3)默认语言选择中文,有的人文章中提默认没问题,但是我的貌似出问题了;

2、postgis安装

同样,postGIS程序版安装教程网上很多。
此处只说注意事项:
1)如果要用到postGIS扩展,在安装postgreSQL程序版时就顺带装上,在对应32/64位前面打勾:(我没有选);
2)特别强调:postGIS版本一定要与postgreSQL版本对应上,不然后面无法入库;
3)安装完成后需要配置
将\data\pg_hba.conf中的 md5 改成trustOSM学习笔记(一)OSM数据导入PG数据库

3、osm导入工具osm2pgsql安装

osm2pgsql下载地址:http://customdebug.com/osm/osm2pgsql.zip
default.style文件:https://github.com/openstreetmap/osm2pgsql/blob/master/default.style
网上有帖子说,需要处理default.style文件(自己做一下)
把所有#的注释删除掉,要不然Error reading style file line 1 (fields=1),我自己的没有出现这个问题
osm2pgsql解压完成之后,将处理好的default.style放入到.\osm2pgsql\x64文件夹下
本次实验还用到了osmosis,是官网下载的osmosis的最新版本-0.48.3,下载地址:

二、数据导入操作

方法1:使用osmosis

1)#为OSM数据创建Schema
命令:cd D:\Program Files\PostgreSQL\13\bin
psql -d test -U postgres -W -f “D:\Program Files\PostgreSQL\13\data\OSM\osmosis-0.48.3\script\pgsimple_schema_0.6.sql”
2)#将OSM数据导入PG数据库中
命令:cd D:\Program Files\PostgreSQL\13\data\OSM\osm2pgsql\x64
osm2pgsql -d osmtest-U postgres -P 5432 -C 20000 -S “D:\Program Files\PostgreSQL\13\data\OSM\osm2pgsql\x64\default.style” maldives-latest.osm
#-d:数据库名称
#-U:数据库的用户名
#-P:数据库的端口
#-C:数据缓存(根据导入的数据的大小合理的设置缓存,如果设置的缓存太小,会导致由于缓存不足造成的导入失败)
#-S:选择导入时候用到的style文件;

方法2:直接使用osm2pgsql

1)#加载postgis.sql(postgis相关函数等)
cd D:\postgreSQL\bin
psql -U postgres -d OSM -f “D:\Program Files\PostgreSQL\13\share\contrib\postgis-3.0\postgis.sql”
2)#加载spatial_ref_sys.sql(EPSG坐标系)
#psql -U postgres -d OSM -f “D:\Program Files\PostgreSQL\13\share\contrib\postgis-3.0\spatial_ref_sys.sql”
3)#将OSM数据导入PG数据库
cd D:\Program Files\PostgreSQL\13\data\OSM\osm2pgsql\x64
osm2pgsql -d osmtest-U postgres -P 5432 -C 20000 -S “D:\Program Files\PostgreSQL\13\data\OSM\osm2pgsql\x64\default.style” maldives-latest.osm
这个过程中发现:创建Schema之后,如果再加载postgis.sql或者spatial_ref_sys.sql,系统会报错,提示postgis已安装。

三、结果查看

结果查看的方法有很多中,可以用arcgis或者Qgis挂上数据库看,或者使用geoserver等,我使用的是Qgis,但是结果很不理想,如下图示意:
OSM学习笔记(一)OSM数据导入PG数据库
感觉路线出了问题,但是具体什么原因,不知道,导入的中国地图没法看,折腾了很久,得到这个结果,实在是太扎心了,后面的坑,已经没有信心踩下去了,有比较精通的大侠们,拜托指点一下。