R-paketti geofi Tilastokeskuksen avointen paikkatietoaineistojen käyttöön

Kategoriat: R

Olemme hiljalleen kirjoittaneet ropengov-porukalla seuraajaa gisfin-paketille nimeltä geofi. Paketti mahdollistaa avointen Suomea koskevien paikkatietoaineistojen käytön R:ssä. Painopiste on ollut hallinnollisissa aluerajoissa ja tällä hetkellä ensisijaisena aineistolähteenä on Tilastokeskuksen wfs-rajapinta, josta geofi-paketin funktioilla voi ladata kuntarajat, postinumeroalueet sekä väestöruudukot.

geofi-pakettia ei ole vielä julkaistu CRAN:ssa, etkä voi asentaa sitä intall.packages()-funktiolla. Sen sijaan voit asentaa sen suoraan Github:sta komennolla: remotes::install_github("ropengov/geofi") ja kokeilla seuraavien esimerkkien tai tämän geofi_selain-sovelluksen avulla.

Kuntarajat

library(geofi)
library(ggplot2)

municipalities <- get_municipalities(year = 2020, scale = 4500)
ggplot(municipalities) + 
  geom_sf(aes(fill = as.integer(kunta))) +
  scale_fill_viridis_c()

Postinumeroalueet

zipcodes <- get_zipcodes(year = 2020) 
ggplot(zipcodes) + 
  geom_sf(aes(fill = as.integer(posti_alue)), color = alpha("white", 1/3)) +
  scale_fill_viridis_c()

Väestöruudukko

pop_grid <- get_population_grid(year = 2018, resolution = 5)
ggplot(pop_grid) + 
  geom_sf(aes(fill = objectid), color = alpha("white", 1/3)) +
  scale_fill_viridis_c()

Maakuntajako, sairaanhoitopiirit ja useat muut aluejaot perustuvat kuntajakoon. get_municipalities()-funtion palauttamassa datassa löytyvät nämä attribuuttimuuttujat (vuosi 2020), joiden avulla voit aggregoida kuntatason dataa ylemmille tasoille.

library(dplyr)
municipalities <- get_municipalities(year = 2019, scale = 4500)
regions <- municipalities %>% 
  group_by(maakunta_name_fi) %>% summarise()
ggplot(regions) + 
  geom_sf(aes(fill = maakunta_name_fi)) +
  scale_fill_viridis_d()

Luonnollisesti voit yhdistää geofi:n datoihin muita attribuuttidatoja. Alla olevassa esimerkissä haetaa Tilastokeskuksen kuntien avainluvut ja luodaan kartta kuntien väkiluvuista.

library(tidyr)
library(pxweb)
library(janitor)

municipalities17 <- get_municipalities(year = 2017)

# pull municipality data from Statistics Finland
pxweb_query_list <-
  list("Alue 2019"=c("*"),
       "Tiedot"=c("*"),
       "Vuosi"=c("2017"))
px_data <-
  pxweb_get(url = "http://pxnet2.stat.fi/PXWeb/api/v1/fi/Kuntien_avainluvut/2019/kuntien_avainluvut_2019_aikasarja.px",
            query = pxweb_query_list)
# Convert to data.frame
tk_data <- as.data.frame(px_data, column.name.type = "text", variable.value.type = "text")
tk_data2 <- tk_data %>%
  rename(name = `Alue 2019`) %>%
  mutate(name = as.character(name),
         # Paste Tiedot and Vuosi
         Tiedot = paste(Tiedot, Vuosi)) %>%
  select(-Vuosi) %>%
  spread(Tiedot, `Kuntien avainluvut`) %>%
  as_tibble()
tk_data3 <- janitor::clean_names(tk_data2)

# Join with Statistics Finland attribute data
dat <- left_join(municipalities17, tk_data3)

ggplot(dat) + 
  geom_sf(aes(fill = vakiluku_2017), color = alpha("white", 1/3)) +
  scale_fill_viridis_c(trans = "sqrt")

Katso lisää paketin kehityssivuilta Github:sta ja tule apuun kehittämisessä!