Приєднання декількох записів до однієї функції за допомогою QGIS?


25

Я намагаюся створити приєднання / співвідношення в QGIS, де у мене є файл форм будівель і до цього я хотів би приєднатись до непросторової таблиці (.csv), яка містить людей, які працюють у кожній будівлі. Тому у мене в таблиці кілька записів, які я хотів би мати можливість приєднатися до моїх окремих функцій у моєму файлі форм. Я можу запустити об'єднання лише в QGIS, коли перша запис приєднується до функції shapefile (тобто будівлі), але наступні записи видаляються.

Чи міг би хтось дозволити мені знати, як виконати цю приєднання / відношення до QGIS?


У мене виникло подібне запитання тут gis.stackexchange.com/questions/5797/… Плагін RT SQL Layer та модулі eVis були запропоновані. Я використовував модуль eVis, але це не було ідеальним рішенням.
Андо

2
У мене така ж проблема, і я дійсно приєднуюся до роботи з таблицями. Хитрість полягає в тому, щоб приєднати таблиці з декількома значеннями до таблиці з єдиним значенням (тут, від людини до будівництва, а не навпаки). Проблема, наскільки я це відчуваю, полягає в тому, що, виконуючи це, ви не зможете потім шукати та експортувати результат у вигляді геореференційного файла, який є помилкою (принаймні для мене). Будь-який спосіб обійти це питання? marc

Якого кінцевого результату ви хочете досягти? Навіть якщо вам вдається зробити приєднання, ви хочете представити його на карті? Чи є статистика? Залежно від цього можуть дотримуватися різні робочі процеси, але, як правило, корисна ідея, якщо ви хочете зробити приєднання.
johanvdw

Відповіді:


15

Я вирішив цю проблему за допомогою QGIS 1.7.0, попередньо збереживши векторний шар як таблицю значень розділених комами (CSV) із полем геометрії, перетвореним на добре відомий текст. Для цього в полі шару діалогового вікна "Зберегти векторний шар як ..." слід прочитати GEOMETRY = AS_WKT, щоб створити добре відоме текстове поле геометрії зі стовпцем під назвою WKT.

Файл геометрії CSV потім був приєднаний до таблиці атрибутів негеометрії в об'єднанні «один до багатьох» на вкладці «Влаштування» таблиці таблиці атрибутів «Негеометрія»

Отримане об'єднання було збережено як інший CSV файл геометрії.

Коли ця таблиця відкрита в QGIS, кожен запис атрибутів був представлений відповідною векторною геометрією.

Роблячи все це, я виявив, що розмежуваний текстовий плагін не потрібен для відкриття файлу геометрії CSV, якщо роздільники є комами, а поле геометрії WKT називається WKT.

Детальніше про те, як це робиться, дивіться у моєму підручнику за адресою http://georgiawildlife.com/node/2849 .


Хороший підхід, я зробив подібну річ, просто використовуючи ogr2ogrдля створення файлів CSV з Shapefiles. Потім простий скрипт R для об'єднання файлів у загальному полі, яке я хотів, і записування назад у CSV. Потім ogr2ogrзнову, щоб створити об'єднане файл форми.
vpipkt

1
Це може бути оцінено найвищим, але процес, призначений для цього, відповідає @underdark нижче. Це злом і зовсім не найкращий варіант, він повільний і неефективний і призводить до збільшення файлів і більше кроків.
nittyjee

10

Приєднання, створені в проперіях шару, лише додають стовпці до існуючих функцій. Якщо векторний шар має лише 160 функцій, об'єднання не може збільшити кількість функцій!

Використовуйте натомість функцію віртуального шару. Він пропонує справжні SQL / схожі з базою даних. Для прикладу дивіться мою недавню публікацію: Невеликі множини для карт потоку OD з використанням віртуальних шарів

введіть тут опис зображення


7

У QGIS 1.7 є новий двигун для Joins (ви знайдете його у векторних властивостях).

Таблиці без геометрії тепер можуть бути додані до проекту, як і будь-який інший (векторний) шар.


7

Починаючи з версії 2.2 QGIS підтримує відносини між багатьма. Визначте їх у Властивості проекту, однак не у Властивості векторного шару. А потім пов'язані записи з’являться в таблиці атрибутів шару або ідентифікують результати за допомогою форми.

Див відповідь і посилання на хороше керівництво тут .


4

Виконайте приєднання до LibreOffice Base.

Ви не можете подолати той факт, що ви намагаєтеся керувати відносинами від 1 до багатьох.

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

Відкрийте просторові дані, розташовані як шар у QGIS, потім виберіть усі записи таблиці атрибутів у QGIS (чіткий вибір, інвертування виділення) та скопіюйте їх на новий аркуш у LibreOffice Calc. Ви знайдете перше поле - WKT, яке є описом функції, яка може бути загально використана в ГІС. Calc надасть вам діалогове вікно для імпорту вставленої таблиці, виберемо вкладку з обмеженою комою, переконайтеся, що кома не відмічена, оскільки вона буде жувати поле WKT до бітів. Потім виділіть цю таблицю в Calc, перейдіть до Base, виділіть піктограму Tables зліва та вставте. База пройде через діалогове вікно, щоб імпортувати таблицю. Поле WKT може бути збережене через з'єднання, і коли файл імпортується назад у QGIS як .csv, вони використовуються для переміщення функцій. Просто згадайте проекцію.

Таким чином, ви будете мати повний контроль над з'єднанням і зможете це робити в "зворотному порядку". Щоб приєднатись до Base, переконайтеся, що унікальне поле даних (1) є первинним ключем, а потім ви вкажете його на "багато", якщо ви знайомі з поняттям "1 до багатьох" або "1" n ". Приєднання встановлюються шляхом створення відносин | TOOLS |. Як я вже згадував, ви, ймовірно, захочете кинути когось, коли знайдете, що в полях приєднання є однакова інформація, але для їх подання використовували інший текст або синтаксис.

чт


2

Я не думаю, що це можливо, щоб зв’язати таблиці з відносинами 1 до багатьох в QGIS. Як альтернативу, ви можете спробувати gvSIG. Тут ви можете зробити від 1 до багатьох посилань. Після створення посилання, вибравши функцію на карті, буде виділено всі пов’язані записи у пов'язаній таблиці.


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