PostGIS'te Birden Çok Tabloyu Yeni Bir Tabloda Birleştirin


13

PostGIS yeni bir tablo içine bireysel tabloları bir dizi birleştirmek için arıyorum. Bu, Shapefile verileriyle çalışırken kolay bir iştir, ancak PostGIS'te bunu nasıl yapacağımdan emin değilim. Herhangi bir yardım büyük mutluluk duyacağız. Bence Append kullanıyorum, ama nereden başlayacağımdan bile emin değilim.

Yanıtlar:


17

(Uçuş öncesi kontrol: özellikler tüm orijinal tablolarda aynı mıdır? Geometri türü tüm tablolarda tamamen aynı mıdır?)

Ya sen

  1. önce (boş) tabloyu oluşturun, sonra orijinal tabloların her birinden tüm verileri birleştirilmiş tabloya almak için INTO ... SELECT ... FROM komutunu kullanın.
  2. Büyük bir UNION deyiminden yeni tablo oluşturun.

1 için gidebilir:

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;

ve bunun gibi...

2. seçenek için:

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


Teşekkürler Micha, bunu deneyeceğim. Evet, tüm tablolar aynı özniteliğe ve aynı geometri türüne sahiptir. Tekrar teşekkürler ...
Ryan Garnett

Denedim ve XY ile ilgili bir hata alıyorum. Orada ne kullanmam gerektiğinden emin olmadığım için yanlış bir şey yaptığımı biliyorum. İşte benim sorgu ve çıkış yanıtı. Herhangi bir yardım çok iyi olurdu.
Ryan Garnett

CREATE TABLE pbear_pp (kimlik seri birincil anahtarı, varlık adı varchar (40)); AddGeometryColumn ('pbear_pp', 'geom', '- 1', 'çokgen', 'XY') SEÇİN; Pbear_pp (varlık adı, geom) ekle INSERT varlık adı, geom FROM nts250k.nts250k_043e_poly; Pbear_pp (varlık adı, geom) ekle INSERT varlık adı, geom FROM nts250k.nts250k_043f_poly; VB VB ...
Ryan Garnett

DİKKAT: CREATE TABLE "pbear_pp.id" seri sütunu için "pbear_pp_id_seq" örtük dizisini oluşturur. DİKKAT: CREATE TABLE / PRIMARY KEY tamsayı için "pbear_pp_pkey" örtük dizini oluşturur: "XY" tamsayı için geçersiz girdi sözdizimi:
Ryan Garnett

1
bu argüman boyutları belirttiği için 'XY' yerine 2 kullanın.
lynxlynxlynx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.