Narzędzia użytkownika

Narzędzia witryny


r_mapy

To jest stara wersja strony!


Generowanie map w R

Instalacja pakietów

Będziemy potrzebować pakietu rgdal oraz ZPD:

install.packages(c('rgdal', 'rgeos'))
devtools::install_fgithub('zozlak/ZPD')

Pod linuksem do skompilowania pakietu potrzebne będą w systemie biblioteki libgdal-dev oraz libproj-dev.

Wczytywanie podkładów z bazy danych

Wczytywanie podkładów jest nieco złożone, wymaga bowiem:

  • wczytania z bazy danych kontekstowych i opisu obszaru w formacie GeoJSON dla każdego JST
  • ręcznego złączenia tego w jeden obiekt GeoJSON typu FeatureCollection
  • sparsowania na format pakietu rgdal

Przykład dla gmin województwa dolnośląskiego w latach 2008 i 2013.

library(ZPD)
library(rgdal)
 
# pobranie z bazy
src = polacz()
zapytanie = "
  SELECT 
    id_wojewodztwa * 10000 + id_powiatu * 100 + id_gminy AS teryt,
    rodzaj_gminy, 
    ST_AsGeoJSON(geom) AS geojson 
  FROM teryt_gminy
  WHERE id_wojewodztwa = 2 AND rok IN (2008, 2013)
"
podklady = tbl(src, sql(zapytanie)) %>%
  collect()
 
# konwersja na FeatureCollection
podklady = podklady %>%
  group_by(rok) %>%
  summarize(
    geojson = paste0(collapse = ',',
      '{"type": "Feature", ',
      '"properties": { "teryt": ', podklady$teryt, ', "rodzaj_gminy": "', podklady$rodzaj_gminy, '"},',
      '"geometry": ', podklady$geojson, 
      '}'
    )
  ) %>% 
  mutate(geojson = paste0('{"type": "FeatureCollection", "features": [', geojson, ']}'))
 
# konwersja na obiekty rgdal
mapy = sapply(podklady$geojson, readOGR, layer = "OGRGeoJSON")
names(mapy) = podklady$rok
 
# weryfikacja
plot(mapy[[1]])
head(mapy[[1]]@data)
r_mapy.1424439029.txt.gz · ostatnio zmienione: 2015/02/20 14:30 przez zozlak