Joensuun keskustan liikennemalli J1
Opasnet Suomista
Moderaattori:Ei ole (katso kaikki) Kuinka ryhtyä moderaattoriksi? Sivun edistymistä ei ole arvioitu. Arvostuksen määrää ei ole arvioitu (ks. peer review). |
Lisää dataa
|
Sisällys
Rajaus
Liikennemalli J1 on rajusti yksinkertaistettu version Helsingin seudun joukkoliikennemallista. Malli J1 on rajattu Joensuun ydinkeskustaan 9*13-korttelin hilaan. Mallia J1 käytetään osana 29.9.2011 Joensuussa järjestettävää riskinarvioinnin ja yhteisöllisen päätöksenteon koulutustapahtumaa.
Määritelmä
Data
Kausaliteetti
- Ylävirtamuuttujia ei ole.
Yksikkö
Muuttujan tulokset on ilmaistu useissa yksiköissä (liikennesuorite, CO2-päästöt, pienhiukkaspäästöt, DALYt)
Kaava
library(OpasnetBaseUtils) risteykset <- op_baseGetData("opasnet_base", "Op_fi2681") # Muutetaan tekstitulokset numeroiksi. Jostain syystä Länteen tallentui tekstinä. risteykset[!is.na(risteykset$Result.Text), "Result"] <- as.numeric(risteykset[!is.na(risteykset$Result.Text), "Result.Text"]) risteykset <- reshape(risteykset[, 3:5], timevar = "Ilmansuunta", idvar = "Risteys", direction = "wide") risteykset[is.na(risteykset)] <- 0 risteykset <- risteykset[, c(1,2,4,5,3)] colnames(risteykset) <- c("Risteys","Pohjoiseen","Itään","Etelään","Länteen") risteykset # Luetaan liikennemaarat # # risteykset <- re#ad.table(file="~/Projects/Osallistuva_Demokratia/ERACEDU_Joensuu/risteykset.dat", sep=",") # Eristetaan risteyspisteet omaan vektoriin÷ # risteyspisteet <- risteykset[[1]]; dim(risteyspisteet)<-c(9,13) # Muodostetaan ylimaaraiset rivit ja sarakkeet lahinaapuritaulukointia # varten (ei periodisia reunoja): # test3<-c(1:(15*11)); dim(test3)<-c(11,15); test3<-test3*0; test3[2:10,2:14]<-as.character(risteyspisteet); test3[1:11,1] <- "AA"; test3[1:11,15] <- "AA"; test3[1,2:14] <- "BB"; test3[11,2:14] <- "BB"; test3[1,1] <- "XX"; test3[1,15] <- "XX"; test3[11,1] <- "XX"; test3[11,15] <- "XX"; test3 # # Poluksi maaritellaan pistejoukko vertekseja # polku<-c("A1","B1","B2") # Maaritellaan lahinaapurilista kaikille polun pisteille: # lahinaapurilista <- list(1:(4*length(polku))); for(i in 1:length(polku)) {apuL <- which(test3 == polku[[i]]); naapurit <-c(apuL+11,apuL-1,apuL-11,apuL+1); lahinaapurilista[[4*(i-1)+1]] <- naapurit[[1]]; lahinaapurilista[[4*(i-1)+2]] <- naapurit[[2]]; lahinaapurilista[[4*(i-1)+3]] <- naapurit[[3]]; lahinaapurilista[[4*(i-1)+4]] <- naapurit[[4]]}; lahinaapurit <- as.numeric(lahinaapurilista); # # Maaritellaan lahinaapuritN-vektori # lahinaapuritN <- list(1:length(lahinaapurit)); for(y in 1:length(lahinaapurit)) {lahinaapuritN[[y]] <- which(as.character(risteykset[[1]]) == test3[lahinaapurit][[y]])} # Poistetaan listasta polun koordinaattipisteet: # polkuN <- list(1:length(polku)); for(i in 1:length(polku)) {polkuN[[i]] <- which(test3 == polku[[i]])}; num_polku<- as.numeric(polkuN); # Maaritellaan apu_kampa, joka kertoo missa poistettavat polun elementit # sijaitsevat lahinaapurilistassa: # apu_kampa<-as.numeric(lahinaapurit %in% num_polku)*(1:length(lahinaapurit)); # Maaritetaan muuttujan apu_kampa avulla lyhennetty lahinaapurilista, josta # on poistettu polun elementit: # mod_lahinaapurit <- c(1:length(lahinaapurit)); for(i in 1:length(lahinaapurit)) {if(i==apu_kampa[[i]]) mod_lahinaapurit[[i]] <- 0 else mod_lahinaapurit[[i]] <- lahinaapurit[[i]]}; mod_lahinaapurit <- mod_lahinaapurit[mod_lahinaapurit != 0]; # Poistetaan listasta termit "AA" ja "BB" # apu_kampa <- which(test3[mod_lahinaapurit] == "AA" | test3[mod_lahinaapurit] == "BB"); mod_lahinaapurit <- mod_lahinaapurit[-apu_kampa]; # Tama olisi ollut yksinkertaisempi tapa poistaa myos muuttuja polku elementit # lahinaapurit-listasta. Syy miksi sita ei kaytetty on se etta which()-funktio # ei osaa verrata kahta vektoria toisiinsa. Vertailuun valikoituu vain # jalkimmaisen vektorin ensimmainen elementti. # Yleistetaan ylla oleva luuppiin, joka kay lapi kaikki mod_lahinaapurit # -listan alkiot: # lahinaapuri_risteykset <- list(1:length(mod_lahinaapurit)); for(i in 1:length(mod_lahinaapurit)) {lahinaapuri_risteykset[[i]] <- which(risteykset[[1]] == as.list(test3[mod_lahinaapurit])[[i]])} # Lasketaan painokertoimet kaikille risteyspisteille niiden liikennemaarien # perusteella. Painokerroin = sarakkeen liikennemaara/kokonaisliikennemaara # ja kokonaisliikennemaara = sarakkeen kaikkien arvojen summa. # Vaikka monet risteykset esiintyvat monta kertaa, ei se haittaa vaikka # ne lasketaankin mukaan joka kerran, koska jos risteyspiste on # lahinaapuripiste useammalle polun pisteelle, pitaa sita painottaakin # suuremmalla kertoimella. # # Painokerrointen mukainen jaettava eri ilmansuunnille (sarakkeet V2-V5) # saadaan laskemalla ensin mitka ovat polun kokonaisliikennemaarat eri # ilmansuuntiin ja kuinka paljon ne pienenevat esim. pyorakaistan # implementoinnin yhteydessa. # # Ensin haetaan polku-muuttujan informaatio risteykset-taulukosta: # polku_risteykset <- list(1:length(polku)); for(i in 1:length(polku)) {polku_risteykset[[i]] <- which(risteykset[[1]] == polku[[i]])} # Polun kokonaisliikennemaara (num_polun_liikennemaara) saadaan seuraaavasti: # polun_liikennemaara <- list(2:5); for(i in 2:5) {polun_liikennemaara[[i]] <- sum(risteykset[as.numeric(polku_risteykset),i])}; num_polun_liikennemaara <- as.numeric(polun_liikennemaara[2:5]) # Oletetaan, etta pyorakaistojen vetaminen ja pyorataskujen rakentaminen # risteyksiin pienentaa autojen (= pikkuautojen ja bussien) liikennemaaria # 10% lisaantyneen odotusajan jne. vuoksi (pyorailijoiden on paastava # lahtemaan taskusta ennen autoilijoita). # # Maaritellaan jaettava liikennemaara vektoriin jaettava: # jaettava <- 0.1*num_polun_liikennemaara; # Jotta kokonaisliikennesuorite ei olisi sailyva suure maaritetaan jaettava-muuttuja # uudella tavalla. Yksinkertainen tapa on muuttaa # jaettava-muuttujassa P,E ja I,L -sarakkeiden paikkaa. # Maaritellaan siis jaettava_rotate -muuttuja: # jaettava_rotate <- c(1,1,1,1); jaettava_rotate[1] <- jaettava[2]; jaettava_rotate[2] <- jaettava[3]; jaettava_rotate[3] <- jaettava[4]; jaettava_rotate[4] <- jaettava[1] # Lasketaan painokertoimet kaikille ilmansuunnille kaikissa # lahinaapuripisteissa: # lnaapuri_liikennemaara <- list(2:5); for(i in 2:5) {lnaapuri_liikennemaara[[i]] <- sum(risteykset[as.numeric(lahinaapuri_risteykset),i])}; num_lnaapuri_liikennemaara <- as.numeric(lnaapuri_liikennemaara[2:5]) # Seuraavaksi lasketaan painokertoimet: # painokertoimet <- list(1:length(lahinaapuri_risteykset)); for(i in 1:length(lahinaapuri_risteykset)) {painokertoimet[[i]] <- risteykset[as.numeric(lahinaapuri_risteykset)[i],2:5]/num_lnaapuri_liikennemaara} # Paljonko saadaan eri ilmansuuntiin jaettavaa joka risteyksessa on koodattu # muuttujaan jaettavaa_per_risteys: # jaettava_per_risteys <- list(1:length(lahinaapuri_risteykset)); for(i in 1:length(lahinaapuri_risteykset)) {jaettava_per_risteys[[i]] <- painokertoimet[[i]]*jaettava_rotate} # Viela pitaa vahentaa 'jaettava' jokaisesta risteyksesta polku-muuttujassa ja # lisata jaettava_per_risteys-maara liikennetta jokaiseen # lahinaapuriristeykseen jokaisessa ilmansuunnassa. Nain malli # SAILYTTAA KOKONAIS LIIKENNEMAARAN. # # Ensin on maaritettava paljonko polulta liikennemaaraa poistetaan: # Talletetaan modifioitu liikennemaaratieto taulukkoon risteykset2. Ensin # polku-muuttujan osalta: # for(i in 1:length(polku)) {risteykset2[as.numeric(polku_risteykset),][i,2:5] <- risteykset[as.numeric(polku_risteykset),][i,2:5] - (risteykset[as.numeric(polku_risteykset),][i,2:5]/num_polun_liikennemaara)*jaettava_rotate} # Tehdaan sama homma polun lahinaapureille (eli sovelletaan samaa kaavaa # kuin polulle) ja talletetaan muutokset taulukkoon risteykset2: # Yo. kaavassa risteykset2-muuttujalle pitaa korvat length(polku) termilla # length(lahinaapuri_risteykset) ja polku_risteykset -muuttuja # lahinaapuri_risteykset -muuttujalla, seka summata edellisiin # risteykset-muuttujan arvoihin jaettava_per_risteys jokaisessa # lahinaapuriristeyksessa: # for(i in 1:length(lahinaapuri_risteykset)) {risteykset2[as.numeric(lahinaapuri_risteykset),][i,2:5] <- risteykset[as.numeric(lahinaapuri_risteykset),][i,2:5] + jaettava_per_risteys[[i]]} # Kokonaisliikennemaarat koko katuverkossa saadaan summaamalla suoritteet # jokaisessa hilapisteessa. Linkit tulee talloin laskettua kahteen kertaan, # mika on oikein siita syysta, etta liikennemaarat ovat 'suunnattuja'. # Oletuksena on etta molempiin suuntiin kulkee joka linkissa yhta paljon # liikennetta ja nettovirta on nolla seka linkeissa etta risteyksissa. # kokonaisliikennemaara <- sum(sum(as.numeric(risteykset2[[2]])),sum(as.numeric(risteykset2[[3]])),sum(as.numeric(risteykset2[[4]])),sum(as.numeric(risteykset2[[5]]))) # Liikennesuoritteet sen sijaan muuttuvat. Liikennemaarat pitaa kertoa # korttelidimensioilla. P-E-suunnassa korttelin sivunpituus on n.135 m # (sarakkeet V2 ja V4) ja I-L -suunnassa n. 100 m (sarakkeet V3 ja V5). # Maaritellaan ensin kokonaisliikennemaarat eri suuntiin: # kokonaisliikennemaara_suunta <- c(sum(as.numeric(risteykset2[[2]])),sum(as.numeric(risteykset2[[3]])),sum(as.numeric(risteykset2[[4]])),sum(as.numeric(risteykset2[[5]]))) # ja sitten liikennesuorite # liikennesuorite <- (kokonaisliikennemaara_suunta[1] + kokonaisliikennemaara_suunta[3])*135 + (kokonaisliikennemaara_suunta[2] + kokonaisliikennemaara_suunta[4])*100 |
Tulokset
Katso myös
- Helsingin seudun liikennemalli
- Osallistuva kaupunkisuunnittelu Joensuussa
- Joensuun keskustan liikennemalli J1
Viitteet
Aiheeseen liittyviä tiedostoja
<mfanonymousfilelist></mfanonymousfilelist>