Unisci più tabelle in una nuova tabella in PostGIS


13

Sto cercando di unire un numero di singole tabelle in una nuova tabella in PostGIS. Questo è un compito facile quando si lavora con i dati Shapefile, ma non sono sicuro di come farlo in PostGIS. Qualsiasi aiuto sarebbe molto apprezzato. Penso di usare Append, ma non sono sicuro nemmeno da dove cominciare.

Risposte:


17

(Controllo pre-volo: gli attributi sono identici in tutte le tabelle originali? Il tipo di geometria è esattamente lo stesso in tutte le tabelle?)

Puoi farlo

  1. creare prima la tabella (vuota), quindi utilizzare INSERT INTO ... SELECT ... FROM per ottenere tutti i dati da ciascuna delle tabelle originali in quella unita.
  2. Crea la nuova tabella da un'unica grande istruzione UNION.

Per 1 potrebbe andare:

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;

e così via...

Per l'opzione 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


Grazie Micha, ci proverò. Sì, tutte le tabelle hanno lo stesso attributo e sono dello stesso tipo di geometria. Grazie ancora ...
Ryan Garnett il

Ho provato e ricevo un errore associato all'XY. So che sto inserendo la cosa sbagliata, poiché non sono sicuro di cosa dovrei usare lì. Ecco la mia domanda e la risposta in uscita. Qualsiasi aiuto sarebbe grande.
Ryan Garnett,

CREATE TABLE pbear_pp (chiave primaria seriale id, nome entità varchar (40)); SELECT AddGeometryColumn ('pbear_pp', 'geom', '- 1', 'poligono', 'XY'); INSERISCI IN pbear_pp (nome entità, geom) SELEZIONa nome entità, geom FROM nts250k.nts250k_043e_poly; INSERISCI IN pbear_pp (nome entità, geom) SELEZIONa nome entità, geom FROM nts250k.nts250k_043f_poly; ETC ETC ...
Ryan Garnett,

AVVISO: CREATE TABLE creerà la sequenza implicita "pbear_pp_id_seq" per la colonna seriale "pbear_pp.id" AVVISO: CREATE TABLE / PRIMARY KEY creerà l'indice implicito "pbear_pp_pkey" per la tabella "pbear_pp" ERRORE: sintassi di input non valida per intero: "XY"
Ryan Garnett,

1
usa 2 invece di 'XY' poiché quell'argomento specifica le dimensioni.
lynxlynxlynx,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.