osm 数据导入到 postgresql

注:本篇文章是转载的,是因为自己在实践中碰见一些小问题所以特地来在某步骤中补充说明一下以免有些地方使得部分朋友会觉得奇怪。本文中,补充提示文本均用红色斜体标识出(因为看到这篇文章的转载博客并未显式标明来源,所以我无法展示源地址,若侵则删。)

一 提取数据

剪切你选择区域内的数据,或者提取出特定区域特定的特征,下载

二 数据格式

OSM文件

OSM文件仅属于OSM,不能用别的软件打开。其中后缀为bz2,pdf的文件是为了节省空间压缩过的OSM文件。一个简单的OSM文件如下图所示:

shapefiles文件

shapefiles是一种用来存储矢量地图数据的格式,是由几个不同文件组成的。比如:一个包含建筑物数据的shapefile可能含有下述三个文件:

 buildings.shp
 buildings.shx
 buildings.dbf
一个shapefile文件只能有一种元素(点/线/形状)特征。不像OSM,里面的每一个目标都可以有无数个Tags,但是shapefile文件元素特征的属性必须符合定义的表格结构,如下图所示。OSM数据可以转化成shapefiles。

Databases

OSM数据一般存储在PostgreSQL 数据库或者SQLite数据库。

安装PostgreSQLDatabases

OSM数据一般存储在PostgreSQL 数据库或者SQLite数据库。下载最新版PostgreSQL:http://www.postgresql.org/download/。会安装三部分文件:

• PostgreSQL server:核心部分,数据库软件

• pgAdmin4/3:管理数据库的图形界面

• StackBuilder:用来增加另外的应用。比如我们用这个程序添加PostGIS 扩展。

PostgreSQL安装过程中,一直默认即可。其中会需要设置用户名和密码,要记住,后面会用到(用户名:postgres是超级用户,拥有对于数据库的所有权限)。完成后,打开StackBuilder,打开Spatial Extensions,选择PostGIS最新版本,输入刚刚设置的密码,弹出的一系列对话框,按默认选择,最后点击Finish即可。

用pgAdmin4创建一个数据库

打开pdAdmin4,右键单击PostgreSQL 9.X并将PostgreSQL连接到本地主机服务器,具体过程如下:右击servers-PostgreSQL9.X –选择connect,输入用户名和密码。

右击database,选择新建datebase:

填写数据库的名字以及用户名,在这里填写postgres,选择OK。

三 导入OSM数据至PostgreSQL数据库 


(1)创建数据库,使用pgAdmin 4,create database ,命名seattle,记得选上模板为postgis_23_sample (不一定完全叫这个名字,这个应该和下载的postgis有关,反正选择前缀为“postgis_”的模板就好)
 

注意:勾选模板,要确定模板数据库不能处于连接状态 
(2)为数据库创建Schema(模式) 
在这之前先把PostgreSQL安装目录的bin文件夹路径以及Osmosis的bin文件夹路径添加到Path环境变量里面去,这样子就免得指令操作时要不停切换目录。 
Osmosis的安装很简单,下载最新版解压即可,可查看http://wiki.openstreetmap.org/wiki/Osmosis/PostGIS_Setup 
为数据库创建Schema(模式)使用命令 
psql -d seattle -U postgres -W -f F:\postgres\osmosis\script\pgsimple_schema_0.6.sql 

(这里注意一下,seattle要改成自己数据库的名称,pgsimple_schema_0.6.sql的路径要改成自己存放的路径位置,而且这一步执行以后命令行中会要求你输入数据库密码,而且密码是不可见的【也就是说你输入什么在窗口中不会显示出来,不用管它,只要输入正确的密码就好,输入好后回车即可】)


 
可在pgAdmin 中看到生成了很多我们需要的表table 


(3)准备工作算是都做好了,现在开始导入数据了,前面已经说到下载好了OSM数据。 
输入命令: 
osmosis –read-xml file=F:\OSMData\SeattleWAUSA\SeattleWAUSAosm\SeattleWAUSA.osm –write-pgsimp database=”seattle” user=”postgres” password=”……” host=”localhost” 

(这条命令中除了osm数据路径需要改成你自己的路径,database和password等都要改成你自己配置的文本以外还有个关键的地方,就是在“read”和“write”前面,应该都有两个连词符而不是一个,即为“- -”(中间没有空格,是连续的两个-)而非“-”,如果这里没有输入正确的话是会发生error的)
 
等待执行完毕 
 
现在我们就可以在pgAdmin中查看到导入进去的数据了 


至此,全部操作完成。

发布了6 篇原创文章 · 获赞 3 · 访问量 358

猜你喜欢

转载自blog.csdn.net/ice_teas/article/details/103212470