Об’єднайте кілька таблиць у нову таблицю в PostGIS


13

Я шукаю об'єднати ряд окремих таблиць у нову таблицю в PostGIS. Це легке завдання під час роботи з даними Shapefile, але я не впевнений, як це зробити в PostGIS. Будь-яка допомога буде дуже вдячна. Я думаю, що я використовую додаток, але я не знаю навіть з чого почати.

Відповіді:


17

(Перевірка перед польотом: чи атрибути однакові у всіх оригінальних таблицях? Чи тип геометрії однаковий у всіх таблицях?)

Ви можете будь-який

  1. спершу створіть (порожню) таблицю, після чого використовуйте ВСТАВИТИ У ВИБІР ... ВИБІРИТЕ ... ВІД, щоб отримати всі дані з кожної вихідної таблиці в об'єднану.
  2. Створіть нову таблицю з однієї великої заяви UNION.

Для 1 може піти:

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;

і так далі...

Для варіанту 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


Дякую Міха, я спробую це. Так, всі таблиці мають однаковий атрибут і вони однакового типу геометрії. Ще раз дякую ...
Райан Гарнетт

Я спробував, і я отримую помилку, пов’язану з XY. Я знаю, що я ввожу неправильну річ, тому що я не впевнений, що я маю там використовувати. Ось мій запит та відповідь на вихід. Будь-яка допомога була б чудовою.
Райан Гарнетт

СТВОРИТИ ТАБЛИЦЮ pbear_pp (ідентифікатор послідовного первинного ключа id, ім'я особи varchar (40)); SELECT AddGeometryColumn ('pbear_pp', 'geom', '- 1', 'polygon', 'XY'); ВСТАВЛЯЙТЕ в pbear_pp (ім'я сутності, geom) ВИБІРТЕ ім'я сутності, geom ВІД nts250k.nts250k_043e_poly; ВСТАВИТИ в pbear_pp (ім'я особи, geom) ВИБІРТЕ ім'я сутності, geom ВІД nts250k.nts250k_043f_poly; ETC ETC ...
Райан Гарнетт

УВАГА: CREATE TABLE створює неявну послідовність "pbear_pp_id_seq" для послідовного стовпчика "pbear_pp.id" УВАГА: CREATE TABLE / PRIMARY KEY створює неявний індекс "pbear_pp_pkey" для таблиці "pbear_pp" ПОМИЛКА: неприпустимий синтаксис введення для цілого числа: "XY"
Райан Гарнетт

1
використовуйте 2 замість "XY", оскільки цей аргумент вказує розміри.
lynxlynxlynx
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.