PostgreSQL+PostGIS安装以及用Osmosis导入openstreetmap地图数据

本文中所有的操作都是在win7平台下进行的。

1、安装PostgreSQL

安装包下载地址:http://www.enterprisedb.com/products-services-training/pgdownload#windows根据自己电脑的实际情况下载相应的安装包。安装过程很简单,一直点next就行,要注意的有以下几点:

——最最重要的一点!!!关掉360,万恶的360!!!

——注意选择安装路径,应该很多人都很抓狂软件被不小心装在了C盘吧,还有就是不建议装在program files文件夹里面,因为文件夹名有空格,会影响到后面的操作,最好是直接装在某个盘的根目录下;

——中间有让你输入超级用户postgres的密码,这个密码要记住,后面创建及配置数据库的时候会用到;

——安装完成后会提示是否启动Stack Builder(如下图),为了方便后面安装PostGIS,还是建议启动;


启动之后Stack Builder,我们可以比较方便的下载到跟我们所安装的PostgreSQL数据库匹配的PostGIS安装文件,在Spatial Extensions目录下勾选你所需要的版本(如下图),即可下载。当然也可以到官网去下载,地址是http://postgis.refractions.net/download/windows/但是这样不能保证版本匹配,还是建议通过Stack Builder下载。


2、安装PostGIS

安装时可以选择创建一个数据库;

中间需要输入数据库连接信息,用户就是超级用户,密码就是之前所设定的密码;

最后是数据库名字,我用的是osmosis,大家也可以用其他的,不过后面用指令操作的时候就要注意改掉相应的地方。

3、配置数据库

开始之前最好把PostgreSQL安装目录的bin文件夹路径以及Osmosis的bin文件夹路径添加到Path环境变量里面去,这样子就免得指令操作时要不停切换目录(不会的百度一下)。

首先创建一个用户:createuser -U postgres osmosisuser


然后为数据库安装PostGIS拓展:psql -U postgres -d osmosis -f F:\PostgreSQL\9.0\share\contrib\postgis-2.0\postgis.sql,之前所说的不要安装在program files里面就是因为这行命令路径不能带有空格。执行之后有可能会出现一堆乱码的文字,请不要怕,是这样子的,估计是文字编码不匹配的原因,但是不管它啦。

之后我们需要修改一下数据库权限,通过命令psql -U postgres -d osmosis来启动PostgreSQL命令行,我的数据库名字弄成omsosis了,请自动忽略。


这时候可以打开PostgreSQL看看。


授权:grant all privileges on database osmosis to osmosisuser;

改变属主:alter table spatial_ref_sys owner to osmosisuser;


这时候到PostgreSQL上面刷新一下,可以看到表spatial_ref_sys的属主已经变成了osmosisuser。


之后给用户加个密码:alter role osmosisuser password 'openstreetmap';


最后运行脚本,为数据库创建Schema(模式),此时需要退出PostgreSQL命令行,直接输入\q命令即可。脚本文件为F:\Program Files\Osmosis\script\pgsimple_schema_0.6.sql,(其实script文件夹里面有很多脚本文件,具体的还要自己去看)。比较囧的是这里的命令对于空格也是敏感的,所以我把pgsimple_schema_0.6.sql文件复制到了F盘根目录,命令:psql -d osmosis -U osmosisuser -W -f F:\pgsimple_schema_0.6.sql。有乱码请忽视。

到PostgreSQL去看一下,可以发现多出了很多表,这样子数据库就配置完成啦,下一步就是导入数据了。


4、导入数据

导入数据很简单,执行命令:D:\>osmosis --read-xml file=E:\研究方向\OpenStreetMap相关\data\guangzhou\guangzhou.osm --write-pgsimp database="osmosis" user="osmosisuser" password="openstreetmap" host="localhost"。但是我最终发现是用这条命令的过程却是比较痛苦,一开始我是参照《OpenStreetMap》书上的这条命令

结果一直出现数据库模式版本不对应的问题:The database schema version of 5 does not match the expected version of 6.


之后在google上查找解决的办法,看的都是鸡肠文,看得都快吐了。一开始以为是因为osmosis跟PostgreSQL版本不对应,又把环境重新搭了一遍,还是一样,后来才在http://wiki.openstreetmap.org/wiki/Osmosis/PostGIS_Setup找到下面一句话,吐血呀!!!

把命令改成--write-pgsimp试一下,尼玛,终于Done了!!

回到PostgreSQL看一下,果然是有数据了!!下一步就要开始学习PostgreSQL数据库的东西咯,对数据进行加工才行。

5、最后再讲一下如何比较干净的卸载PostgreSQL,因为直接用360卸载或者系统的程序管理卸载都是发现运行不了卸载程序。

——先用360粉碎文件,之后到360软件管理把残余文件删了;

——安装一个RegClean软件,把系统注册表清理干净就差不多了。

相关文章

文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,...
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb...
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才...
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation...
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgr...
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解...