Łączenie wielu rekordów w jedną funkcję za pomocą QGIS?


25

Próbuję utworzyć złączenie / relację w QGIS, w której mam plik kształtu i do tego chciałbym dołączyć do nieprzestrzennego stołu (.csv) zawierającego osoby pracujące w każdym budynku. Mam więc wiele rekordów w tabeli, które chciałbym móc dołączyć do moich pojedynczych funkcji w moim pliku kształtu. Mogę uruchomić sprzężenie tylko w QGIS, w którym pierwszy rekord jest połączony z funkcją shapefile (tj. Budowanie), ale kolejne rekordy są usuwane.

Czy ktoś mógłby mi powiedzieć, jak ukończyć to połączenie / relację w QGIS?


Miałem podobne pytanie tutaj gis.stackexchange.com/questions/5797/ ... Wtyczka RT SQL Layer i sugerowane były wtyczki eVis. Użyłem wtyczki eVis, ale nie było to idealne rozwiązanie.
Ando

2
Mam ten sam problem i rzeczywiście łączenie tabel działa. Sztuką jest dołączenie tabel z wieloma wartościami do tabeli z jedną wartością (tutaj, od osoby do budynku, a nie na odwrót). Problem, o ile mi się podoba, polega na tym, że robiąc to, nie możesz wyszukiwać i eksportować wyniku jako pliku georeferencyjnego, który jest błędem (przynajmniej dla mnie). W jakikolwiek sposób obejść ten problem? marc

Jaki efekt końcowy chcesz osiągnąć? Nawet jeśli uda ci się wykonać połączenie, czy chcesz je przedstawić na mapie? Czy statystyki? W zależności od tego można zastosować różne przepływy pracy, ale korzystanie z bazy danych jest zwykle dobrym pomysłem, jeśli chcesz łączyć.
johanvdw

Odpowiedzi:


15

Rozwiązałem ten problem za pomocą QGIS 1.7.0, najpierw zapisując warstwę wektorową jako tabelę wartości rozdzielanych przecinkami (CSV) z polem geometrii przekonwertowanym na dobrze znany tekst. Aby to zrobić, pole warstwy w oknie dialogowym „Zapisz warstwę wektorową jako ...” musi zawierać GEOMETRIA = AS_WKT, aby utworzyć dobrze znane pole tekstowe geometrii z kolumną o nazwie WKT.

Plik geometrii CSV został następnie połączony z tabelą atrybutów nie geometrii w połączeniu jeden do wielu w zakładce połączeń właściwości tabeli atrybutów nie geometrii.

Wynikowe połączenie zostało zapisane jako inny plik CSV geometrii.

Po otwarciu tej tabeli w QGIS każdy rekord atrybutu był reprezentowany przez odpowiednią geometrię wektorową.

Robiąc to wszystko, odkryłem, że Wtyczka tekstowa z ogranicznikami nie jest potrzebna do otwarcia pliku geometrii CSV, jeśli ogranicznikami są przecinki, a pole geometrii WKT nosi nazwę WKT.

Szczegółowe informacje na temat tego, jak to zrobić, znajdują się w moim samouczku na stronie http://georgiawildlife.com/node/2849 .


Dobre podejście, zrobiłem podobną rzecz, używając tylko ogr2ogrdo tworzenia plików CSV z Shapefiles. Następnie prosty skrypt R do scalenia plików we wspólnym polu, którego chciałem i zapisania z powrotem do CSV. Następnie ogr2ogrponownie, aby utworzyć scalony plik kształtu.
vpipkt

1
Może to być najwyżej ocenione, ale na proces przeznaczony do tego odpowiada @underdark poniżej. Jest to hack i wcale nie najlepsza opcja, jest powolny i nieefektywny, co skutkuje większymi plikami i większą liczbą kroków.
nittyjee


7

W QGIS 1.7 dostępny jest nowy silnik dla połączeń (można go znaleźć we właściwościach wektorowych).

Tabele bez geometrii można teraz dodawać do projektu, jak każdą inną (wektorową) warstwę.


7

Począwszy od wersji 2.2 QGIS obsługuje relacje jeden do wielu. Zdefiniuj je jednak we właściwościach projektu, a nie we właściwościach warstwy wektorowej. Następnie powiązane rekordy pojawią się w Tabeli atrybutów warstwy lub Zidentyfikuj wyniki za pomocą formularza.

Zobacz odpowiedź i link do dobrego przewodnika tutaj .


4

Dołącz do nas w bazie LibreOffice.

Nie można przezwyciężyć faktu, że próbujesz zarządzać relacją 1 do wielu.

W przypadku nieprzestrzennego lub nieprzestrzennego warto się nauczyć. Uważam, że największą sztuczką jest upewnienie się, że pola atrybutów złączenia mają dokładnie takie same warunki.

Otwórz dane przestrzenne jako warstwę w QGIS, a następnie wybierz wszystkie rekordy w tabeli atrybutów w QGIS (wyczyść zaznaczenie, odwróć zaznaczenie) i skopiuj je do nowego arkusza w LibreOffice Calc. Pierwsze pole to WKT, które jest opisem funkcji, która może być powszechnie używana w GIS. Calc wyświetli okno dialogowe do zaimportowania wklejonej tabeli, wybierz rozdzielany tabulatorami, upewnij się, że przecinek nie jest zaznaczony, ponieważ będzie żuć pole WKT na bity. Następnie podświetl tę tabelę w aplikacji Calc, przejdź do bazy, podświetl ikonę Tabele po lewej i wklej. Baza przejdzie przez okno dialogowe, aby zaimportować tabelę. Pole WKT można zachować przez połączenie, a gdy plik jest importowany z powrotem do QGIS jako .csv, są one używane do przeniesienia funkcji. Pamiętaj tylko o projekcji.

W ten sposób będziesz mieć pełną kontrolę nad złączeniem i możesz to zrobić w „odwrotnej kolejności”. Aby wykonać połączenia w bazie, upewnij się, że unikalne pole danych (1) jest kluczem podstawowym, a następnie wskazujesz je na „wiele”, jeśli znasz pojęcie 1 do wielu lub 1 do n. Połączenia są tworzone przez tworzenie relacji | NARZĘDZIA |. Jak już wspomniałem, prawdopodobnie będziesz chciał kogoś skopać, gdy znajdziesz, że pola łączenia zawierają te same informacje, ale do ich reprezentowania użyto innego tekstu lub składni.

hth


2

Nie sądzę, aby można było łączyć tabele z relacją 1 do wielu w QGIS. Alternatywnie możesz wypróbować gvSIG. Tutaj możesz zrobić od 1 do wielu linków. Po utworzeniu łącza wybranie obiektu na mapie podświetli wszystkie powiązane rekordy w połączonej tabeli.


1
Od czasu wprowadzenia wirtualnych warstw odpowiedź ta nie jest już poprawna.
podmrok
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.