Forum QGIS
Łączenia jeden do wielu - Wersja do druku

+- Forum QGIS (http://forum.quantum-gis.pl)
+-- Dział: Desktop GIS (http://forum.quantum-gis.pl/forum-4.html)
+--- Dział: QGIS (http://forum.quantum-gis.pl/forum-5.html)
+--- Wątek: Łączenia jeden do wielu (/thread-662.html)



Łączenia jeden do wielu - tomalos - 13-02-2012

Ktoś wie jak połączyć jeden obiekt przestrzenny z kilkoma z tabeli nieprzestrzennej tak, żeby nie obciąć danych nieprzestrzennych?

Przykładowe tabele:
Kod:
Dane przestrzenne              Dane nieprzestrzenne
|ID|OBIEKT        |            |ID|MIESZKANIEC|
-------------------            ----------------
|1 |Zamczysko     |            |1 |Gargamel   |
-------------------            ----------------
|2 |Dom na polanie|            |1 |Klakier    |
-------------------            ----------------
|3 |Gajówka       |            |2 |Czerw.Kapt.|
                               ----------------
                               |2 |Babcia     |  
                               ----------------
                               |3 |Gajowy     |
                               ----------------
                               |2 |Mysz leśna |  
                               ----------------
                               |1 |Mysz polna |

Typowy efekt złączenia:
Kod:
|ID|OBIEKT        |ID|MIESZKANIEC|
----------------------------------
|1 |Zamczysko     |1 |Gargamel   |
----------------------------------
|2 |Dom na polanie|2 |Czerw.Kapt.|
----------------------------------
|3 |Gajówka       |3 |Gajowy     |

Efekt oczekiwany
Kod:
|ID|OBIEKT        |ID|MIESZKANIEC|
----------------------------------
|1 |Zamczysko     |1 |Gargamel   |
----------------------------------
|1 |Zamczysko     |1 |Klakier    |
----------------------------------
|1 |Zamczysko     |1 |Mysz polna |
----------------------------------
|2 |Dom na polanie|2 |Mysz leśna |
----------------------------------
|2 |Dom na polanie|2 |Babcia     |
----------------------------------
|2 |Dom na polanie|2 |Czerw.Kapt.|
----------------------------------
|3 |Gajówka       |3 |Gajowy     |
----------------------------------



RE: Łączenia jeden do wielu - shod_dc - 13-02-2012

ja mam rozwiązanie nieco na około i sprawdzone na ArcGISie. w wolnej chwili przetestuje na Qgis i dam znać, bo teaz niestety zbyt mało czasu mam. moge na tą chwile podpowiedzieć, że w Arc do tego wykorzystuję "merge" a w qgis będzie to łączenie kilku warstw shp. jak sprawdze to dam przepis. myślę jednak, ze łątwiej byłoby z wykorzystaniem postgre/postgis


RE: Łączenia jeden do wielu - Rayo - 13-02-2012

Złączenia chcesz dokonać w bazie czy w QGISie?
W bazie to chyba by join'em poszło...


RE: Łączenia jeden do wielu - tomalos - 13-02-2012

W QGIS'ie, dane są w plikach shp i tabelach dbf.


RE: Łączenia jeden do wielu - Rayo - 13-02-2012

Tabelaryczny wynik złączenie można uzyskać dokonując złączenia na tabeli nieprzestrzennej z tabelą przestrzenną (a nie odwrotnie).
Niestety takie złączenie nie wyświetla się na mapie, bo złączenie nie pobiera danych o geometrii.
Jeśli chcesz uzyskać dane z geometrią w postaci pliku, a nie tworzone online to możesz zrobić tak (zakładam, że obiekty są punktami):
1. Wczytujesz do QGISa tabelę dbf i warstwę shp, które mają być złączone.
2. Do warstwy shp dołączasz informacje o geometrii przez Wektor/Narzędzia geometrii/eksportuj-dodaj kolumny geometrii.
3. Wczytujesz powstałą warstwę do projektu, nazwijmy ją shp2.
4. Na tabeli dbf dokonujesz złączenia z warstwą shp2.
5. Tabelę dbf zapisujesz przez Zapisz jako w formacie CSV.
6. Powstały plik zaczytujesz do projektu przez Dodaj warstwę tekstową
7. I ostatecznie zapisujesz nową warstwę przez Zapisz jako do pliku shp.

Trochę na okrągło, ale działa.

UWAGA: Nazwy kolumn nie mogą się powtarzać w tabeli dbf i warstwie shp.


RE: Łączenia jeden do wielu - tomalos - 13-02-2012

Dzięki Smile Miałem poligony ale wystarczające okazały się ich centroidy.


RE: Łączenia jeden do wielu - tomalos - 13-02-2012

Poradziłem sobie też z poligonami postępując analogicznie jak napisał Rayo, różnica polega na eksporcie do warstwy csv, może komuś się przyda:
1. Wczytać warstwę shp i tabelę dbf
2. Zapisać shp jako csv z geometrią WKT (w polu "warstwa" w oknie eksportu należy wpisać GEOMETRY=AS_WKT)
3. Wczytać warstwę csv
4. Połączyć dbf z csv
5. Zapisać dbf jako csv (pole "warstwa" pozostawiając puste)