kilka warstw liniowych w jedną - 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: kilka warstw liniowych w jedną (/thread-404.html) |
kilka warstw liniowych w jedną - [wiki] - 10-03-2011 czeŚĆ, powitanie Wszystkim razem i Każdemu z osobna. Jestem w trakcie przesiadki na Quantum GIS. W chwili obecnej mam dane w postaci plików wektorowych (MicroStation) z projektu w trakcie robienia, które chciałbym jak najprościej zaimportować i "skleić" do qGIS. Pojawił się problem w postaci danych liniowych... Dane wejściowe: - dwie warstwy liniowe; - obiekty składają się z pojednynczych odcinków; - istnieją odcinki występujące tylko na jednej z warstw; - istnieją odcinki występujące na obu warstwach - wtedy punkty; ich końców są identyczne, odcinki linii się pokrywają, możliwe jest, że mają rózne "kierunki" rysowania. Oczekiwane dane wyjściowe: - niepowtarzające się odcinki z obu warstw ze wszystkimi atrybutami (jak przy operacji logicznej OR). Dostępne narzędzia testuję za pomocą dwóch warstw liniowych na których narysowane mam po trzy odcinki (kształt //) z atrybutami: warstwa 1: wkt_geom pierwsza LINESTRING(-0.806787 0.673412, -0.377895 0.142528) 1-1 LINESTRING(-0.377895 0.142528, 0.044458 0.693026) 1-2 LINESTRING(0.044458 0.693026, 0.504732 0.133375) 1-3 LINESTRING(-2.107624 1.544163, -1.048320 1.307378) 1-5 warstwa 2: wkt_geom druga LINESTRING(-0.806787 0.673412, -0.377895 0.142528) 2-1 LINESTRING(-0.377895 0.142528, 0.044458 0.693026) 2-2 LINESTRING(0.044458 0.693026, 0.504732 0.133375) 2-3 LINESTRING(-2.363104 1.126673, -1.771139 -0.038562) 2-5 Obiekty 1-5 i 2-5 występują na jednej z warstw i nie mają odpowiedników na drugiej. Oczekiwana warstwa wynikowa: wkt_geom pierwsza druga LINESTRING(-0.806787 0.673412, -0.377895 0.142528) 1-1 2-1 LINESTRING(-0.377895 0.142528, 0.044458 0.693026) 1-2 2-2 LINESTRING(0.044458 0.693026, 0.504732 0.133375) 1-3 2-3 LINESTRING(-2.107624 1.544163, -1.048320 1.307378) 1-5 NULL LINESTRING(-2.363104 1.126673, -1.771139 -0.038562) NULL 2-5 Czego już próbowałem (i z jakim skutkiem): WEKTOR | NARZĘDZIA ZARZĄDZANIA DANYMI | ZŁĄCZ ATRYBUTY WEDŁUG LOKALIZACJI wkt_geom pierwsza druga LINESTRING(-0.806787 0.673412, -0.377895 0.142528) 1-1 2-1 LINESTRING(-0.377895 0.142528, 0.044458 0.693026) 1-2 2-1 LINESTRING(0.044458 0.693026, 0.504732 0.133375) 1-3 2-2 Nie mam pomysłu z czego wynika dwukrotne podpięcie wartości 2-1 z jednoczesnym pominięciem 2-3. Pominięte zostały też linie występujące tylko na jednej z warstw. Sprawdziłem, że wynik jest _niezależny_ od kierunku rysowania odcinków (tzn. czy obydwa są rysowane w tę samą stronę, czy też każdy w inną). WEKTOR | NARZĘDZIA GEOPROCESINGU | SUMA wkt_geom pierwsza druga LINESTRING(-0.806787 0.673412, -0.377895 0.142528) 1-1 2-1 LINESTRING(-0.806787 0.673412, -0.377895 0.142528) 1-1 NULL LINESTRING(-0.377895 0.142528, 0.044458 0.693026) 1-2 2-2 LINESTRING(-0.377895 0.142528, 0.044458 0.693026) 1-2 NULL LINESTRING(0.044458 0.693026, 0.504732 0.133375) 1-3 2-3 LINESTRING(-2.107624 1.544163, -1.048320 1.307378) 1-5 NULL LINESTRING(-2.363104 1.126673, -1.771139 -0.038562) NULL 2-5 Tym razem dostałem oczekiwane pola, ale z niezrozumiałym bonusem w postaci dubli obiektów 1-1 I 1-2 z polami "NULL". Niestety identyczny wynik (pole z wartościę "NULL") uzyskujemy dla linii występującej tylko na jednej z warstw, więc sposób też nie do końca spełnia warunki zadania. Jakieś inne pomysły? :o) Od razu: warstw jest kilka (do złożenia w jedną), obiektów na nich wiele. Przerabianie danych ręcznie niezbyt mi się uśmiecha. RE: kilka warstw liniowych w jedną - borys - 14-03-2011 Hmm ja bym to wrzucił do jakiejkolwiek bazy danych (nawet SpatiaLite) i jej funkcjami to obrobił. RE: kilka warstw liniowych w jedną - [wiki] - 14-03-2011 (14-03-2011, 11:20)borys napisał(a): Hmm ja bym to wrzucił do jakiejkolwiek bazy danych (nawet SpatiaLite) i jej funkcjami to obrobił. To ja poproszę jakąś szerszą odpowiedź jak to zrobić :o) |