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
Tähän kuuluu muuttujan arvon laskennassa käytettävän datan kuvailu
(esim. mittausdata, matemaattiset menetelmät).
Käytä mahdollisuuksien mukaan viitteitä ja linkkejä alkuperäisdataan
(mielellään käyttäen <ref></ref> -tagia)
Kausaliteetti
- Ylävirtamuuttujia ei ole.
Yksikkö
Muuttujan tulokset on ilmaistu useissa yksiköissä (liikennesuorite, CO2-päästöt, pienhiukkaspäästöt, DALYt)
Kaava
Tällä hetkellä koodi ei toimi suoraan, koska datatiedostoja täytyy ladata omalle koneelle. MUUTETTAVA!
+ Näytä koodi- Piilota koodi
# Luetaan liikennemaarat
#
risteykset <- read.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"
#
# 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
Suositeltavin muoto tuloksille on numeerinen ilmaus tai jakauma.
Myös sanallinen muoto käy.
Katso myös
Tänne kuuluvat linkit relevantteihin tietolähteisiin jotka eivät kuulu muuttujan määritelmään.
Viitteet
Lähdeluettelo tulostuu tänne automaattisesti kun viittauksissa käytetään <ref></ref> -tagia.
Lähteet voi myös lisätä halutessaan manuaalisesti.