博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RedHat7下PostGIS源码安装
阅读量:6514 次
发布时间:2019-06-24

本文共 4293 字,大约阅读时间需要 14 分钟。

本文介绍在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.1postgresql-devel.x86_64         9.2.13-1.1postgresql-libs.x86_64          9.2.13-1.1postgresql-server.x86_64        9.2.13-1.1libxml2                         2.9.1-6libxml2-devel.x86_64            2.9.1-6

然后切换到postgres账户。

$ sudo su postgrespostgres $

1.2 初始化PostgreSQL

确认PostgreSQL数据目录。

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

执行初始化操作。

postgres $ initdb

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

1.3 启动PostgreSQL

使用pg_ctl启动PostgreSQL。

postgres $ pg_ctl start

使用psql客户端连接。

postgres $ psqlpsql (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保持兼容。

兼容信息可以查看:

$ 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.confinclude 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_postgispostgres $ psql -f /usr/share/pgsql/contrib/postgis-2.2/rtpostgis.sql -d template_postgis# 验证空间数据库版本postgres $ psql template_postgispsql (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使用手册:

参考资料

  • Linux环境下源码安装PostgreSQL+PostGIS:
  • 空间索引 - 各数据库空间索引使用报告:
  • PostgreSQL+PostGIS 的使用:
  • 空间索引(GiST、BRIN、R-Tree)选择、优化 - 阿里云RDS PostgreSQL最佳实践:

转载地址:http://gfofo.baihongyu.com/

你可能感兴趣的文章
加强Eclipse代码自动提示的方法
查看>>
GNS3-地址重叠环境中部署IPsec
查看>>
exchange online 用户疑问之许可证和用户数据归档
查看>>
QImage Mat IplImage 之间的相互转换
查看>>
使用eclipse与android studio 在开发自定义控件时的区别
查看>>
我的友情链接
查看>>
mysql学习笔记
查看>>
django 问题解决
查看>>
年年有鱼游戏Android源码项目
查看>>
java使用Iterator、for循环同步数据
查看>>
创建镜像iso文件
查看>>
Linux下创建软RAID5和RAID10实战
查看>>
C++类的存储
查看>>
ActiveReports 报表应用教程 (8)---交互式报表之动态过滤
查看>>
解决使用Handler时Can't create handler inside thread that has not called Looper.prepare()
查看>>
跟我一起学docker(四)--容器的基本操作
查看>>
磁化强度
查看>>
C/C++ 数据范围
查看>>
LVS+keepalived+nginx
查看>>
monkey如何通过uiautomatorviewer的bounds坐标点击控件
查看>>