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?
qgis
attribute-joins
Mick
źródło
źródło
Odpowiedzi:
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 .
źródło
ogr2ogr
do 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ępnieogr2ogr
ponownie, aby utworzyć scalony plik kształtu.Połączenia utworzone we właściwościach warstwy dodają kolumny tylko do istniejących operacji. Jeśli warstwa wektorowa ma tylko 160 elementów, łączenie nie może zwiększyć liczby elementów!
Zamiast tego użyj funkcji warstwy wirtualnej. Oferuje prawdziwe sprzężenia SQL / bazy danych. Na przykład zobacz mój ostatni post: Małe wielokrotności dla map przepływu OD przy użyciu warstw wirtualnych
źródło
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ę.
źródło
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 .
źródło
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
źródło
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.
źródło