OpenGauss 데이터베이스 PostGIS 설치 및 사용

목차

 

개요

1. PostGIS 설치

1.1 GCC-7.3 컴파일러 설치

1.2PostGIS 종속 라이브러리 설치

1.3 Postgis 설치

2. 확장 프로그램 사용

2.1 PostGIS 확장 생성

2.2 확장 기능 사용

2.3 확장 프로그램 삭제


 

개요

PostGIS Extension은 PostgreSQL의 공간 데이터베이스 확장으로 공간 객체, 공간 인덱스, 공간 연산 함수 및 공간 연산자와 같은 공간 정보 서비스 기능을 제공합니다. PostGIS Extension은 OpenGIS 사양을 완전히 따릅니다. openGauss는 별도로 설치해야 하는 PostGIS Extension(버전 PostGIS-2.4.2) 을 제공 합니다.

1. PostGIS 설치

환경 정보: Centos 7.6 + openGauss 3.1.0 Minimal Edition

일부 종속 패키지를 다운로드하려면 환경을 인터넷에 연결해야 합니다.

1.1 GCC-7.3 컴파일러 설치

PostGIS 설치는 GCC-7.3 컴파일러 ( GNU Compiler Suite ) 에 의존합니다 . GCC-7.3 컴파일러가 데이터베이스 인스턴스에 이미 설치된 경우 이 단계를 바로 건너뛸 수 있습니다. 내 로컬 환경은 4.8.5이며 업그레이드가 필요합니다.

 

GCC-7.3 컴파일러는 소스 코드를 사용하여 gcc 및 g++ 컴파일러의 하위 버전에서 업그레이드 및 설치하는 것이 좋습니다. 데이터베이스 인스턴스에 하위 버전의 gcc 및 g++ 컴파일러가 없는 경우 운영 체제 이미지 등을 마운트하여 설치할 수 있으므로 여기서는 설명하지 않습니다.

 

wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz 

[omm@openGhostxx gcc-7.3.0]$ tar -zxvf gcc-7.3.0.tar.gz

[omm@openGhostxx packages]$ cd gcc-7.3.0

[omm@openGhostxx gcc-7.3.0]$ ./contrib/download_prerequisites

이 단계에서는 일부 종속성을 다운로드하며 인터넷에 연결되어 있는지 확인해야 합니다.

./configure --prefix=/usr/local/gcc-7.3.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib --disable-libsanitizer --disable-libcilkrts

 

그런 다음 make는 오랜 시간이 걸릴 것입니다.

만들다   

설치하다

완료 후 나중에 사용할 설치 디렉터리가 프롬프트됩니다.

 

환경 변수를 설정하십시오. 그렇지 않으면 gcc -v가 여전히 이전 버전입니다.

vim 편집기에서 ~/.bashrc 파일을 엽니다.

vi ~/.bashrc

다음 내용 을 추가 하고 상황에 따라 실제 경로를 이전 make install의 경로로 바꿉니다.

export CC=/usr/local/gcc-7.3.0/bin/gcc

export CXX=/usr/local/gcc-7.3.0/bin/g++

export LD_LIBRARY_PATH=/usr/local/gcc-7.3.0/lib/../lib64:$LD_LIBRARY_PATH

export PATH=/usr/local/gcc-7.3.0/bin:$PATH

그러면 소스가 적용됩니다.

소스 ~/.bashrc

마지막 확인

 

 

1.2PostGIS 종속 라이브러리 설치

  1. Postgis 플러그인 패키지를 다운로드하고 압축을 풀고 이름을 바꿉니다.
​
[omm@openGhostxx ~]$ cd $GAUSSHOME/

[omm@openGhostxx openGauss]$ wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz

[omm@openGhostxx openGauss]$ tar -zxvf postgis-xc-master-2020-09-17.tar.gz

[omm@openGhostxx openGauss]$ mv postgis-xc-master postgis-xc/

​

 

2. 패치 파일을 $GAUSSHOME/postgis-xc/ 디렉토리에 다운로드하고 패치를 입력합니다.

다운로드 경로: gpl_dependency/postgis/postgis_2.4.2-2.patch · openGauss/openGauss-third_party - Gitee.com

cd $GAUSSHOME/postgis-xc/

[omm@openGhostxx postgis-xc]$ patch -p1 < $GAUSSHOME/postgis_2.4.2-2.patch

patching file gdal-1.11.0/frmts/postgisraster/postgisraster.h

patching file gdal-1.11.0/ogr/ogrsf_frmts/pg/ogr_pg.h

patching file gdal-1.11.0/ogr/ogrsf_frmts/pg/ogrpgutility.h

patching file postgis-2.4.2/configure

patching file postgis-2.4.2/postgis--2.4.2.sql

patching file postgis-2.4.2/postgis_svn_revision.h

patching file postgis-2.4.2/raster/rt_pg/rtpostgis.c

patching file postgis-2.4.2/topology/Makefile.in

patching file postgis-2.4.2/topology/postgis_topology.c

patching file postgis-2.4.2/topology/sql/topogeometry/totopogeom.sql.in

patching file postgis-2.4.2/topology/sql/topogeometry/type.sql.in

patching file postgis-2.4.2/topology/topology.sql.in

3. 웹사이트 https://gitee.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/extension_dependency.h에서 $GAUSSHOME/include/postgresql/server/로 postgis 종속성 헤더 파일을 다운로드합니다.

 

4. 프로젝트 컴파일

PROJ 프레임워크가 투영 및 좌표계 변환을 수행할 때 작동 스타일은 Linux Shell 명령과 유사합니다.

cd $GAUSSHOME/postgis-xc/proj-4.9.2

chmod +x ./configure

./configure --prefix=$GAUSSHOME/install/proj

make -sj

make install -sj

 

5. Geos 컴파일

 

GEOS의 전신 인 JTS 는 완전한 기능을 갖춘 강력한 공간 조작 및 공간 판단을 제공합니다.

cd $GAUSSHOME/postgis-xc/geos-3.6.2

chmod +x ./configure

./configure --prefix=$GAUSSHOME/install/geos

make -sj

make install -sj

6. libxml 컴파일

libxml은 모든 플랫폼 에서 사용할 수 있고 여러 언어를 지원하는 xml 파일 구문 분석하기 위한 라이브러리입니다 .

cd $GAUSSHOME/postgis-xc/libxml2-2.7.1

chmod +x ./configure

./configure --prefix=$GAUSSHOME/install/libxml2

make -sj

make install -sj

7. JSON -C 설치

 

JSON-C는 C를 사용하여 쉽게 JSON 개체를 빌드하고 JSON 형식 문자열로 출력하고 JSON 형식 문자열을 다시 JSON 개체의 C 언어 표현으로 구문 분석할 수 있는 참조 횟수 개체 모델을 구현합니다.

 

cd $GAUSSHOME/postgis-xc/json-c-json-c-0.12.1-20160607

chmod +x ./configure

./configure --prefix=$GAUSSHOME/설치/json

만들다 -sj

설치 -sj

1.3 Postgis 설치

cd $GAUSSHOME/postgis-xc/postgis-2.4.2

chmod +x ./configure

./configure --prefix=$GAUSSHOME/install/postgis2.4.2 --with-pgconfig=$GAUSSHOME/bin/pg_config --with-projdir=$GAUSSHOME/install/proj --with-geosconfig=$GAUSSHOME/install/geos/bin/geos-config --with-jsondir=$GAUSSHOME/install/json  --with-xml2config=$GAUSSHOME/install/libxml2/bin/xml2-config   --without-raster --without-topology CFLAGS='-O2 -fpermissive -DPGXC  -pthread -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -DMEMORY_CONTEXT_CHECKING -w'  CC=g++

make -sj

make install -sj

 

컴파일에서 /home/carrot/data/openGauss-server/third_party/buildtools/gcc/res/lib64/libstdc++.la를 찾을 수 없다고 표시되면 직접 디렉토리를 생성하고 libstdc++.la를 그 디렉토리에 복사한 다음 make -sj ( libstdc++.so 에 비슷한 문제가 있으면 같은 방법으로 처리).

 

 

omm 사용자는 다음 명령문을 실행하여 데이터베이스 인스턴스 노드에서 PostGIS 관련 동적 링크 라이브러리 배포를 완료합니다. 내 openGauss는 독립 실행형 미니멀 버전이기 때문에 cp를 사용하여 노드 경로에 복사합니다. 엔터프라이즈 버전에서 tranfer.py를 사용해야 하는 경우 자세한 내용 은 openGauss 제품 설명서 의 PostGIS 설치 장을 참조하십시오.

mv $GAUSSHOME/lib/postgresql/postgis-2.4.so $GAUSSHOME/install/postgis-2.4.so


cp $GAUSSHOME/install/postgis-2.4.so $GAUSSHOME/lib/postgresql/postgis-2.4.so

cp $GAUSSHOME/install/json/lib/libjson-c.so.2 $GAUSSHOME/lib/libjson-c.so.2

cp $GAUSSHOME/install/geos/lib/libgeos_c.so.1 $GAUSSHOME/lib/libgeos_c.so.1

cp $GAUSSHOME/install/proj/lib/libproj.so.9 $GAUSSHOME/lib/libproj.so.9

cp $GAUSSHOME/install/geos/lib/libgeos-3.6.2.so $GAUSSHOME/lib/libgeos-3.6.2.so

cp $GAUSSHOME/install/postgis2.4.2/lib/liblwgeom-2.4.so.0 $GAUSSHOME/lib/liblwgeom-2.4.so.0

cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis--2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis--2.4.2.sql

cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis.control $GAUSSHOME/share/postgresql/extension/postgis.control

마지막으로 데이터베이스 인스턴스를 다시 시작하십시오.

gs_ctl stop -D /opt/software/openGauss/data/single_node/

gs_ctl start -D /opt/software/openGauss/data/single_node/

 

2. 확장 기능 사용

다음 SQL문은 PostGIS의 간단한 사용법을 보여주고 있으며, 각 기능의 구체적인 사용법은 "PostGIS-2.4.2 사용자 매뉴얼"을 참조하시기 바랍니다.

2.1 PostGIS 확장 생성

CREATE EXTENSION 명령을 사용하여 직접 만들 수 있습니다.

openGauss=# CREATE EXTENSION postgis;

2.2 확장 기능 사용

 

예 1: 기하학 테이블 생성.

CREATE TABLE cities ( id integer, city_name varchar(50) );

SELECT AddGeometryColumn('cities', 'position', 4326, 'POINT', 2);

 

예 2: 기하학적 데이터 삽입.

INSERT INTO cities (id, position, city_name) VALUES (1,ST_GeomFromText('POINT(-9.5 23)',4326),'CityA');

INSERT INTO cities (id, position, city_name) VALUES (2,ST_GeomFromText('POINT(-10.6 40.3)',4326),'CityB');

INSERT INTO cities (id, position, city_name) VALUES (3,ST_GeomFromText('POINT(20.8 30.3)',4326), 'CityC');

예 3: 세 도시 중 두 도시 사이의 거리를 계산합니다.

SELECT p1.city_name,p2.city_name,ST_Distance(p1.position,p2.position) FROM cities AS p1, cities AS p2 WHERE p1.id > p2.id;v

 

 

2.3 확장 프로그램 삭제

OpenGauss에서 PostGIS Extension을 삭제하는 방법은 다음과 같습니다.

DROP EXTENSION postgis CASCADE;

 참고: 확장이 다른 객체(예: 생성된 지오메트리 테이블)에 종속된 경우 모든 종속 객체를 삭제하려면 CASCADE(캐스케이드) 키워드를 추가해야 합니다.

 

실행 OK 확인 후 다음 명령어를 실행하여 $GAUSSHOME/postgis 설치 디렉토리를 삭제합니다.

rm -rf $GAUSSHOME/postgis-xc

 

마지막으로, 공간 데이터를 지원하는 위의 설치 플러그인 외에도 공간 데이터의 저장 및 관리 기능을 확장하고 전문적인 GIS 기능을 제공하며 공간 데이터를 관리하는 openGauss 기반 Yukon 데이터베이스도 있습니다. Yukon은 현재 postgis, postgis_raster, postgis_sfcgal, yukon_geomodel, yukon_geogridcoder 5가지 확장 기능을 제공하며 관심 있는 학생들은 이해할 수 있습니다.

{{o.이름}}
{{이름}}

추천

출처my.oschina.net/gaussdb/blog/6258151