Buforowanie wektora w R

Buforowanie jest jednym z podstawowych narzędzi GIS używanym w analizach przestrzennych. Ale jak to zrobić w R? Wczytajmy najpierw warstwę kilku szlaków kolejowych z Open Street Map (pobierz) do  zmiennej kolej, którą wykorzystamy do prezentacji możliwości funkcji buforowania:

Wyświetlmy wczytaną warstw:

Wyświetlmy podsumowanie dla wczytanej warstwy kolej:

Wczytana warstwa zawiera 213 obiektów liniowych prezentujących odcinki linii kolejowych znajdujących się w jednym z powiatów.

Do podstawowych analiz przestrzennych na danych wektorowych służy biblioteka rgeos, którą musimy zainstalować i zainicjować:

Do buforowania warstw wektorowych służy funkcja gBuffer z zainstalowanej wcześniej biblioteki. Wygenerujmy za jej pomocą bufor wokół linii kolejowych o wielkości 1 km:

Wyświetlmy wygenerowany bufor oraz linie kolejowe:

Sprawdźmy ile elementów ma bufor:

Bufor ma jeden element, to znaczy że bufory dla poszczególnych odcinków linii kolejowej zostały ze sobą połączone. W przypadku, gdy chcemy z użyciem tej funkcji otrzymać bufory dla każdego elementu zbioru musimy dodać do funkcji argument byid równy TRUE:

Wyświetmy wynik działania funkcji:

Sprawdźmy ile teraz elementów ma bufor:

Dla każdego elementu został wygenerowany oddzielny bufor. W funkcji gBuffer możemy również zdefiniować różną wartość bufora dla każdego z elementów. Wygenerujmy wektor w zawierający szerokość bufora 500 m:

Zmieńmy jedną z wartości wektora na 2000 m:

Teraz w funkcji gBuffer do atrybutu width wstawmy utworzony przez nas wektor w:

Wyświetlamy wynik:

Na mapie widać, że jedna z linii kolejowych ma dużo większy obszar bufora niż pozostałe. Tak to zdefiniowaliśmy w naszym wektorze w.

Podsumowując do buforowania w R służy funkcja gBuffer. Tworzone bufory możemy dowolnie modyfikować w zależności od naszych potrzeb poprzez zdefiniowanie odpowiednich atrybutów funkcji. W R można znaleźć wiele funkcji podobnych do przedstawionej znajdujących się w innych bibliotekach, ale tę kwestię pozostawiamy R-owym szperaczom:) 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Translate using Google Translate»
Social media & sharing icons powered by UltimatelySocial

Podoba Ci się nasza strona? Odwiedź nasz profil