Combinar varias tablas en una nueva tabla en PostGIS

13

Estoy buscando fusionar varias tablas individuales en una nueva tabla en PostGIS. Esta es una tarea fácil cuando se trabaja con datos de Shapefile, pero no estoy seguro de cómo hacerlo en PostGIS. Cualquier ayuda sería muy apreciada. Creo que uso Append, pero no estoy seguro incluso por dónde empezar.

Ryan Garnett
fuente

Respuestas:

17

(Verificación previa al vuelo: ¿los atributos son idénticos en todas las tablas originales? ¿El tipo de geometría es exactamente el mismo en todas las tablas?)

Tu también puedes

  1. cree la tabla (vacía) primero, luego use INSERT INTO ... SELECT ... FROM para obtener todos los datos de cada una de las tablas originales en la fusionada.
  2. Cree la nueva tabla a partir de una gran declaración UNION.

Para 1 podría ir:

CREATE TABLE merged (id serial primary key, attrib1 integer, attrib2 varchar(15),....);
SELECT AddGeometryColumn('merged','geom',<SRID>,'<FEATURE_TYPE>,'XY');
INSERT INTO merged (attrib1, attrib2, ...., geom) SELECT attribA, attribB,...,geom FROM table_1;
INSERT INTO merged (attrib1, attrib2, ...., geom) SELECT attribA, attribB,...,geom FROM table_2;

y así...

Para la opción 2:

CREATE TABLE merged AS( 
SELECT attribA, attribB,...,geom FROM table_1
UNION 
SELECT attribA, attribB,...,geom FROM table_2
UNION
.... 
);
SELECT Populate_Geometry_Columns('merged'::regclass);

HTH, Micha

Micha
fuente
Gracias Micha, intentaré esto. Sí, todas las tablas tienen el mismo atributo y son del mismo tipo de geometría. Gracias de nuevo ...
Ryan Garnett
Lo he intentado y obtengo un error asociado al XY. Sé que estoy poniendo algo incorrecto, ya que no estoy seguro de lo que debería estar usando allí. Aquí está mi consulta y la respuesta de salida. Cualquier ayuda sería genial.
Ryan Garnett
CREATE TABLE pbear_pp (clave primaria serial de identificación, nombre de entidad varchar (40)); SELECCIONE AddGeometryColumn ('pbear_pp', 'geom', '- 1', 'polygon', 'XY'); INSERTAR EN pbear_pp (nombre de entidad, geom) SELECCIONAR nombre de entidad, geom DESDE nts250k.nts250k_043e_poly; INSERTAR EN pbear_pp (nombre de entidad, geom) SELECCIONAR nombre de entidad, geom DESDE nts250k.nts250k_043f_poly; ETC ETC ...
Ryan Garnett
AVISO: CREATE TABLE creará la secuencia implícita "pbear_pp_id_seq" para la columna serial "pbear_pp.id" AVISO: CREATE TABLE / PRIMARY KEY creará el índice implícito "pbear_pp_pkey" para la tabla "pbear_pp" ERROR: sintaxis de entrada no válida para el entero: "XY"
Ryan Garnett
1
use 2 en lugar de 'XY' ya que ese argumento especifica las dimensiones.
lynxlynxlynx