Base de datos OpenGauss Instalación y uso de PostGIS

Tabla de contenido

 

visión general

1. Instalación PostGIS

1.1 Instalación del compilador GCC-7.3

1.2Instalación de la biblioteca dependiente de PostGIS

1.3 Instalar Postgis

2. Usa extensiones

2.1 Crear extensión PostGIS

2.2 Uso de extensiones

2.3 Eliminar extensión


 

visión general

PostGIS Extension es la extensión de base de datos espacial de PostgreSQL, que proporciona las siguientes funciones de servicio de información espacial: objetos espaciales, índices espaciales, funciones de operaciones espaciales y operadores espaciales. PostGIS Extension sigue completamente la especificación OpenGIS. openGauss proporciona PostGIS Extension (versión PostGIS-2.4.2) , que debe instalarse por separado.

1. Instalación PostGIS

Información ambiental: Centos 7.6 + openGauss 3.1.0 Minimal Edition

El entorno necesita estar conectado a Internet para descargar algunos paquetes dependientes.

1.1 Instalación del compilador GCC-7.3

La instalación de PostGIS depende del compilador GCC-7.3 ( GNU Compiler Suite ) . Si el compilador GCC-7.3 ya se instaló en la instancia de la base de datos, puede omitir este paso directamente. Mi entorno local es 4.8.5 y necesita ser actualizado.

 

Se recomienda el compilador GCC-7.3 para usar el código fuente para actualizar e instalar desde la versión inferior de los compiladores gcc y g++. Si no hay compiladores gcc y g++ de versión baja en la instancia de la base de datos, se pueden instalar montando la imagen del sistema operativo, etc., y no se describirán aquí.

 

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

Este paso descargará algunas dependencias y debe asegurarse de estar conectado a Internet.

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

 

Entonces hacer tomará mucho tiempo, mucho tiempo.

hacer   

hacer instalar

Una vez finalizado, se solicitará el directorio de instalación, que se utilizará más adelante.

 

Establezca la variable de entorno; de lo contrario, gcc -v sigue siendo la versión anterior.

Abra el archivo ~/.bashrc en el editor vim.

vi ~/.bashrc

Agregue el siguiente contenido y reemplace la ruta real con la ruta de la instalación anterior según la situación.

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

Entonces la fuente tiene efecto

fuente ~/.bashrc

Última revisión

 

 

1.2Instalación de la biblioteca dependiente de PostGIS

  1. Descargue el paquete del complemento postgis, descomprímalo y cámbiele el nombre.
​
[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. Descargue el archivo del parche en el directorio $GAUSSHOME/postgis-xc/ e ingrese el parche.

Ruta de descarga: 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. Descargue el archivo de encabezado de dependencia de postgis del sitio web https://gitee.com/opengauss/openGauss-third_party/blob/master/gpl_dependency/postgis/extension_dependency.h a $GAUSSHOME/include/postgresql/server/.

 

4. Compilar proyecto

Cuando el marco PROJ está realizando una proyección y una conversión del sistema de coordenadas, su estilo de operación es similar a los comandos de Linux Shell.

cd $GAUSSHOME/postgis-xc/proj-4.9.2

chmod +x ./configure

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

make -sj

make install -sj

 

5. Compilar Geos

 

El predecesor de GEOS es JTS , que proporciona una operación espacial y un juicio espacial completos y potentes.

cd $GAUSSHOME/postgis-xc/geos-3.6.2

chmod +x ./configure

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

make -sj

make install -sj

6. Compilar libxml

libxml es una biblioteca para analizar archivos xml , que se puede utilizar en todas las plataformas y admite varios idiomas .

cd $GAUSSHOME/postgis-xc/libxml2-2.7.1

chmod +x ./configure

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

make -sj

make install -sj

7. Instalar JSON- C

 

JSON-C implementa un modelo de objetos de recuento de referencias que le permite usar fácilmente C para crear objetos JSON, generarlos como cadenas con formato JSON y analizar cadenas con formato JSON para convertirlas en representaciones en lenguaje C de objetos JSON.

 

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

chmod +x ./configurar

./configure --prefix=$GAUSSHOME/instalar/json

hacer -sj

hacer instalar -sj

1.3 Instalar 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

 

Si la compilación muestra que /home/carrot/data/openGauss-server/third_party/buildtools/gcc/res/lib64/libstdc++.la no se puede encontrar, puede crear un directorio usted mismo, copiar libstdc++.la en él y luego make -sj (Si libstdc++.so tiene un problema similar, manéjelo de la misma manera).

 

 

El usuario omm ejecuta la siguiente instrucción para completar la distribución de bibliotecas de vínculos dinámicos relacionadas con PostGIS en los nodos de la instancia de la base de datos. Debido a que mi openGauss es una versión minimalista independiente, uso cp para copiar en la ruta del nodo. Si la versión empresarial necesita usar tranfer.py, consulte el capítulo de instalación de PostGIS de la documentación del producto openGauss para obtener más detalles.

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

Finalmente reinicie la instancia de la base de datos.

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

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

 

2. Usa extensiones

Las siguientes instrucciones SQL muestran el uso simple de PostGIS. Para el uso específico de cada función, consulte el "Manual de usuario de PostGIS-2.4.2".

2.1 Crear extensión PostGIS

Se puede crear directamente usando el comando CREATE EXTENSION:

openGauss=# CREATE EXTENSION postgis;

2.2 Uso de extensiones

 

Ejemplo 1: Creación de tabla de geometría.

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

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

 

Ejemplo 2: Inserción de datos geométricos.

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');

Ejemplo 3: Calcular la distancia entre dos ciudades cualesquiera entre tres ciudades.

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 Eliminar extensión

El método para eliminar PostGIS Extension en openGauss es el siguiente:

DROP EXTENSION postgis CASCADE;

 Nota: si la extensión depende de otros objetos (como la tabla de geometría creada), debe agregar la palabra clave CASCADE (cascada) para eliminar todos los objetos dependientes.

 

Después de confirmar que la ejecución es correcta , ejecute el siguiente comando para eliminar el directorio de instalación $GAUSSHOME/postgis.

rm -rf $GAUSSHOME/postgis-xc

 

Finalmente: además de los complementos de instalación anteriores que admiten datos espaciales, también hay una base de datos Yukon basada en OpenGauss que amplía las capacidades de almacenamiento y administración de datos geoespaciales, proporciona funciones GIS profesionales y administra datos geoespaciales. Yukon actualmente proporciona cinco extensiones postgis, postgis_raster, postgis_sfcgal, yukon_geomodel, yukon_geogridcoder, que los estudiantes interesados ​​pueden entender.

{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/gaussdb/blog/6258151
Recomendado
Clasificación