您的位置:首页 > 数据库 > SQL

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

2013-12-03 15:28 531 查看
本文中所有的操作都是在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软件,把系统注册表清理干净就差不多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: