Forum QGIS

Pełna wersja: kilka warstw liniowych w jedną
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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.
Hmm ja bym to wrzucił do jakiejkolwiek bazy danych (nawet SpatiaLite) i jej funkcjami to obrobił.
(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)