https://jimolonely.github.io/tech/linux/install-postgis-kylin/

接着上一篇在麒麟linux上安装Postgresql12.5 ,我们来安装 PostGIS插件。

方案

因为 PostgreSQL不是通过 rpm包安装的,所以即便 PostGIS有现成的rpm包,也无法使用(需要引用 PG的包)。

所以,我们还是采用源码编译的方式。

下载PostGIS源码

我们选择的版本是3.0.5, 如果是不同版本,那么后面他所依赖的东西可能略有差别。

下载地址: http://postgis.net/stuff/postgis-3.0.5.tar.gz

编译过程

运行

./configure

报错

configure: error: could not find geos-config within the current path.
You may need to try re-running configure with a --with-geosconfig parameter.

报差错原因是缺少 geos依赖, 那就安装geos

yum install geos geos-devel

再运行./configure发现报错

configure: error: could not find proj.h or proj_api.h -
you may need to specify the directory of a PROJ installation using --with-projdir

报差错原因是缺少 proj依赖,那就安装

yum install proj proj-devel

再次运行,还报错:

configure: error: gdal-config not found.
Use --without-raster or try --with-gdalconfig=<path to gdal-config>

这个报错是PostGIS需要gdal,关于gdalPostGIS用来操作栅格数据. 在文档 中,gdal需要的版本是2+.

GDAL, version 2+ is required 3+ is preferred. This is required for raster support. http://trac.osgeo.org/gdal/wiki/DownloadSource.

gdal源码安装

首先肯定想到有没有现成的 gdal安装包,可惜没找到合适的,那还是源码安装吧。

经过我几次尝试,发现 2.0版本根本无法编译,而2.3,2.4版本需要 proj 6以上的版本,而我们上面安装的是proj 4版本,最终确定2.1.4版本是可以编译的。

下面是编译过程。

下载源码:http://download.osgeo.org/gdal/2.1.4/gdal214.zip

解压到某个路径下。

编译gdal源码,运行

make

这个过程持续了挺长时间,大约20分钟,最终成功后输出.

然后安装gdal,运行

make install

成功后输出如下,提示安装在 /usr/local/lib

接着PostGIS编译

再运行PostGISconfigure

运行成功,得到下面的信息:

PostGIS is now configured for aarch64-unknown-linux-gnu

-------------- Compiler Info -------------
C compiler: gcc -std=gnu99 -g -O2 -fno-math-errno -fno-signed-zeros
CPPFLAGS: -I/usr/include -I/usr/include/libxml2
SQL preprocessor: /usr/bin/cpp -traditional-cpp -w -P -------------- Additional Info -------------
Interrupt Tests: DISABLED use: --with-interrupt-tests to enable -------------- Dependencies --------------
GEOS config: /usr/bin/geos-config
GEOS version: 3.6.1
GDAL config: /usr/local/bin/gdal-config
GDAL version: 2.1.4
PostgreSQL config: /usr/local/pgsql/bin/pg_config
PostgreSQL version: PostgreSQL 12.5
PROJ4 version: 49
Libxml2 config: /usr/bin/xml2-config
Libxml2 version: 2.9.10
JSON-C support: no
protobuf support: no
PCRE support: yes
Perl: /usr/bin/perl
Wagyu: no --------------- Extensions ---------------
PostGIS Raster: enabled
PostGIS Topology: enabled
SFCGAL support: disabled
Address Standardizer support: enabled -------- Documentation Generation --------
xsltproc: /usr/bin/xsltproc
xsl style sheets: /usr/share/sgml/docbook/xsl-stylesheets
dblatex:
convert:
mathml2.dtd: http://www.w3.org/Math/DTD/mathml2/mathml2.dtd configure: WARNING: --------- GEOS VERSION WARNING ------------
configure: WARNING: You are building against GEOS 3.6.1.
configure: WARNING:
configure: WARNING: To take advantage of _all_ the features of
configure: WARNING: PostGIS, GEOS 3.7.0 or higher is required.
configure: WARNING:
configure: WARNING: For _most_ features, GEOS 3.6.0 is enough.
configure: WARNING:
configure: WARNING: We recommend GEOS 3.7.0 or higher
configure: WARNING:
configure: WARNING: You can download the latest versions from
configure: WARNING: http://geos.osgeo.org/
configure: WARNING:

发现检查没问题后,就基本上离成功不远了。

开始编译postgis源码,运行

make

几分钟后,编译成功,输出

然后运行安装命令

make install

安装很快。

验证

结束后,我们来验证下。

查看下版本,没问题。

建张表,做个简单的空间查询。

postgres=# create table testg ( id int, geom geometry );
CREATE TABLE
postgres=# insert into testg values (1, ST_GeomFromText('point(116 39)'));
INSERT 0 1
postgres=# select st_astext(geom) from testg where ST_Intersects(ST_GeomFromText('POLYGON((116 39, 116.1 39, 116.1 39.1, 116 39.1, 116 39))'), geom);
st_astext
---------------
POINT(116 39)
(1 row)

[转帖]在麒麟Linux安装Postgis的更多相关文章

  1. 0级搭建类004-中标麒麟 Linux 安装 (V7.0) 公开

    项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...

  2. [zz] 安装PostGIS(Linux篇)

    0.安装PostgreSQL数据库 参考安装PostgreSQL数据库(Linux篇). 1.安装proj4 #tar zxvf proj-4.8.0.tar.gz#cd proj-4.8.0#./c ...

  3. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (一) 安装dotnet core

    背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在win ...

  4. PostgreSQL 之 yum安装 postgis 插件

    版本说明: CentOS7.5 + PostgreSQL 10.5 参考资源: https://www.postgresql.org/download/linux/redhat/ http://dow ...

  5. (转帖整理)Linux下的Autoconf和AutoMake(理论篇) 1

    在搜索网上资料过程中,这是感觉最简洁有效的一篇文章,特进行转帖记录,并根据情况对部分内容进行了修改.原帖传送门:Linux下的Autoconf和AutoMake 1.工具安装在开始使用autoconf ...

  6. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (二) 部署运行控制台项目

    背景 在上一篇文章安装dotnet core,已经安装好dotnet core了.之前只是安装成功了dotnet, 输入dotnet --info,可以确认安装成功了,但是在运行代码时,还是报错了,本 ...

  7. 搜狗输入法linux安装 以及 12个依赖包下载链接分享

    搜狗输入法linux安装版,先安装各种依赖包,大概12个依赖,可能中途还需要其他依赖,可以效仿解决依赖问题.如图这12个文件要是手动点击下载,那也太笨点了,我们要用shell命令批量下载.命令如下:w ...

  8. linux安装php

    接上篇:linux安装apache 一.安装php 先安装libxml2库 [root@ctxsdhy package]# yum -y install libxml2-devel 最新地址在:htt ...

  9. linux安装oracle11g

    准备oracle安装文件 Oracle11gR2包含两个文件linux_11gR2_database_1of2.zip和linux_11gR2_database_2of2.zip,将这两个文件通过SS ...

  10. TODO:Linux安装PHP MongoDB驱动

    TODO:Linux安装PHP MongoDB驱动 PHP利于学习,使用广泛,主要适用于Web开发领域. MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统 ...

随机推荐

  1. JS模块化编程规范1——require.js

    目录 1. 概述 2. 详论 2.1. 定义 2.2. 调用 2.3. 入口 3. 结果 4. 参考 1. 概述 require.js是各种网络APP中非常常见的JS依赖库,它其实不仅仅是个模块加载器 ...

  2. Java 将PDF转为OFD

    OFD格式一种国产文件格式,在一些对文档格式有着严格的企业中用得比较多.下面,通过Java程序展示如何将PDF文件转为OFD格式. 代码思路:加载PDF源文档,调用Spire.Pdf.jar提供的sa ...

  3. 想了解Webpack,看这篇就够了

    摘要:Webpack是一种前端资源构建工具,一个静态模块打包器. 1. 摘要 Webpack是一种前端资源构建工具,一个静态模块打包器.在Webpack看来,前端的所有资源文件(js/json/css ...

  4. 再获殊荣!华为云GaussDB喜提“科技进步一等奖”

    摘要:近日,中国电子学会科学技术奖励大会颁发了2021-2022年度中国电子学会科学技术奖获奖项目,华为云主导的"GaussDB智能云原生分布式数据库"项目荣获"科技进步 ...

  5. 聊聊LiteOS事件模块的结构体、初始化及常用操作

    摘要:本文通过分析LiteOS事件模块的源码,深入掌握事件的使用. 事件(Event)是一种任务间通信的机制,可用于任务间的同步.多任务环境下,任务之间往往需要同步操作,一个等待即是一个同步.事件可以 ...

  6. ISO/IEC 5055:软件代码质量的标尺

    摘要:ISO 5055是首个直接从软件内部结构方面衡量软件质量(如安全性和可靠性)的ISO标准.该标准基于统计安全性.可靠性.可维护性和性能效率方面的软件缺陷来衡量软件的结构质量. 本文分享自华为云社 ...

  7. 实例讲解将Graph Explorer搬上JupyterLab

    摘要:基于 Graph Explorer 在 Jupyter 上进行图探索,可以大大降低编码成本,丰富 JupyterLab 的数据表现力. 本文分享自华为云社区<将 Graph Explore ...

  8. 3-3 vector 和 迭代器

    1 vector 容器vector可以理解为变长数组,它里面放的是相同类型的元素. vector<int> vec={1,2,3,4};//拷贝构造 vector<string> ...

  9. 【k8s】基本原理学习

    k8s基本原理 https://www.cnblogs.com/BlueBlueSea/p/16908601.html 深入理解Kubernetes网络 深入理解Kubernetes的pod网络 参考 ...

  10. POJ2965 The Pilots Brothers' refrigerator (精妙方法秒杀DFS BFS)

    这道题和算法进阶指南的一道题解法一样,必须另操作为奇数.见证明过程 证明:要使一个为'+'的符号变为'-',必须其相应的行和列的操作数为奇数;可以证明,如果'+'位置对应的行和列上每一个位置都进行一次 ...