Operacje nakładania warstw wektorowych
Nakładanie warstw wektorowych (vector overlay) to podstawowy zbiór operacji wykorzystywany w systemach informacji geograficznej do łączenia wektorowych zbiorów danych w celu analizy i zrozumienia relacji przestrzennych.
Do analizy mogą zostać wykorzystane różne typy geometrii reprezentujące przykładowo drzewa, granice, drogi czy budynki.
Proces nakładania łączy geometrię i atrybuty warstw wejściowych, umożliwiając sprawdzenie, w jaki sposób cechy z różnych warstw wpływają na siebie w przestrzeni.
Wyodrębnienie tylko tych rzek, które przepływają przez wielkopolskę.
intersect(admin[admin$woj == "Wielkopolskie"], rzeki)
Wynik obejmuje tylko te obiekty z jednej warstwy, które nie nakładają się na drugą warstwę.
p1 = vect("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")
p2 = vect("POLYGON ((5 5, 5 -5, 15 -5, 15 5, 5 5))")
erase(p1, p2)
Przykład: Wykluczenie budynków nieobjętych zasięgiem powodzi.
Wynik obejmuje tylko te obiekty, które nakładają się na obu warstwach wejściowych.
p1 = vect("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")
p2 = vect("POLYGON ((5 5, 5 -5, 15 -5, 15 5, 5 5))")
intersect(p1, p2)
Przykład: Przecięcie warstwy typów gleby z warstwą działek pokaże typ gleby w obrębie każdej działki.
Wynik obejmuje wszystkie obiekty z obu warstw wejściowych, w tym nakładające się obszary.
p1 = vect("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")
p2 = vect("POLYGON ((5 5, 5 -5, 15 -5, 15 5, 5 5))")
union(p1, p2)
Przykład: Złączenie warstwy obszarów zagrożonych powodziami i warstwy obszarów zagrożonych osuwiskami, zwróci obszary zagrożone powodzią, osuwiskami oraz jednocześnie powodzią i osuwiskami.
Wynik obejmuje obszary, w których warstwy wejściowe nie zachodzą na siebie, tj. wyklucza obszary przecięcia.
p1 = vect("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")
p2 = vect("POLYGON ((5 5, 5 -5, 15 -5, 15 5, 5 5))")
symdif(p1, p2)
Przykład: Wykrywanie zmian pokrycia terenu w czasie.
Wynikiem jest nowa warstwa zawierająca zaktualizowane obiekty pierwszej warstwy wejściowej na podstawie drugiej.
p1 = vect("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")
p2 = vect("POLYGON ((5 5, 5 -5, 15 -5, 15 5, 5 5))")
cover(p1, p2)
Przykład: Aktualizacja przebiegu granic działek ewidencyjnych.
Docinanie jest podobną operacją do przecięcia, z tą różnicą, że atrybuty pochodzące z drugiej warstwy nie są kopiowane.
p1 = vect("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")
p2 = vect("POLYGON ((5 5, 5 -5, 15 -5, 15 5, 5 5))")
crop(p1, p2)
Przykład: Wyodrębnienie dróg, które znajdują się w granicach miasta.
Wyjściowy typ geometrii przy docinaniu może być identyczny lub niższy.
Pojęcie srebrnego poligonu (sliver polygon) odnosi się do małego, wąskiego i często niezamierzonego wielokąta, który powstaje w wyniku przetwarzania danych przestrzennych, np. podczas operacji przecięcia, łączenia lub przycinania warstw wektorowych.
Najczęściej powstają na skutek niedopasowanych granic lub ograniczonej precyzji zapisu danych, co powoduje niewielkie przerwy pomiędzy obiektami.
p1 = vect("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))")
p2 = vect("POLYGON ((0.1 0.1, 10.1 0.1, 10.1 10.1, 0.1 10.1, 0.1 0.1))")
symdif(p1, p2)