PostGIS安装前,需要先安装GEOS和PROJ组件,这两个组件的安装没什么好说的。安装好后,PostGIS才能顺利的执行configure命令。
PostGIS安装完成后,需要创建一个模板数据库,以后新建空间数据库都以这个数据库为模板就可以了,这个数据库中包含了所有的空间数据类型和函数。
切换到postgres用户,执行:
createdb postgis-template
createlang plpgsql postgis-template
这样就完成了一个数据的创建,但是这个数据库只是普通的数据,还不能作为空间数据库模板,需要执行几个脚本导入数据库对象
psql -d postgis-template -f postgis.sql
psql -d postgis-template -f spatial_ref_sys.sql
psql -d postgis-template -f postgis_comments.sql
前两个脚本是必须的,最后一个似乎不是很有必要
个人认为,最好使用PgAdmin来执行,这样有什么错误提示看得比较清楚。
执行第一个脚本时,会遇到libgeos_c.so.1动态库找不到的问题,这是因为geos默认安装在/usr/local/lib这里,但是似乎因为Pg是x64模式的,所以默认搜索的lib64的目录,此时,需要对/usr/local/lib/libgeos_c.so.1做一个软连接。这里有两个选择,/usr/local/lib64和/usr/lib64,经测试,只要在/usr/lib64中作软连接才能解决问题。geos库需要软连接,Proj库也需要,所以主要看提示,一般这两步做完,基本上执行脚本就不会遇到什么问题了。
此后,如果需要新建空间数据库,可以使用以下两种方式:
在shell里,使用postgres用户
$createdb -T postgis-template my_spatial_db
或者使用psql工具
postgres=# CREATE DATABASE my_spatial_db TEMPLATE=postgis-template
备注:一直想不通,就是geos这样的库,既然使用x64模式编译,为什么不自动放入lib64里去。
遇到类似找不到库的问题,也不是总能直接做软连接或者直接拷贝解决的,因为我一直不清楚如果可执行文件时x64的,能不能调用32bir模式编译的库(很大可能发生问题,指针的长度都不一致)。
所以必须使用file -b 文件名,这个命令来查看一下库文件是否是x64模式的,如果是,那么放心的做软连接就没问题,如果不是,就算做了,可能也会发生其他问题。
后面一种情况,我没有测试过,因为我用file命令检查geos和proj库,都是x64模式的,所以就直接做软连接了。