Bazy danychGISProjekt R

Darmowe dane w R – OSM

Często w naszych postach używamy danych z projektu OpenStreetMap.

Skąd je bierzemy? Pobieramy je wykorzystując biblioteki R.

Dzisiaj pokażemy Wam jak to zrobić.

Pobieramy i instalujemy pakiet osmdata:

install.packages('osmdata')
library(osmdata)

Pobierzemy dane dla konkretnego zakresu. Tworzymy taki zakres jako wektor współrzędnych geograficznych:

bb = c(20.9, 52.2, 21.0, 52.3)

Z projektu OSM możemy pobrać wszystkie dane lub też wybrać konkretne. Musimy pamiętać, że ograniczając wybór przyspieszamy pobieranie. Wszystkie dostępne warstwy znajdziecie na stronie https://wiki.openstreetmap.org/wiki/Map_Features. My wybierzemy dla naszego zakresu restauracje. Zrobimy to taką linijką kodu:

dt <- opq (bbox = bb) %>%
 add_osm_feature (key = 'cuisine') %>%
 osmdata_sf()

, gdzie

opq to zapytanie do OSM

add_osm_feature to dodanie do zapytania warstw zawierających obiekty związane z kuchnią key=’cuisine’

osmdata_sf to zapis wyników do klasy sf

W wyniku otrzymujemy warstwy z punktami i poligonami:

> dt
Object of class 'osmdata' with:
                $bbox : 52.2,20.9,52.3,21
       $overpass_call : The call submitted to the overpass API
                $meta : metadata including timestamp and version numbers
          $osm_points : 'sf' Simple Features Collection with 479 points
           $osm_lines : NULL
        $osm_polygons : 'sf' Simple Features Collection with 21 polygons
      $osm_multilines : NULL
   $osm_multipolygons : NULL

Wyświetlamy wynik na mapie z użyciem leaflet:

leaflet() %>% addTiles() %>% addCircleMarkers(data = dt$osm_points, radius = 1)

osmdata_1

Zakres możemy również zdefiniować używając nazwy obszaru dla którego chcemy pobrać dane:

bb = getbb("Warsaw")

Pobieramy dane tym razem z zawężeniem restauracji serwujących pizzę i zapisujemy do klasy sp:

dt <- opq (bbox = bb) %>%
 add_osm_feature (key = 'cuisine',value = 'pizza') %>%
 osmdata_sp()

Wyświetlamy wynik:

leaflet() %>% addTiles() %>% addCircleMarkers(data = dt$osm_points, radius = 1)

osmdata_2

W następnych ćwiczeniach możecie już pracować na danych wybranych np. dla Waszego rejonu zamieszkania. Testujcie nowo poznaną bibliotekę.