Agregue funciones espaciales de PostGIS a un esquema personalizado que no sea "público" en PostgreSQL

14

Recientemente, creé una base de datos PostGIS 2.0.3 en un servidor de base de datos PostgreSQL 9.1 usando pgAdmin. La extensión "PostGIS" se encontró instalada en "Extensiones". Se agregaron todas las funciones espaciales al esquema "público". Eso está bien.

Ahora quiero almacenar todos mis datos en un nuevo esquema llamado "gc". Sin embargo, ¿cómo puedo hacer que todas las funciones espaciales instaladas en ese esquema "gc"? No hay una sola función en el esquema. Sin embargo, cuando intenté importar / crear una nueva clase de entidad de ESRI ArcCatalog 10.1 a este esquema, ¡funcionó! La clase de entidad se podría importar y mostrar en QGIS.

¿Alguien podría darme alguna sugerencia o idea al respecto?

Soy nuevo en PostgreSQL y PostGIS.

    
pregunta alextc 21.02.2014 - 03:40

2 respuestas

3

Aquí hay comandos de ejemplo para instalar la extensión PostGIS en un esquema gc :

CREATE SCHEMA gc;

CREATE EXTENSION postgis SCHEMA gc;

Aquí hay comandos de ejemplo para mover PostGIS y sus objetos a un nuevo esquema para la versión 2.4.4 de PostGIS en caso de que ya lo haya instalado:

CREATE SCHEMA gc;

UPDATE pg_extension
SET extrelocatable = TRUE
WHERE extname = 'postgis';

ALTER EXTENSION postgis
SET SCHEMA gc;

ALTER EXTENSION postgis
UPDATE TO "2.4.4next";

ALTER EXTENSION postgis
UPDATE TO "2.4.4";

Esto no es estrictamente necesario; solo útil:

ALTER DATABASE whatever
SET search_path = public,gc;
    
respondido por el Kenny Evitt 10.08.2018 - 16:19
1

Kenny Evitt ya explicó las cosas más importantes. Sin embargo, aquí hay alguna información adicional:

Postgresql tiene bases de datos, espacios de tabla y esquemas, y es imposible realizar uniones de una base de datos a otra, porque están estrictamente separadas. Una base de datos puede tener más de un esquema, y es posible unir algo de un esquema a otro. Para más información, mire la documentación:

Otra posibilidad para cargar PostGIS en tu esquema gc sería la siguiente:

t=# create schema gc;
CREATE SCHEMA
t=# set search_path to gc;
SET
t=# create extension postgis;
CREATE EXTENSION

No soy un experto en Arc Catalog ni en pgadmin, pero supongo que ocurrió una de las siguientes tres posibilidades:

  1. Postgresql admite tipos de datos geométricos nativamente . Pero no debe confiar en esto en Geo Contexts, porque no se proporcionan los metadatos de CRS, así como la funcionalidad de transformación. Acabas de tener suerte y nada se ha roto.
  2. Arc Catalog de alguna manera, después de no encontrar una extensión de PostGIS, la creó sin notificar al Usuario. Para verificar esto, puede mirar las tablas existentes antes y después de ese paso.

En psql, puedes hacer esto escribiendo:

\d
           List of Relations
 Schema |       Name        |   Type  | Owner 
--------+-------------------+---------+----------
 gc     | geography_columns | View    | postgres
 gc     | geometry_columns  | View    | postgres
 gc     | raster_columns    | View    | postgres
 gc     | raster_overviews  | View    | postgres
 gc     | spatial_ref_sys   | Table   | postgres

Si ve esto, PostGIS se ha instalado como una extensión. La tercera posibilidad sería que ArcCatalog haga algo como esto:

set search_path to $all_schemas;
import to gc;

En este caso, también tienes suerte. Pero tal vez, ArcCatalog hace algo más sofisticado al final ...

    
respondido por el yorkie 27.08.2018 - 00:47

Lea otras preguntas en las etiquetas