centos7 pg10.7 源码安装postgis2.5
PostGIS 部署
pre-requirement
sudo yum install libxml2 libxml2-dev gcc+ gcc-c++ -y
geos
http://trac.osgeo.org/geos
sudo mkdir /usr/local/geos -p
sudo chown -R postgres.postgres /usr/local/geos
wget http://download.osgeo.org/geos/geos-3.6.2.tar.bz2
tar -jxvf geos-3.6.2.tar.bz2
cd geos-3.6.2
./configure --prefix=/usr/local/geos
make -j 32 && sudo make install
cd ..
proj
https://trac.osgeo.org/proj/
sudo mkdir /usr/local/proj5
sudo chown -R postgres.postgres /usr/local/proj5
wget http://download.osgeo.org/proj/proj-5.0.0.tar.gz
tar -zxvf proj-5.0.0.tar.gz
cd ./proj-5.0.0
./configure --prefix=/usr/local/proj5
make -j 32 && sudo make install
cd ..
GDAL
http://gdal.org/
sudo mkdir /usr/local/gdal
sudo chown -R postgres.postgres /usr/local/gdal
wget http://download.osgeo.org/gdal/2.2.4/gdal-2.2.4.tar.gz
tar -zxvf gdal-2.2.4.tar.gz
cd gdal-2.2.4
./configure --prefix=/usr/local/gdal --with-pg=/ssd01/pg10/bin/pg_config
make -j 32 && sudo make install
cd ..
LibXML2 libxslt json-c cmake ...
http://www.xmlsoft.org/
sudo yum install -y libtool libxml2 libxml2-devel libxslt libxslt-devel json-c json-c-devel cmake gmp gmp-devel mpfr mpfr-devel boost-devel pcre-devel git
源码安装cmake(或者叫升级cmake)
cmake source install as follows:
0 cd ~
1 wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
2 tar xvf cmake-3.5.2.tar.gz
This worked for me then:
3 cd cmake-3.4.3
4 ./bootstrap --prefix=/usr
这一步很关键,如果没有指定prefix,后面使用时会报错Could not find CMAKE_ROOT
5 make
6 sudo make install
yum remove cmake -y
ln -s /usr/local/bin/cmake /usr/bin/
cmake --version
check:
cmake --version
[root@localhost cmake-3.5.2]# sudo cmake --version
cmake version 3.5.2
cgal
http://www.cgal.org/download.html
git clone https://github.com/CGAL/cgal
cd cgal
git checkout releases/CGAL-4.8-branch
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/cgalhome ../
make -j 32 && sudo make install
wget https://codeload.github.com/json-c/json-c/tar.gz/json-c-0.12.1-20160607
tar zxf json-c-json-c-0.12.1-20160607
cd json-c-json-c-0.12.1-20160607/
./configure --prefix=/usr/local/json-c-0.13
make && sudo make install
cd ..
---不要
wget https://codeload.github.com/Oslandia/SFCGAL/zip/v1.3.6
unzip SFCGAL-1.3.0.zip
cd SFCGAL-1.3.0
sudo mkdir /usr/local/SFCGAL-1.3.6
sudo chown -R postgres.postgres /usr/local/SFCGAL-1.3.6
mkdir build
cd build
cmake ..
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/SFCGAL-1.3.6
make $$ sudo make install
cd ..
可以通过cmake -D CMAKE_INSTALL_PREFIX=/usr/local/SFCGAL-1.3.0 指定要安装的位置
默认安装在/usr/local
postgis 2.2.2
http://postgis.net/source/
库
sudo vim /etc/ld.so.conf
/ssd01/pg10/lib
/usr/local/geos/lib
/usr/local/proj5/lib
/usr/local/gdal/lib
/usr/local/cgalhome/lib
/usr/local/json-c-0.13/lib
/usr/local/SFCGAL-1.3.0/lib
sudo ldconfig
部署PostGIS
wget http://download.osgeo.org/postgis/source/postgis-2.2.2.tar.gz
wget http://download.osgeo.org/postgis/source/postgis-2.4.0.tar.gz
wget http://download.osgeo.org/postgis/source/postgis-2.5.0.tar.gz
sudo mkdir /dbgroup/postgis
sudo chown -R postgres.postrges /dbgroup/postgis
tar -zxvf postgis-2.4.0.tar.gz
cd postgis-2.4.0
./configure --prefix=/ssd01/postgis --with-gdalconfig=/usr/local/gdal/bin/gdal-config --with-pgconfig=/ssd01/pg10/bin/pg_config --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj5 --with-jsondir=/usr/local/json-c-0.13
make && sudo make install
安装好后,脚本位置
[postgres@cnsz92pl00192 postgis-2.5.0]$ls /ssd01/pg10/share/postgresql/contrib/postgis-2.5/
legacy_gist.sql postgis_upgrade.sql spatial_ref_sys.sql
legacy_minimal.sql raster_comments.sql topology_comments.sql
legacy.sql rtpostgis_for_extension.sql topology.sql
postgis_comments.sql rtpostgis_legacy.sql topology_upgrade.sql
postgis_for_extension.sql rtpostgis_proc_set_search_path.sql uninstall_legacy.sql
postgis_proc_set_search_path.sql rtpostgis.sql uninstall_postgis.sql
postgis_restore.pl rtpostgis_upgrade_for_extension.sql uninstall_rtpostgis.sql
postgis.sql rtpostgis_upgrade.sql uninstall_topology.sql
postgis_upgrade_for_extension.sql sfcgal_comments.sql
至此,完成postgis的安装
安装postgis插件
[postgres@localhost postgis-2.4.0]$ ls
aclocal.m4 configure.ac liblwgeom postgis_config.h.in
astyle.sh CONTRIBUTING.md libpgcommon postgis_svn_revision.h
authors.git COPYING libtool raster
authors.svn CREDITS LICENSE.TXT README.md
autogen.sh doc loader README.postgis
ChangeLog docker ltmain.sh regress
ci extensions macros spatial_ref_sys.sql
config.guess extras Makefile STYLE
config.log fuzzers MIGRATION TODO
config.status GNUmakefile NEWS topology
config.sub GNUmakefile.in postgis utils
configure install-sh postgis_config.h Version.config
cd extensions
cd postgis
sudo make clean
sudo make
sudo make install
cd ..
cd postgis_topology
sudo make clean
sudo make
sudo make install
cd ..
cd postgis_sfcgal
sudo make clean
sudo make
sudo make install
cd ..
cd address_standardizer
sudo make clean
sudo make
sudo make install
cd ..
cd postgis_tiger_geocoder
sudo make clean
sudo make
sudo make install
cd ..
4.创建postgis数据库
1) 启动postgresql数据库
2) 切换到postgres用户
#su - postgres
3) 创建数据库postgis
$createdb postgis
[postgres@localhost soft]$ psql -h 127.0.0.1
psql (10.3)
Type "help" for help.
postgres=# create database postgis;
CREATE DATABASE
postgis=# select name,default_version from pg_available_extensions where name like '%gis%';
name | default_version
------------------------+-----------------
postgis_tiger_geocoder | 2.4.0
postgis | 2.4.0
btree_gist | 1.5
postgis_topology | 2.4.0
此时的postgis数据库只是一个普通的一个postgresql数据库,并没有用户表。
安装插件
create extension pg_stat_statements;
create extension postgis;
create extension fuzzystrmatch;
create extension postgis_tiger_geocoder;
create extension postgis_topology;
---以下部分pg10后可以不用看
4) 创建postgis空间数据库
postgis空间数据库由一系列的postgis函数、数据类型、触发器等构成。
postgis空间数据库的脚本路径为:/usr/local/pgsql9.6rc1/share/contrib/postgis-2.2/postgis.sql
执行以下命令,在postgis数据库上创建postgis的函数、数据类型等资源
psql -d postgis -U postgres -f /usr/local/pgsql9.6rc1/share/contrib/postgis-2.2/postgis.sql
可以看出postgis创建了一系列的函数
5) 创建postgis空间数据库的空间参考表
postgis空间数据库的空间参考表脚本路径为:/usr/local/pgsql/share/contrib/postgis-2.2/spatial_ref_sys.sql
psql -d postgis -U postgres -f /usr/local/pgsql9.6rc1/share/contrib/postgis-2.2/spatial_ref_sys.sql
该命令在postgis数据库中创建了spatial_ref_sys表,用于存放空间投影信息。
安装两个不同的geos版本,安装gis出错
./psql -s -d template1 -f /usr/local/pgsql/share/contrib/postgis-2-3.0/postgis.sql
通过查看
[postgres@seven ~]$ sudo ldd /usr/local/pgsql9.6/lib/postgis-2.3.so
linux-vdso.so.1 => (0x00007fffdc5e0000)
libgeos_c.so.1 => /usr/local/geos/lib/libgeos_c.so.1 (0x00007f2f3705c000)
libproj.so.9 => /usr/local/proj4/lib/libproj.so.9 (0x00007f2f36dfe000)
libjson-c.so.2 => /usr/local/json-c-0.12/lib/libjson-c.so.2 (0x00007f2f36bf3000)
libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f2f36889000)
libm.so.6 => /lib64/libm.so.6 (0x00007f2f36586000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2f361c4000)
libgeos-3.5.0.so => /usr/local/geos/lib/libgeos-3.5.0.so (0x00007f2f35e1e000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f2f35b15000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f2f358ff000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2f356e3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2f354de000)
libz.so.1 => /lib64/libz.so.1 (0x00007f2f352c8000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f2f350a3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2f37559000)
http://postgis-users.postgis.refractions.narkive.com/8QpJWt4u/error-could-not-load-library-usr-local-pgsql-lib-postgis-1-5-so
查询版本,
rpm -qa¦grep geos
卸载
sudo yum remove geos查询版本,
rpm -qa¦grep geos
卸载
sudo yum remove geos
[postgres@seven extensions]$ psql -d postgis
psql (9.6rc1)
Type "help" for help.
postgis=# \d
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+----------
public | geography_columns | view | postgres
public | geometry_columns | view | postgres
public | spatial_ref_sys | table | postgres
(3 rows)
环境变量设置
cat /home/postgres/.psqlrc
\set PROMPT1 '%n@%/ :'
\set HISTFILE ~/history-:DBNAME
\timing on
[postgres@seven extensions]$ psql -d postgis
Timing is on.
psql (9.6rc1)
Type "help" for help.
postgres@postgis :
至此,完成postgis空间数据库的创建。现在就可以向postgis数据库中导入shape图层文件,进行空间查询等
操作。
postgres@postgis :SELECT name, default_version,installed_version
postgis-# FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
name | default_version | installed_version
------------------------------+-----------------+-------------------
postgis | 2.2.2 |
postgis_tiger_geocoder | 2.2.2 |
address_standardizer | 2.2.2 |
address_standardizer_data_us | 2.2.2 |
postgis_topology | 2.2.2 |
(5 rows)
Time: 61.669 ms