【1】postgis安装

526 阅读4分钟

1.在线安装postgis(yum安装)

1. 查找安装包

yum search postgis

image.png

2.进行安装

yum install -y postgis

3.向数据库中添加扩展

// 开启pgsql的插件 
postgres=# create extension postgis; 
postgres=# create extension postgis_topology; 
postgres=# create extension fuzzystrmatch; 
postgres=# create extension address_standardizer; 
postgres=# create extension address_standardizer_data_us; 
postgres=# create extension postgis_tiger_geocoder;

2. 离线安装

参考链接:
blog.csdn.net/massddss/ar…

1、进入到gisfile文件夹:cd /var/gisfile

把postgis相关包文件上传进来

image.png

2、先安装bzip,不然会报以下错误

image.png

进入/var/gisfile文件夹:cd /var/gisfile

安装命令:rpm -ivh bzip2-1.0.6-13.el7.x86_64.rpm

3、(上面已经装过可以省略)安装gcc,g++编译工具,不然安装报以下错误

configure: error: no acceptable C compiler found in $PATH

进入/var/gisfile文件夹:cd /var/gisfile

解压gccpackages.tar.gz到opt文件夹:tar -zxvf gccpackages.tar.gz -C /opt/

进入opt文件夹:cd /opt/gccpackages

执行安装命令:rpm -Uvh *.rpm --nodeps --force

4、安装gdal扩展

进入/var/gisfile文件夹:cd /var/gisfile

解压文件:tar -zxvf gdal-2.0.0.tar.gz -C /opt

进入到解压后目录:cd /opt/gdal-2.0.0

将gdal安装到/usr/local/gdal-2.0.0目录下 注: (这个目录不要和上传目录一样,否则会报错):./configure --prefix=/usr/local/gdal-2.0.0

编译:make

安装:make install

5、安装geos扩展

进入/var/gisfile文件夹:cd /var/gisfile

解压文件:tar -jxf geos-3.6.3.tar.bz2 -C /opt

进入到解压后目录:cd /opt/geos-3.6.3/

将geos安装到/usr/local/geos-3.6.3目录下 注: (这个目录不要和上传目录一样,否则会报错):./configure --prefix=/usr/local/geos-3.6.3

编译:make

安装:make install

6、安装libxml2扩展

进入/var/gisfile文件夹:cd /var/gisfile

解压文件:tar -zxvf libxml2-2.9.1.tar.gz -C /opt

进入到解压后目录:cd /opt/libxml2-2.9.1/

将libxml2安装到/usr/local/libxml2-2.7.2目录下 注: (这个目录不要和上传目录一样,否则会报错):./configure --prefix=/usr/local/libxml2-2.9.1 --with-python=no

编译:make

安装:make install

7、安装proj扩展

进入/var/gisfile文件夹:cd /var/gisfile

解压文件:tar -zxvf proj-5.2.0.tar.gz -C /opt

进入到解压后目录:cd /opt/proj-5.2.0

将proj安装到/usr/local/proj-5.2.0目录下 注: (这个目录不要和上传目录一样,否则会报错):./configure --prefix=/usr/local/proj-5.2.0

编译:make

安装:make install

8、安装json-c扩展

进入/var/gisfile文件夹:cd /var/gisfile

解压文件:tar xzf json-c-json-c-0.13.1-20180305.tar.gz -C /opt

进入到解压后目录:cd /opt/json-c-json-c-0.13.1-20180305

将json-0.12安装到/usr/local/json-0.12目录下 注: (这个目录不要和上传目录一样,否则会报错):./configure --prefix=/usr/local/json-0.12

编译:make

安装:make install

9、安装postgis

需要安装perl依赖

进入/var/gisfile文件夹:cd /var/gisfile

解文件perl-5.32.1.tar.gz:tar xzf perl-5.32.1.tar.gz

进入到解压后文件夹:cd /var/gisfile/perl-5.32.1

执行命令:./Configure -des -Dprefix=/usr/local/perl

依次执行命令:make make test make install

查看是否安装成功:perl –v

安装postgis

进入/var/gisfile文件夹:cd /var/gisfile

解压文件:tar -zxvf postgis-2.5.1.tar.gz -C /opt

进入到解压后目录:cd /opt/postgis-2.5.1

分行复制,不要复制 \ 不然执行会报错,复制到linux中手动加上\ ,\后面不要有空格

执行命令:

./configure --prefix=/usr/local/postgis \  
--with-pgconfig=/usr/local/postgresql/bin/pg_config \  
--with-xml2config=/usr/local/libxml2-2.9.1/bin/xml2-config \  
--with-geosconfig=/usr/local/geos-3.6.3/bin/geos-config \  
--with-gdalconfig=/usr/local/gdal-2.0.0/bin/gdal-config \  
--with-projdir=/usr/local/proj-5.2.0  

image.png

如果出现:configure: error: could not find GDAL错误
执行命令:vi /etc/ld.so.conf

在里面添加:

/usr/local/lib

/usr/local/postgresql/lib

然后在执行上面的步骤

编译:make

安装:make install

10、 安装postgis拓展

切换到postgres用户:su postgres

执行:psql

创建数据库:create database postgis;

切换到postgis数据库:\c postgis

执行命令:create extension postgis;

如果报错:ERROR: could not load library "/usr/local/postgresql/lib/postgis-2.5.so": libgeos_c.so.1: 无法打开共享对象文件: 没有那个文件或目录

image.png

执行命令(最后面的是错误标红的文件):ldd /usr/local/postgresql/lib/postgis-2.5.so
缺少so文件,直接把/usr/local对应的安装文件里面复制到postgresql的lib文件夹下

执行命令:

执行命令:cp /usr/local/geos-3.6.3/lib/libgeos_c.so.1 /usr/local/postgresql/lib/

执行命令:cp /usr/local/proj-5.2.0/lib/libproj.so.13 /usr/local/postgresql/lib/

执行命令:cp /usr/local/libxml2-2.9.1/lib/libxml2.so.2 /usr/local/postgresql/lib/

再次执行:ldd /usr/local/postgresql/lib/postgis-2.5.so

再切换到postgis数据库执行:create extension postgis;

报错:could not load library "/usr/local/postgresql/lib/rtpostgis-2.5.so": libgdal.so.20: 无法打开共享对象文件: 没有那个文件或目录

执行命令(最后面的是错误标红的文件):ldd /usr/local/postgresql/lib/rtpostgis-2.5.so

执行命令:cp /usr/local/gdal-2.0.0/lib/libgdal.so.20 /usr/local/postgresql/lib/

再次执行:ldd /usr/local/postgresql/lib/rtpostgis-2.5.so

image.png

如果创建拓展报错:ERROR: could not load library "/usr/local/postgresql/lib/rtpostgis-2.0.so":libpq.so.5: cannot open shared object file: No such file or directory

把postgresql安装包里libpq.so.5的添加到64位系统中:
ln -s /usr/local/postgresql-9.5.7/src/interfaces/libpq/libpq.so.5 /usr/lib64/libpq.so.5

再次切换到postgis数据库执行:create extension postgis;

image.png

为了更好的使用postgis功能,决定把所有的扩展都装了:create extension postgis_topology;

image.png

测试postgis是否成功,打开navicat打开postgis数据库

执行sql:select st_buffer(st_geometryfromtext ('POINT (0 0)',0),100 )

如果有结果说明已完成!

image.png