专栏首页技术点滴RedHat7下PostGIS源码安装

RedHat7下PostGIS源码安装

本文介绍在RedHat7环境下安装使用PostGIS的流程。

1. PostgreSQL

1.1 yum安装PostgreSQL

这个比较简单,直接使用yum安装即可。

$ sudo yum install -y postgresql-server postgresql-devel libxml2 libxml2-devel

顺便安装postgresql-devel、libxml2-devel,后边编译安装PostGIS会用到。

postgresql.x86_64               9.2.13-1.1
postgresql-devel.x86_64         9.2.13-1.1
postgresql-libs.x86_64          9.2.13-1.1
postgresql-server.x86_64        9.2.13-1.1
libxml2                         2.9.1-6
libxml2-devel.x86_64            2.9.1-6

然后切换到postgres账户。

$ sudo su postgres
postgres $ 

1.2 初始化PostgreSQL

确认PostgreSQL数据目录。

postgres $ cat /var/lib/pgsql/.bash_profile
[ -f /etc/profile ] && source /etc/profile

PGDATA=/var/lib/pgsql/data
export PGDATA

执行初始化操作。

postgres $ initdb

目录/var/lib/pgsql/data下存储了PostgreSQL的所有数据文件和配置。

1.3 启动PostgreSQL

使用pg_ctl启动PostgreSQL。

postgres $ pg_ctl start

使用psql客户端连接。

postgres $ psql
psql (9.2.13)
输入 "help" 来获取帮助信息.

postgres=# \l
                                         资料库列表
       名称       |  拥有者  | 字元编码 |  校对规则   |    Ctype    |       存取权限        
------------------+----------+----------+-------------+-------------+-----------------------
 postgres         | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0        | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
                  |          |          |             |             | postgres=CTc/postgres
 template1        | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
                  |          |          |             |             | postgres=CTc/postgres

2. PostGIS

2.1 准备源码包

准备gdal、proj、geos和postgis的源码包,postgis版本注意和postgresql保持兼容。

兼容信息可以查看: http://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

$ wget http://download.osgeo.org/gdal/2.2.3/gdal-2.2.3.tar.gz
$ wget http://download.osgeo.org/proj/proj-4.8.0.tar.gz
$ wget http://download.osgeo.org/geos/geos-3.3.3.tar.bz2
$ wget http://download.osgeo.org/postgis/source/postgis-2.2.6.tar.gz

2.2 解压编译安装gdal、proj、geos和postgis

依次解压、编译、安装以上软件包。

$ tar xf gdal-2.2.3.tar.gz && cd gdal-2.2.3 && ./configure --prefix=/usr/local/gdal && make && sudo make install
$ tar xf proj-4.8.0.tar.gz && cd proj-4.8.0 && ./configure --prefix=/usr/local/proj && make && sudo make install
$ tar xf geos-3.3.3.tar.bz2 && cd geos-3.3.3 && ./configure --prefix=/usr/local/geos && make && sudo make install
$ tar xf postgis-2.2.6.tar.gz && cd postgis-2.2.6 && ./configure -prefix=/usr/local/postgis --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj --with-gdalconfig=/usr/local/gdal/bin/gdal-config && make && sudo make install

2.3 配置ldconfig

将gdal、proj、geos的lib目录添加到ldconfig。

$ sudo cat /etc/ld.so.conf
include ld.so.conf.d/*.conf

/usr/local/gdal/lib/
/usr/local/proj/lib/
/usr/local/geos/lib/

$ sudo ldconfig

2.4 创建空间数据库模板

# 创建无空间特性数据库
postgres $ createdb template_postgis

# 创建相关空间数据库相关的函数,类型,操作符等
postgres $ psql -f /usr/share/pgsql/contrib/postgis-2.2/postgis.sql -d template_postgis
postgres $ psql -f /usr/share/pgsql/contrib/postgis-2.2/rtpostgis.sql -d template_postgis

# 验证空间数据库版本
postgres $ psql template_postgis
psql (9.2.13)
输入 "help" 来获取帮助信息.

template_postgis=# select postgis_full_version(); 
                                                            postgis_full_version                                                             
---------------------------------------------------------------------------------------------------------------------------------------------
 POSTGIS="2.2.6 r16006" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 2.2.3, released 2017/11/20" LIBXML="2.9.1" RASTER
(1 行记录)

template_postgis=# \d
                     关联列表
 架构模式 |       名称        |  型别  |  拥有者  
----------+-------------------+--------+----------
 public   | geography_columns | 视观表 | postgres
 public   | geometry_columns  | 视观表 | postgres
 public   | raster_columns    | 视观表 | postgres
 public   | raster_overviews  | 视观表 | postgres
 public   | spatial_ref_sys   | 资料表 | postgres
(5 行记录)

2.5 根据空间数据库模板创建新的空间数据库

postgres $ createdb -T template_postgis new_database

3. 简单测试

测试点(0, 0)是否在指定的多边形内。

new_database=# select ST_Within(ST_GeomFromText('POINT(0 0)', 4326), ST_GeomFromText('POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))', 4326)) ;
 st_within 
-----------
 t
(1 行记录)

详细语法规则可以参考PostGis使用手册:http://www.postgres.cn/docs/PostGis-2.2.0dev_Manual.pdf

参考资料

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RedHat7下PostGIS源码安装

    顺便安装postgresql-devel、libxml2-devel,后边编译安装PostGIS会用到。

    Florian
  • 策略模式(Strategy)

    策略模式(Strategy) 策略模式(Strategy)[Policy] 意图:定义一系列算法,把他们封装起来,并且使他们可以相互替换,使算法可以独立于使用它...

    Florian
  • Windows文件操作基础代码

    Windows文件操作基础代码     Windows下对文件进行操作使用的一段基础代码File.h,首先是File类定义: #pragma once #inc...

    Florian
  • RedHat7下PostGIS源码安装

    顺便安装postgresql-devel、libxml2-devel,后边编译安装PostGIS会用到。

    Florian
  • 【2020HBU天梯赛训练】7-37 玩转二叉树

    给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相...

    韩旭051
  • 5929 亲戚

    题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规...

    attack
  • .NET Core 3.0之深入源码理解Kestrel的集成与应用(二)

    前一篇文章主要介绍了.NET Core继承Kestrel的目的、运行方式以及相关的使用,接下来将进一步从源码角度探讨.NET Core 3.0中关于Kestre...

    Edison.Ma
  • 环形缓冲区-Hadoop Shuffle过程中的利器

    这篇文章来自一个读者在面试过程中的一个问题,Hadoop在shuffle过程中使用了一个数据结构-环形缓冲区。

    王知无
  • 微信跳一跳技术手段高分秘籍:不仅可以用 Python 刷分,竟然还可以直接改分

    如果你每次都能挑到各自的正中间的话,可以 + 2 分,如果连着跳到中间会 + 4、+6、+8、+10…… 跳到污水井盖上面,停留 2 秒,等到下水道声音响起直接...

    企鹅号小编
  • 39. channel管道 | 厚土Go学习笔记

    channel 是有类型的管道,channel 的操作符是 <- ,可以用来发送或接收值。 ch <- v //赋值给管道,管道接收值 v := <- c...

    李海彬

扫码关注云+社区

领取腾讯云代金券