GISProjekt R

gIntersects i gIntersection

Biblioteka rgeos zawiera wiele narzędzi do analizy warstw wektorowych. Dwoma podstawowymi funkcjami są gIntersects i gIntersection. Nazwy funkcji są podobne, ale każda zwraca co innego.

Używać będziemy dwóch bibliotek rgdal i rgeos.
library(rgdal)
library(rgeos)

Wczytujemy dwie warstwy wektorowe kolej (kolor czarny) i drogi (kolor brązowy) z wykorzystaniem narzędzi biblioteki rgdal.

kolej <- readOGR("D:/", "kolej", stringsAsFactors = FALSE)
drogi <- readOGR("D:/", "drogi", stringsAsFactors = FALSE)

 

Funkcja gIntersects służy do wskazania elementów jednej warstwy przecinających się z obiektami drugiej warstwy.

int <- gIntersects(kolej,drogi)
> int
[1] TRUE

Funkcja zdefiniowana w ten sposób zwraca tylko informację czy warstwy posiadają jakieś punkty wspólne (przecinają się). Dodając argument byid uzyskamy na wyjściu macierz zawierającą informacje o przecinaniu się poszczególnych elementów pomiędzy warstwami:

int <- gIntersects(kolej, drogi, byid = TRUE)
> int
      0     1     2     3     4 ..
0 FALSE FALSE FALSE FALSE FALSE ..
1 FALSE FALSE FALSE FALSE FALSE ..
2 FALSE FALSE FALSE FALSE FALSE ..
3 FALSE FALSE FALSE FALSE FALSE ..
4 FALSE FALSE FALSE FALSE FALSE ..
.    ..    ..    ..    ..    ..

Korzystając z funkcji apply możemy wybrać odcinki dróg przecinające się z kolejami:

sel <- apply(int, 1, any)

Wybrane odcinki w zmiennej sel wyświetlone zostały kolorem czerwonym na mapie.

Funkcja gIntersection umożliwia tworzenie warstwy przecięć pomiędzy dwoma zbiorami. W naszym przypadku będą to punkty (przejazdy), gdzie drogi przebiegają przez linie kolejowe.

przeciecia <- gIntersection(kolej, drogi)

Wynikowa warstwa to punkty zaznaczone na mapie czerwonymi kropkami.

Podsumowując:

gIntersects – służy do sprawdzenia, czy elementy/warstwy przecinają się wzajemnie.

gIntersection – służy do tworzenia warstwy elementów wspólnych dla dwóch zbiorów.