GIS-postgis 安装
Posted 山人在山上
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIS-postgis 安装相关的知识,希望对你有一定的参考价值。
最佳搭配:https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS
我将扩展放在pg的安装目录下 home/postgres/pgsql/other_lib/包名
1、Proj前置安装【Sqlite有版本要求】
注意:请确保sqlite3 版本大于3.11,如果高于此版本跳过
sqlite-autoconf-3390200.tar
1、源码解压并且进入目录【不要删除后面扩展插件会用到,如果删除还要重新./configure】
2、./configure --prefix=/usr/local
3、make && make install
4、mv /usr/bin/sqlite3 /usr/bin/sqlite3_old【不要以前的】
5、ls -l /usr/local/lib/*sqlite*
6、ls -l /usr/local/include/*sqlite*
7、ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
8、echo "/usr/local/bin" > /etc/ld.so.conf.d/sqlite3.conf 【加载新安装的】
9、echo "/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf 【加载新安装的】
10、export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" 【配置】
11、ldconfig【重新加载】
2、Proj安装
Proj投影库用于在PostGIS中提供坐标投影支持。
【sqlite3、libtiff、libcurl-devel 这些包不确定】
1、解压安装 proj-8.0.0.tar.gz文件
2、tar -zxvf proj-8.0.0.tar.gz
3、cd proj-8.0.0
4、./configure --prefix=/home/postgres/pgsql/other_lib/proj8 --without-curl
5、make && make install
3、geos前置安装【cmake有版本要求】
cmake-3.23.3-linux-x86_64.tar.gz
- tar -zxvf cmake-3.23.3-linux-x86_64.tar.gz
- Cd cmake-3.23.3-linux-x86_64
- ln -s bin/cmake /usr/bin/cmake 创建软链接
- cmake -version 测试
- geos正式安装
Geos几何图形库,用于支持PostGIS中的几何信息处理,分析等功能,野可以直接认为geos是一个几何算法库
- tar -jxvf geos-3.10.2.tar.bz2
- cd geos-3.10.2
- ./configure --prefix=/home/postgres/pgsql/other_lib/geos3
- make && make install
- libxml前置安装
1、在线yum -y install python-devel
2、离线 python-devel-2.7.5.rpm
3、yum update python
4、yum -y update
5、yum -y install yum-utils
6、yum -y groupinstall development
7、yum update python 【可能python版本尤其问题请更新】
6、libxml安装
当前用于某些导入功能(st_geomfromGML和st_geomFromKML)
- tar -zxvf libxml2-2.9.12.tar.gz
- cd libxml2-2.9.12
- ./configure --prefix=/home/postgres/pgsql/other_lib/libxml2
- make && make install
- Json-c安装-旧版本 【14之前】
当前用于通过功能ST_GeomFromGeoJson导入GeoJson数据
- tar -zxvf json-c-0.13.1-20180305.tar.gz
- cd json-c-json-c-0.13.1-20180305/
- ./configure --prefix=/home/postgres/pgsql/other_lib/json-c
- make && make install
- Json-c安装-新版本【待续】
- Gdal安装
用于PostGIS对栅格数据的支持
注意:这里对proj有版本要求【本机自带、后期安装】,导致不识别,所以编译请指定你上面安装的proj的安装路径
- tar -zxvf gdal-3.5.0rc1.tar.gz
- cd gdal-3.5.0
- ./configure --prefix=/home/postgres/pgsql/other_lib/gdal --with-proj=/home/postgres/pgsql/other_lib/proj8 此处指定proj安装路
- make && make install
- postgis 安装
- 配置etc/ld.so.conf 指向前面安装目录下的lib
include /home/postgres/pgsql/lib
include /home/postgres/pgsql/other_lib/gdal/lib
include /home/postgres/pgsql/other_lib/geos3/lib64
include /home/postgres/pgsql/other_lib/json-c/lib
include /home/postgres/pgsql/other_lib/libxml2/lib
include /home/postgres/pgsql/other_lib/proj8/lib
echo "/home/postgres/pgsql/lib" > /etc/ld.so.conf.d/postgresql.conf
echo "/home/postgres/pgsql/other_lib/gdal/lib">/etc/ld.so.conf.d/gdal.conf
echo "/home/postgres/pgsql/other_lib/proj8/lib" > /etc/ld.so.conf.d/proj.conf
echo "/home/postgres/pgsql/other_lib/geos3/lib64" > /etc/ld.so.conf.d/geos.conf
echo "/home/postgres/pgsql/other_lib/libxml2/lib" > /etc/ld.so.conf.d/libxml2.conf
echo "/home/postgres/pgsql/other_lib/json-c/lib" >/etc/ld.so.conf.d/json-c.conf
- ldconfig
- tar -zxvf postgis-3.2.1.tar.gz
- ./configure --with-pgconfig=/home/postgres/pgsql/bin/pg_config --with-geosconfig=/home/postgres/pgsql/other_lib/geos3/bin/geos-config --with-gdalconfig=/home/postgres/pgsql/other_lib/gdal/bin/gdal-config --with-projdir=/home/postgres/pgsql/other_lib/proj8 --with-jsondir=/home/postgres/pgsql/other_lib/json-c --with-xml2config=/home/postgres/pgsql/other_lib/libxml2/bin/xml2-config --without-protobuf 忽略这个配置如果不忽略会报错
- Cd /home/postgres/pgsql/bin
- 执行 ./psql
- 开始执行扩展语句
A、CREATE EXTENSION postgis;
B、CREATE EXTENSION fuzzystrmatch;
注意:这里可能会出现错误 类似fuzzystrmatch 找不到
请进入postgresql 源码下
/home/postgres/postgres+gis相关14/postgresql-14.2/contrib/fuzzystrmatch
执行 make && make install
若果源码被删除请重新解压并./configure
C、CREATE EXTENSION postgis_tiger_geocoder;
D、CREATE EXTENSION address_standardizer;
E、CREATE EXTENSION postgis_topology;
注意:proj、json-c 指向的都是生成的安装目录,其余的都是bin下的配置文件
注意:新建数据库 要执行上面五条语句才能导入shap
11、protobuf安装 未完成验证
1、wget https://github.com/protocolbuffers/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
2、tar zxvf protobuf-2.6.1.tar.gz
3、cd protobuf-2.6.1
4、./configure --prefix=/usr/local/protobuf
5、make && make install
export PATH=/usr/local/protobuf/bin:$PATH
分清全局安装与本地安装
参考技术A 分清全局安装与本地安装npm 包管理工具-分清全局安装与本地安装
四、npm 包管理工具
4.1 分清全局安装与本地安装
刚学习 npm 的时候,官方教程在介绍 -g 参数时是这么描述的:“加上 -g
参数是全局安装,否则本地安装”。这种说话说一半的感觉真的很让人讨厌,什么是全局什么是本地完全没有介绍。以至于后来很长一段时间才搞明白这个概念。虽然是个小知识点,但我觉得有必要在学习模块安装之前先介绍一下。
1. 全局安装和本地安装都安装到了哪?
官方文档:使用 -g 安装的模块为全局安装,否则为本地安装。
使用 -g 安装全局模块
$ npm install express -g
不使用 -g 安装本地模块
$ npm install path
那么问题来了,全局模块和本地模块都安装到哪了?
全局模块安装路径
// 输入指令查询全局模块安装路径$ npmlist-g --depth=0
查询全局模块安装路径
本地模块安装路径
本地模块安装路径
本地模块安装在当前目录下的 node_modules 目录下。
以上图为例:安装本地模块的当前目录是 D:\code,那么在该目录下会自动创建 node_modules 目录(如果之前有这个目录就不会创建了),在 node_modules 目录下就可以找到刚才安装的 path 模块了。
2. 全局安装和本地安装的包有啥区别?
我们将一些包全局安装,另一些包本地安装,二者有什么区别呢?
官方的解释是:
全局安装的包直接安装到计算机中,只需安装一次,以后在计算机的任何位置都可以使用这个包;
看本地安装包安装到哪儿可以知道本地包是安装在当前目录下的,也就是说,只有在当前目录下才可以使用安装的本地包。比如上面贴的图片中安装的本地包 path,只有在 D:\code 目录下才能使用这个包,换做其它任何目录是不能使用它。
全局安装与本地安装
总结:全局安装安装一次重复使用,本地安装使用什么安装什么。
3. 哪些包我应该全局安装,哪些包又应该本地安装?
既然全局安装安装一次就可以重复使用,那么干嘛不是所有包都使用全局安装呢?
回答上面那个问题之前,先来解释下另一个问题:哪些包应该全局安装?
约定俗成的,对于那些提供命令行工具的包进行全局安装,其它包本地安装。
举例说明:
安装 dva-cli 包
$ npm install dva-cli -g
使用命令行工具输入指令 dva new 创建 dva 脚手架
$ dvanewdva-demo
像这种能提供指令的包通常进行全局安装
安装 eslint 包
$ npm install eslint -g
使用指令 --init 设置一个配置文件
$ eslint --init
像这种能提供指令的包通常进行全局安装
总结:不用管上面两个案例的指令具体是什么,只要提供指令的包都建议使用全局安装;其它包打包是提供一个功能,用于解决某一需求,建议安装成本地包。
你可能还会困惑,我刚开始学习 npm 还不知道哪些包是否提供指令,应该怎么办?没有关系,不知道的全部安装成本地包,在实践中如果发现这个包提供指令,也可以使用后面章节会提到的卸载包,再重新进行全局安装即可。
以上是关于GIS-postgis 安装的主要内容,如果未能解决你的问题,请参考以下文章