OSM学习之路(四):将OSM 数据导入到PostgreSQL

前提:

前几节简单介绍了一下osm与PostgreSQL,下面我们进入正题,如何将osm数据导入到PostgreSQL里面。

我选择的是利用osm2pgsql进行数据导入,如果有需要osm2pgsql的可以与我联系,网上也可以下载,但是网上的很多资源是没有“default.style”,而且有的“default.style”也是不适用的。

导入OMS数据到PostgreSQL中

1. 新建一个数据库

我们新建一个名称为osm的数据库,可以使用pgAdmin进行创建,和操作其他数据库类似,这里就不做赘述;也可以通过命令行创建,我在这里采取的是通过命令行创建数据库。

打开cmd命令窗口,进入数据库安装的根目录下,然后输入createdb -U postgres -E UTF8 osm

这个过程可能会报错,无法连接到数据库,需要对数据配置文件进行简单的修改

找到数据库安装目录data目录下的pg_hba.conf,然后将红框对应得md5改成trust,然后再执行以下数据库创建语句则可创建成功,我的data目录是:D:\Program Files\PostgreSQL\10\data

修改配置文件后再次执行上面的命令即可完成数据库osm的创建

2. 加载postgis.sql(postgis相关函数等)

同创建数据库一样dos命令进入PostgreSQL的安装目录的bin目录下,输入命令psql -U postgres -d osm -f  "D:\Program Files\PostgreSQL\10\share\contrib\postgis-2.4\postgis.sql"(这里是我的目录,你们根据自己的安装路径进行调整)

执行完成后截图

3. 加载spatial_ref_sys.sql(EPSG坐标系)

同2操作一样也是找到postgis-2.4目录下面的spatial_ref_sys.sql文件,执行psql -U postgres -d osm -f  "D:\Program Files\PostgreSQL\10\share\contrib\postgis-2.4\spatial_ref_sys.sql"

执行结束后截图

4. 下面我们开始使用osm2pgsql将osm数据导入到PostgreSQL里面

(1)我们通过Dos命令进入我们osm2pgsql目录下,我这里是osm2pgsql放在了D盘的根目录下

(2)将我们下载的osm数据放在osm2pgsql目录下

(3)我们执行导入命令将osm数据导入到PostgreSQL里面

osm2pgsql -d osm -U postgres  -P 5432 -C 25000  -S "D:\osm2pgsql\ default.style" asia-latest.osm

-d:你的数据库名称

-U:数据库的用户名

-P:数据库的端口

-C:数据缓存(根据你导入的数据的大小合理的设置缓存,如果设置的缓存太小,会导致由于缓存不足造成的导入失败)

-S:选择导入时候用到的style文件

asia-latest.osm:这个是我要导入的osm数据文件

开始执行导入命令后

我这次导入的是亚洲区域,解压后的osm数据有180G左右,导入过程比较耗时,大概用了1天半的时间完成了数据的导入

这时候表示 我的亚洲区域的数据导入成功

(4)开始导入其他区域的osm数据

osm2pgsql -a -d osm -U postgres  -P 5432 -C 25000  -S "D:\osm2pgsql\ default.style" africa-latest.osm

这条命令我多加了一个-a,如果不加-a则会将我们之前导入的数据全部清空掉,只保留本次的导入,这个一定要注意,一不小心我们之前的工作就可能白费了。

后面又是一场漫长的等待...

我将8个分区的osm数据全部导入,一共花费了3周左右的时间,遇到了各种各样的问题,这里就不把那些问题一一解释了,后面如果有同学在这过程中遇到了问题可以与我私聊。

下图是我将全球数据全部导入后再QGIS上面查看的截图

后面我会继续学习如何利用osm数据搭建一台自己的逆地理服务器

猜你喜欢

转载自blog.csdn.net/qq_17486399/article/details/85296103