本文中所有的操作都是在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软件,把系统注册表清理干净就差不多了。
原文链接:https://www.f2er.com/postgresql/195965.html