Skip to content

Instantly share code, notes, and snippets.

@antagomir
Created February 22, 2012 23:45
Show Gist options
  • Save antagomir/1888440 to your computer and use it in GitHub Desktop.
Save antagomir/1888440 to your computer and use it in GitHub Desktop.
uusi kuntajako kehitelmää
library(sorvi)
library(rgeos)
library(rgdal)
library(maptools)
library(gpclib)
if (!gpclibPermit()) { gpclibPermit() }
# ----------------------------------------------
# Lue nykyiset kuntarajat Maanmittauslaitoksen aineistosta
# (C) MML 2011
data(MML)
fi.kunnat <- MML[["1_milj_Shape_etrs_shape"]][["kunta1_p"]]
# Länsi-Turunmaan nimi vaihtui Paraisiksi vuoden 2012 alusta,
# lisää muutos dataan
kunnat <- as.character(fi.kunnat$Kunta.FI)
kunnat[[which(kunnat == "Länsi-Turunmaa")]] <- "Parainen"
fi.kunnat$Kunta.FI <- factor(kunnat)
# ----------------------------------------------
# Lue uusi kuntajako tekstitiedostosta uusi.kuntajako.tab
kuntajako.file <- "uusi.kuntajako.tab"
lines <- readLines(kuntajako.file)
uudet.kunnat <- list()
for (li in lines) {
if (!li == "") {
uusi.kunta <- strsplit(li, "\\:")[[1]][[1]]
yhdistyvat <- Strip(strsplit(strsplit(li, "\\:")[[1]][[2]], "\\,")[[1]])
uudet.kunnat[[uusi.kunta]] <- yhdistyvat
}
}
map <- NULL
for (i in 1:length(uudet.kunnat)) {
uusi <- names(uudet.kunnat)[[i]]
vanhat <- uudet.kunnat[[i]]
map <- rbind(map, cbind(rep(uusi, length(vanhat)), vanhat))
}
map <- as.data.frame(map)
colnames(map) <- c("Uusi", "Vanha")
# ----------------------------------------------
# Maarita uusi kunta kullekin nykyisen jaon mukaiselle kunnalle
# Listaa erikseen kunnat, joita ei ole lueteltu uudessa kuntajaossa:
unknown <- setdiff(fi.kunnat$Kunta.FI, map$Vanha)
map <- data.frame(list(Uusi = c(as.character(map$Uusi), unknown), Vanha = c(as.character(map$Vanha), unknown)))
print(paste("Tiedoston", kuntajako.file, "uudesta kuntajaosta puuttuvat kunnat:", paste(unknown, collapse = ",")))
nykyinen.kunta <- fi.kunnat$Kunta.FI
uusi.kunta <- droplevels(map$Uusi[match(fi.kunnat$Kunta.FI, map$Vanha)])
# ----------------------------------------------
# Yhdista nykyisten kuntien alueet uusi.kunta-muuttujan
# osoittamiin uusiin kuntiin
reg <- unionSpatialPolygons(fi.kunnat, uusi.kunta, avoidGEOS = T)
# Nimea uudet kunnat taulukkoon
attr <- data.frame(Uusi.kuntajako = factor(levels(uusi.kunta)))
# Yhdista uudet alueet ja nimet / Merge into a SpatialPolygonsDataFrame
uusi.kuntajako <- SpatialPolygonsDataFrame(reg, attr, match.ID = F)
# ----------------------------------------------
# Visualisoi uusi kuntajako
pic <- PlotShape(uusi.kuntajako, "Uusi.kuntajako", type = "discrete", main = "Uusi kuntajako", ncol = 12)
# Vaihtoehtoinen visualisointi. Esitä uudet kunnat väreillä ja
# näytä nykyiset kuntarajat viivoilla.
fi.kunnat$uusi.kunta <- uusi.kunta
pic2 <- PlotShape(fi.kunnat, "uusi.kunta", type = "discrete", main = "Uusi kuntajako", ncol = 12)
# -----------------------------------------------
# Tulosta kuvat PNG-tiedostoon
png("uusi.kuntajako.png"); print(pic); dev.off()
png("uusi.kuntajako2.png"); print(pic2); dev.off()
# -----------------------------------
# Kirjoita uuden kuntajaon mukaiset rajat ESRI-shapefileen
# HUOM: kirjoitus epäonnistuu, jos työhakemistossa on jo
# ennestaan saman niminen shp-file
writeOGR(uusi.kuntajako, "uudet_kunnat.shp", "uusi.kuntajako", driver="ESRI Shapefile")
Uusimaa-1: Helsinki, Espoo, Vantaa, Kauniainen, Sipoo
Uusimaa-2: Tuusula, Kerava, Järvenpää, Nurmijärvi
Uusimaa-3: Porvoo, Askola, Myrskylä, Loviisa, Lapinjärvi
Uusimaa-4: Kirkkonummi, Inkoo, Siuntio
Uusimaa-5: Lohja, Karjalohja, Nummi-Pusula, Siuntio
Uusimaa-6: Raasepori, Hanko
Uusimaa-7: Vihti, Karkkila
Uusimaa-8: Mäntsälä, Pukkila, Pornainen
Varsinais-Suomi-1: Turku, Kaarina, Raisio, Naantali, Lieto, Tarvasjoki, Aura, Rusko, Masku, Nousiainen, Mynämäki
Varsinais-Suomi-2: Salo, Sauvo, Paimio, Marttila, Koski Tl, Somero
Varsinais-Suomi-3: Loimaa, Oripää, Pöytyä
Varsinais-Suomi-4: Uusikaupunki, Laitila, Kustavi, Taivassalo, Vehmaa
Varsinais-Suomi-5: Parainen, Kemiönsaari
Satakunta-1: Pori, Ulvila, Luvia, Nakkila, Harjavalta, Pomarkku, Merikarvia, Siikainen
Satakunta-2: Rauma, Eurajoki, Pyhäranta
Satakunta-3: Huittinen, Kokemäki, Punkalaidun
Satakunta-4: Kankaanpää, Jämijärvi, Honkajoki, Lavia, Karvia
Satakunta-5: Eura, Säkylä, Köyliö
Kanta-Häme-1: Hämeenlinna, Hattula, Janakkala
Kanta-Häme-2: Riihimäki, Hausjärvi, Loppi, Hyvinkää
Kanta-Häme-3: Forssa, Humppila, Jokioinen, Tammela, Ypäjä
Pirkanmaa-1: Tampere, Pirkkala, Lempäälä, Kangasala, Ylöjärvi, Vesilahti, Nokia, Orivesi
Pirkanmaa-2: Mänttä-Vilppula, Ruovesi, Juupajoki
Pirkanmaa-3: Kihniö, Parkano, Ikaalinen, Hämeenkyrö
Pirkanmaa-4: Urjala, Akaa, Valkeakoski, Pälkäne
Pirkanmaa-5: Sastamala, Kiikoinen
Pirkanmaa-6: Punkalaidun, Huittinen, Kokemäki
Päijät-Häme-1: Lahti, Asikkala, Hollola, Hämeenkoski, Kärkölä, Nastola, Orimattila, Padasjoki
Päijät-Häme-2: Heinola, Hartola, Sysmä
Kymenlaakso-1: Kouvola, Iitti
Kymenlaakso-2: Hamina, Kotka, Miehikkälä, Pyhtää, Virolahti
Etelä-Karjala-1: Lappeenranta, Taipalsaari, Lemi, Luumäki, Savitaipale, Imatra, Ruokolahti, Rautjärvi, Parikkala
Etelä-Savo-1: Mikkeli, Ristiina, Hirvensalmi, Suomenniemi, Mäntyharju, Juva, Kangasniemi, Puumala, Pertunmaa
Etelä-Savo-2: Savonlinna, Kerimäki, Enonkoski, Punkaharju, Sulkava, Rantasalmi
Etelä-Savo-3: Varkaus, Joroinen, Heinävesi, Pieksämäki, Leppävirta
Pohjois-Savo-1: Kuopio, Siilinjärvi, Maaninka, Tervo, Tuusniemi, Suonenjoki, Juankoski, Nilsiä, Kaavi, Rautalampi, Vesanto, Rautavaara
Pohjois-Savo-2: Iisalmi, Sonkajärvi, Vieremä, Lapinlahti, Kiuruvesi, Keitele, Pielavesi
Pohjois-Savo-3: Varkaus, Joroinen, Heinävesi, Pieksämäki
Pohjois-Karjala-1: Joensuu, Ilomantsi, Kontiolahti, Liperi, Outokumpu, Polvijärvi
Pohjois-Karjala-2: Nurmes, Valtimo, Lieksa, Juuka
Pohjois-Karjala-3: Kitee, Tohmajärvi, Kesälahti, Rääkkylä
Keski-Suomi-1: Hankasalmi, Joutsa, Jyväskylä, Laukaa, Luhanka, Muurame, Petäjävesi, Toivakka, Uurainen, Keuruu, Multia
Keski-Suomi-2: Jämsä, Kuhmoinen
Keski-Suomi-3: Karstula, Kannonkoski, Kivijärvi, Kyyjärvi, Saarijärvi, Kinnula
Keski-Suomi-4: Konnevesi, Pihtipudas, Viitasaari, Äänekoski
Etelä-Pohjanmaa-1: Seinäjoki, Ilmajoki, Jalasjärvi, Lapua, Isokyrö
Etelä-Pohjanmaa-2: Kauhajoki, Kurikka, Isojoki, Karijoki, Teuva
Etelä-Pohjanmaa-3: Kauhava, Evijärvi, Lappajärvi
Etelä-Pohjanmaa-4: Alajärvi, Soini, Vimpeli
Etelä-Pohjanmaa-5: Alavus, Kuortane, Töysä, Ähtäri, Virrat
Pohjanmaa-1: Vaasa, Korsnäs, Laihia, Maalahti, Mustasaari, Vöyri, Vähäkyrö
Pohjanmaa-2: Kristiinankaupunki, Kaskinen, Närpiö
Pohjanmaa-3: Pietarsaari, Luoto, Pedersöre, Uusikaarlepyy
Keski-Pohjanmaa-1: Kokkola, Halsua, Kannus, Kaustinen, Lestijärvi, Perho, Toholampi, Veteli, Kruunupyy
Pohjois-Pohjanmaa-1: Oulu, Hailuoto, Ii, Kempele, Liminka, Lumijoki, Muhos, Pudasjärvi, Tyrnävä, Utajärvi, Vaala, Haukipudas, Kiiminki, Oulunsalo, Yli-Ii
Pohjois-Pohjanmaa-2: Pyhäjoki, Raahe, Siikajoki, Vihanti
Pohjois-Pohjanmaa-3: Alavieska, Kalajoki, Merijärvi, Oulainen, Sievi, Ylivieska
Pohjois-Pohjanmaa-4: Haapajärvi, Haapavesi, Kärsämäki, Pyhäjärvi, Pyhäntä, Reisjärvi, Siikalatva, Nivala
Pohjois-Pohjanmaa-5: Kuusamo, Taivalkoski, Posio
Kainuu-1: Kajaani, Sotkamo, Paltamo, Ristijärvi, Vaala
Kainuu-2: Suomussalmi, Hyrynsalmi, Puolanka
Kainuu-3: Kuhmo
Lappi-1: Rovaniemi, Ranua, Pello
Lappi-2: Kemi, Tornio, Keminmaa, Tervola, Simo, Ylitornio
Lappi-3: Kittilä, Enontekiö, Kolari, Muonio
Lappi-4: Inari, Utsjoki
Lappi-5: Kemijärvi, Pelkosenniemi, Savukoski, Salla
Lappi-6: Sodankylä
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment