path <- "C://Users//np83zg//OneDrive - Aalborg Universitet//Skrivebord//transportzones//"
setwd(path)
library(data.table)
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(ttwa)
## Warning: package 'ttwa' was built under R version 4.0.3
library(tmap)
cmu <- read.table("cmu.txt",header=TRUE)
cmu <- setDT(cmu)
shp <- read_sf("mun_shape.shp")
shp <- shp[order(shp$kode),]
ttas <- ttwa(as.data.frame(cmu),"residence","workplace","nn",size_center=25000)
## Greedy processus :
##
|
| | 0%
|
|= | 1%
|
|= | 2%
|
|== | 3%
|
|=== | 4%
|
|==== | 5%
|
|==== | 6%
|
|===== | 7%
|
|====== | 8%
|
|====== | 9%
|
|======= | 10%
|
|======== | 11%
|
|========= | 12%
|
|========= | 13%
|
|========== | 14%
|
|=========== | 15%
|
|=========== | 16%
|
|============ | 17%
|
|============= | 18%
|
|============== | 19%
|
|============== | 20%
|
|=============== | 21%
|
|================ | 22%
|
|================ | 23%
|
|================= | 24%
|
|================== | 26%
|
|=================== | 27%
|
|=================== | 28%
|
|==================== | 29%
|
|===================== | 30%
|
|===================== | 31%
|
|====================== | 32%
|
|======================= | 33%
|
|======================== | 34%
|
|======================== | 35%
|
|========================= | 36%
|
|========================== | 37%
|
|========================== | 38%
|
|=========================== | 39%
|
|============================ | 40%
|
|============================= | 41%
|
|============================= | 42%
|
|============================== | 43%
|
|=============================== | 44%
|
|=============================== | 45%
|
|================================ | 46%
|
|================================= | 47%
|
|================================== | 48%
|
|================================== | 49%
|
|=================================== | 50%
|
|==================================== | 51%
|
|==================================== | 52%
|
|===================================== | 53%
|
|====================================== | 54%
|
|======================================= | 55%
|
|======================================= | 56%
|
|======================================== | 57%
|
|========================================= | 58%
|
|========================================= | 59%
|
|========================================== | 60%
|
|=========================================== | 61%
|
|============================================ | 62%
|
|============================================ | 63%
|
|============================================= | 64%
|
|============================================== | 65%
|
|============================================== | 66%
|
|=============================================== | 67%
|
|================================================ | 68%
|
|================================================= | 69%
|
|================================================= | 70%
|
|================================================== | 71%
|
|=================================================== | 72%
|
|=================================================== | 73%
|
|==================================================== | 74%
|
|===================================================== | 76%
|
|====================================================== | 77%
|
|====================================================== | 78%
|
|======================================================= | 79%
shp$id <- ttas$zoning$id
shp$zone <- as.factor(ttas$zoning$zone)
all(shp$id==shp$kode)
## [1] TRUE
tmap_mode("plot")
## tmap mode set to plotting
## tmap mode set to plotting
tm_shape(shp) + tm_polygons("zone",palette="Accent") +
tm_shape(shp) + tm_borders("white", lwd = 1.2)
# Try to add neighbouring argument
stn <- st_intersects(shp)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
adj <- data.frame(origin=rep(0,98*98),destination=rep(0,98*98),neighbour=rep(0,98*98))
bool <- c()
org <- c()
des <- c()
for (i in 1:98)
{
org <- c(org,rep(shp$kode[i],98))
des <- c(des,shp$kode)
add <- rep(0,98)
add[unlist(stn[i])] <- 1
bool <- c(bool,add)
}
adj$neighbour <- as.logical(bool)
adj$destination <- des
adj$origin <- org
adj <- setDT(adj)
cmu <- merge(adj,cmu,by.x=c("origin","destination"),by.y=c("residence","workplace"),all.x=TRUE)
cmu[,n:=ifelse(is.na(nn),0,nn)]
cmu <- cmu[origin<400 & destination<400,]
ttas <- ttwa(as.data.frame(cmu),"origin","destination","n",conti="neighbour",size_center=20000)
## Greedy processus :
##
|
| | 0%
|
|== | 2%
|
|=== | 4%
|
|===== | 7%
|
|====== | 9%
|
|======== | 11%
|
|========= | 13%
|
|=========== | 16%
|
|============ | 18%
|
|============== | 20%
|
|================ | 22%
|
|================= | 24%
|
|=================== | 27%
|
|==================== | 29%
|
|====================== | 31%
|
|======================= | 33%
|
|========================= | 36%
|
|========================== | 38%
|
|============================ | 40%
|
|============================== | 42%
|
|=============================== | 44%
|
|================================= | 47%
|
|================================== | 49%
|
|==================================== | 51%
|
|===================================== | 53%
|
|======================================= | 56%
|
|======================================== | 58%
|
|========================================== | 60%
|
|============================================ | 62%
|
|============================================= | 64%
|
|=============================================== | 67%
|
|================================================ | 69%
|
|================================================== | 71%
|
|=================================================== | 73%
|
|===================================================== | 76%
shp <- shp[shp$kode<400,]
shp$id <- ttas$zoning$id
shp$zone <- as.factor(ttas$zoning$zone)
all(shp$id==shp$kode)
## [1] TRUE
tmap_mode("plot")
## tmap mode set to plotting
## tmap mode set to plotting
tm_shape(shp) + tm_polygons("zone",palette="Accent") +
tm_shape(shp) + tm_borders("white", lwd = 1.2)