Объединить несколько записей в одну функцию с помощью QGIS?

25

Я пытаюсь создать соединение / связь в QGIS, где у меня есть шейп-файл зданий, и к которому я хотел бы присоединиться к непространственной таблице (.csv), содержащей людей, которые работают в каждом здании. Таким образом, в моей таблице есть несколько записей, которые я хотел бы иметь возможность присоединиться к моим отдельным объектам в моем шейп-файле. Я могу запустить соединение только в QGIS, где первая запись соединяется с функцией шейп-файла (т. Е. Строится), но последующие записи удаляются.

Может ли кто-нибудь дать мне знать, как завершить это соединение в 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снова создать объединенный шейп-файл.
впипкт
1
Это может быть оценено как самое высокое, но процесс, предназначенный для этого, ответил @underdark ниже. Это взломанный и не самый лучший вариант, он медленный и неэффективный и приводит к большим файлам и большему количеству шагов.
nittyjee
10

Соединения, созданные в свойствах слоя, добавляют только столбцы к существующим объектам. Если векторный слой имеет только 160 объектов, объединение не может увеличить количество объектов!

Вместо этого используйте функцию виртуального слоя. Он предлагает реальные соединения типа SQL / базы данных. Для примера см. Мой недавний пост: Маленькие кратные для карт потока OD с использованием виртуальных слоев

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

Подземье
источник
7

В QGIS 1.7 есть новый движок для соединений (вы можете найти его в свойствах вектора).

Таблицы без геометрии теперь можно добавлять в проект, как и любой другой (векторный) слой.

Джованни Манги
источник
7

Начиная с версии 2.2 QGIS поддерживает отношения «один ко многим». Определите их в свойствах проекта, но не в свойствах векторного слоя. И тогда связанные записи появятся в таблице атрибутов слоя или определить результаты через форму.

Смотрите ответ и ссылку на хорошее руководство здесь .

Анна Пестерева
источник
4

Сделайте объединение в базе LibreOffice.

Вы не можете преодолеть тот факт, что вы пытаетесь управлять отношениями 1 ко многим.

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

Откройте пространственно расположенные данные как слой в QGIS, затем выберите все записи в таблице атрибутов в QGIS (очистить выбор, инвертировать выбор) и скопируйте их на новый лист в LibreOffice Calc. Вы найдете первое поле WKT, которое представляет собой описание функции, которая может быть универсально использована в ГИС. Calc даст вам диалог для импорта вставленной таблицы, выберите разделитель табуляции, убедитесь, что запятая не помечена, так как она разжевывает поле WKT до битов. Затем выделите эту таблицу в Calc, переключитесь на Base, выделите значок Tables слева и вставьте. База пройдет через диалоговое окно для импорта таблицы. Поле WKT может быть сохранено через объединение, и когда файл импортируется обратно в QGIS как .csv, они используются для перемещения объектов. Просто запомни проекцию.

Таким образом, вы будете иметь полный контроль над объединением и сможете делать это «в обратном порядке». Для выполнения объединений в Base убедитесь, что уникальное поле данных (1) является первичным ключом, а затем укажите его на «многие», если вы знакомы с концепцией «1 ко многим» или «1 к n». Соединения создаются путем установления отношений | TOOLS |. Как я уже упоминал, вы, вероятно, захотите пнуть кого-нибудь, когда обнаружите, что поля объединения имеют одинаковую информацию, но использовали другой текст или синтаксис для ее представления.

НТН

BWill
источник
2

Я не думаю, что это возможно, чтобы связать таблицы с отношением 1 ко многим в QGIS. В качестве альтернативы вы можете попробовать gvSIG. Здесь вы можете сделать от 1 до многих ссылок. После создания ссылки при выборе объекта на карте будут выделены все связанные записи в связанной таблице.

Ecodiv
источник
1
Поскольку введение виртуальных слоев, этот ответ больше не является правильным.
Подземье