Med R kan man gratis rita fina kartor med data från lantmäteriet. När du väl har ett konto kan du med hjälp av FTP ladda ner de data som behövs. Mer information finns även på https://www.lantmateriet.se/sv/Kartor-och-geografisk-information/oppna-data/
.
FTP-adressen är ftp://download-opendata.lantmateriet.se
Jag laddade följande kartdata: GSD-Sverigekartor_vektor\1_milj\Sverige\Sweref_99_TM. När de unzippats kunde jag börja titta på kartor med hjlp av R och paketet rgdal.
library(rgdal)
riksDir="shape/svk/riks"
AN=readOGR(riksDir, "an_riks")
De olika skikten läses in med readOGR. De är uppdelade på ytor, linjer och text. Jag läste in allihop enligt ovanstående mönster.
Sedan definerade jag färger.
watercol="#9AC9FF" # light blue 88B7FF"
naturecol="#E3F5D9" # light green D2E4C8"
roadcol="orange"
brown="#DD8800"
eroadcol="red"
ortcol="#FF2222"
bigroad="#EE6611"
lancol="gray42"
xlim=c(500000, 690000)
ylim=c(7100000, 7250000)
Jag sparar bilden som png med två delar som definieras nedan.
png("new.png", height = 1000, width = 2000, units = 'px', res = 300, pointsize = 4.5, bg = "white")
op = par(mar = rep(0, 4))
par(fig=c(0,0.775,0,1), oma=c(0,0,0,0))
Därefter är det bara att rita upp de två kartorna. Parametern vborter innehåller alltså namnen på de orter som jag vill märka ut.
plot(MY[MY$KATEGORI == "Skogsmark",], border=naturecol, col=naturecol, xlim=xlim, ylim=ylim)
plot(MY[MY$KKOD==3,], col=watercol, border=watercol, xlim=xlim, ylim=ylim, add=TRUE)
plot(ML[ML$KKOD %in% c(304, 305, 306, 307, 308, 313),], col=watercol, border=watercol, xlim=xlim, ylim=ylim, add=TRUE)
plot(VL[VL$KATEGORI %in% "Allmän väg, vägnr 100-499",], xlim=xlim, ylim=ylim , col=brown, lwd=.8, add=TRUE)
plot(VL[VL$KATEGORI %in% "Allmän väg, vägnr >500",], col=brown, lwd=1.1, add=TRUE)
plot(VL[VL$KATEGORI %in% "Allmän väg, vägnr E4-99",], col=bigroad, lwd=1.8, add=TRUE)
plot(AK, border=lancol, xlim=xlim, ylim=ylim, lty=4, lwd=0.8, add=TRUE)
plot(TX[TX$TEXT %in% vborter,], pch=20, cex=1.5, add=TRUE, col=ortcol, xlim=xlim, ylim=ylim)
text(TX@coords[TX$TEXT %in% vborter,1]-2200, 2200+TX@coords[TX$TEXT %in% vborter,2], label=TX[TX$TEXT %in% vborter,]$TEXT, cex=1.3, pos=4, col="black")
par(fig=c(0.72,1,0,1), new=TRUE, oma=c(0,0,0,0))
och här är översiktskartan.
plot(MY[MY$KKOD %in% c(5, 6, 7, 8),], col='black', bg='gray')
rect(470000,7100000,650000,7250000, col="white", border=NA)
box(col = 'gray')
par(op)
dev.off()
Den ovan ritade bilden ser ut så här