Tiedosto:R0 Suomessa kevat 2022 1.svg
Alkuperäinen tiedosto (SVG-tiedosto; oletustarkkuus 900 × 450 kuvapistettä; tiedostokoko 104 KiB)
Tämä tiedosto on tiedostotietokanta Wikimedia Commonsista. Tiedot kuvaussivulta näkyvät alla. | Tiedoston kuvaussivu Commonsissa |
Yhteenveto
KuvausR0 Suomessa kevat 2022 1.svg |
Suomi: Koronaviruksen tarttuttavuusluku R0 Suomessa syksyllä 2020. Eksponenttikaavalla laskettu perusuusiutumisluku. Oletukset: tauti itää 5 vuorokautta, ei karanteeneja. |
Päiväys | |
Lähde | Oma teos |
Tekijä | Merikanto |
- Calculate r0 of Covid-19 in Finland
- "R" script
- 23.7.2022
- v 0000.0013
new_in_skript=0
if (new_in_skript==1)
{
#install.packages("ggplot2", "plotly", repos ="https://ftp.acc.umu.se/mirror/CRAN/")
install.packages("svglite")
install.packages("ggplot2")
install.packages("rvest")
install.packages("readtext")
install.packages("stringi")
install.packages("datamart")
install.packages("XML")
install.packages("tidyr")
install.packages("stringr")
install.packages("stringi")
install.packages("tibble")
install.packages("readr")
install.packages("data.table")
install.packages("caTools")
install.packages("mgcv")
install.packages("repmis")
install.packages("lubridate")
install.packages("tidyverse")
install.packages("R0")
install.packages("EpiEstim")
install.packages("jsonlite")
install.packages("rjstat")
}
library(ggplot2)
library(svglite)
library(rvest)
library(readtext)
library(stringi)
library(stringr)
- library(datamart)
library(XML)
library(jsonlite)
library(tibble)
library(caTools)
library(mgcv)
library(repmis)
library(lubridate)
library(tidyverse)
library(tidyr)
library(readr)
library(data.table)
library(rjstat)
- library (R0)
library(EpiEstim)
- choices
- 1 finnish wiki data !!! NOT UPDATED
- 2 aggregated cases data OK
- 3 solanpaa finnish data OK
- 4 thl cube json data NOK
- 5 thl cube json hospital data OK 15.4.2022
load_data_from=3
- beginday1='28/02/2020'
beginday1='1/1/2022'
- beginday1='1/1/2021'
- today=Sys.Date()-1
- note lag in july data !
today=Sys.Date()-14
spanni=0.1
- spanni=0.3
- yala=0.6
- yyla=2.0
yala=0.9
yyla=1.35
metodi="loess"
widthi=10
heighti=5
plottaa=1 ## must be 1
tulosta_svg=1 # plot to out svg 0, 1 of 2
tulosfilee1="./R0_Suomessa_2.svg"
beginday0=as.Date(beginday1)
beginday2=format(beginday0, "%Y/%m/%d")
today1=format(today, "%d/%m/%Y")
today2=format(today, "%Y/%m/%d")
print(today1)
datelimits1=c(beginday1, today1)
paivat1=seq(as.Date(beginday2), as.Date(today2), "days")
calculate_r0 <- function(time1, time2, val1, val2)
{
td=time2-time1
gr0<-log(val2/val1)
gr=gr0/td
td = log(2)/gr
tau<-5.0
k<-log(2.0)/td
r0<-exp(k*tau)
return(r0)
}
moving_average <- function(x, w, FUN, ...)
{
if (w < 1) {
stop("Window length: mustbe greater than 0")
}
output <- x
for (i in 1:length(x)) {
lower_bound <- i - w + 1
if (lower_bound < 1) {
output[i] <- NA_real_
## !!! assume NA 0
output[i] <- 0
} else {
output[i] <- FUN(x[lower_bound:i, ...])
}
}
return (output)
}
calculate_multiple_r0 <- function(daata1) {
lenu1<-length(daata1)
daata2<-1:lenu1
for (n in 2:lenu1){
valju1=daata1[n-1]
valju2=daata1[n]
timex1=0
timex2=1
r0<-calculate_r0(0, 1, valju1, valju2)
daata2[n]<-r0
#print (r0)
}
return(daata2)
}
load_data_from_finnish_wiki<-function()
{
url1="https://fi.wikipedia.org/wiki/Suomen_koronaviruspandemian_aikajana"
destfile1="./ward0.txt"
download.file(url1, destfile1)
texti000<-readtext(destfile1)
texti0<-texti000$text
etsittava1="1. huhtikuuta 2020 alkaen"
len1=nchar(texti0)
k1=regexpr(pattern=etsittava1, texti0)
k1b=len1-k1
texti1=strtail(texti0,k1b)
sink("out1.txt")
print (texti1)
sink()
etsittava2=""
k2=regexpr(pattern=etsittava2, texti1)
texti2=strhead(texti1,k2)
sample1<-minimal_html(texti2)
tabu1 <- html_table(sample1, fill=TRUE)1
colnames(tabu1) <- c("V1","V2", "V3","V4", "V5","V6", "V7","V8" )
- print(tabu1)
sairaalassa00<-tabu1$V4
sairaalassa=as.integer(sairaalassa00)
teholla00<-tabu1$V5
teholla=as.integer(teholla00)
uusiatapauksia00<-tabu1$V3
uusiatapauksia0<-gsub(" ", "", uusiatapauksia00)
uusia_tapauksia=as.integer(uusiatapauksia0)
uusiakuolleita00<-tabu1$V7
uusiakuolleita1=as.integer(uusiakuolleita00)
uusiakuolleita2<-uusiakuolleita1
uusiakuolleita2[uusiakuolleita2<0]<-0
uusia_kuolleita<-uusiakuolleita2
toipuneita00<-tabu1$V8
toipuneita01<-gsub(" ", "", toipuneita00)
toipuneita0<-gsub("[^0-9.-]", "", toipuneita01)
toipuneita=as.integer(toipuneita0)
tapauksia00<-tabu1$V2
tapauksia01<-gsub(" ", "", tapauksia00)
tapauksia0<-gsub("[^0-9.-]", "", tapauksia01)
tapauksia=as.integer(tapauksia0)
kuolleita00<-tabu1$V6
kuolleita=as.integer(kuolleita00)
pv0<-tabu1$V1
len1=length(pv0)
daates1 <- vector(mode="character", length=len1)
- print(pv0)
n=1
for(n in 1:len1)
{
it1<-pv0[n]
#print(it1)
qq1<-str_split(it1, "\\[")1
qq2<-qq1[1]
qq3<-gsub(" ", "", qq2, fixed = TRUE)
daates1[n]=qq3
}
daates2=as.Date(daates1, format="%d.%m.%Y")
print(daates2)
aktiivisia_tapauksia=tapauksia-kuolleita-toipuneita
- print (paivat1)
- print (teholla)
- print (sairaalassa)
- print (tapauksia)
- print (kuolleita)
- print (toipuneita)
- print (uusia_tapauksia)
- print (uusia_kuolleita)
- plot(paivat1,aktiivisia_tapauksia)
- xy<-data.frame(daates2, sairaalassa)
xy<-data.frame(daates2, uusia_tapauksia)
names(xy)<-c("Dates", "Cases")
xyz<-data.frame(daates2, sairaalassa, teholla)
dfout1<-data.frame(daates2, aktiivisia_tapauksia, uusia_tapauksia, sairaalassa, teholla, uusia_kuolleita )
names(dfout1)<-c("Pvm", "Aktiivisia_tapauksia","Uusia_tapauksia", "Sairaalassa", "Teholla", "Uusia_kuolleita")
write.csv2(dfout1, "./sairaalassa.csv",row.names=FALSE )
return(xy)
}
load_data_from_aggregated<-function()
{
- fetch the data
print("Aggreg")
srkurl='https://raw.githubusercontent.com/datasets/covid-19/main/data/countries-aggregated.csv'
dfine <- read.csv(file=srkurl)
- print(dfine000)
- str(dfine000)
- head(dfine000,20)
- stop(-1)
- dfine<-as.data.frame(dfine000)
- head(dfine)
- class(dfine)
- print(dfine)
- tail(dfine)
- stop(-1)
dfinland <- dfine[ which(dfine$Country=='Finland'), ]
head(dfinland)
- print(dfinland)
- stop(-1)
kols <- c("Date", "Confirmed","Recovered","Deaths")
tapaukset <- dfinland[kols]
- head(tapaukset)
len1=nrow(tapaukset)
- len1
len2=len1-1
len3=len2
confirmed<-tapaukset$Confirmed
deaths<-tapaukset$Deaths
dailycases <- vector()
dailycases <- c(dailycases, 0:(len2))
dailydeaths <- vector()
dailydeaths <- c(dailydeaths, 0:(len2))
m=0
dailycases[1]<-tapaukset$Confirmed[1]
- dailydeaths[1]<-tapaukset$Deaths[1]
dailydeaths[1]<-0
- confirmed
- deaths
m=1
for(n in 2:(len3+1)) {
a<-confirmed[n]
b<-confirmed[m]
#print (a)
#print (b)
cee<- (a-b)
#print(cee)
dailycases[n]=cee
m=m+1
}
mm=1
for(nn in 2:(len3+1)) {
aa<-deaths[nn]
bb<-deaths[mm]
#print ("_")
#print (aa)
#print (bb)
ceb=aa-bb
#if (ceb<0) ceb=0
#print(ceb)
dailydeaths[nn]=ceb
mm=mm+1
}
- deaths
- dailycases
- dailydeaths
dfout1<-dfinland
- print(nrow(dfinland))
- print(length(dailydeaths))
dfout1 <- cbind(dfout1, data.frame(dailycases))
dfout1 <- cbind(dfout1, data.frame(dailydeaths))
- head(dfout1)
dfout2<-within(dfout1, rm(Country))
names(dfout2) <- c('Date','Confirmed','Recovered','Deaths', 'DailyConfirmed','DailyDeaths')
datez1<-dfout2['Date']
dailyz1<-dfout2['DailyConfirmed']
deathz1<-dfout2['DailyDeaths']
dfout3<-cbind(datez1, dailyz1)
return(dfout3)
- head(dfout2)
write.csv2(dfout2, "/Users/himot/akor1/finland_data1.csv");
daate1<-dfout2$Date
dailydeaths1<-dfout2$DailyDeaths
dailycases1<-dailycases
- daate1
- daate2<-gsub("2020-", "", daate1)
daate2<-daate1
leenu<-length(daate2)
- alkupvm<-50
alkupvm<-1
daate3<-daate2[alkupvm:leenu]
dailydeaths3<-dailydeaths1[alkupvm:leenu]
dailycases3<-dailycases1[alkupvm:leenu]
- daate3
- dailydeaths3
pv0<-tabu1$V1
len1=length(pv0)
daates1 <- vector(mode="character", length=len1)
- print(pv0)
n=1
for(n in 1:len1)
{
it1<-pv0[n]
#print(it1)
qq1<-str_split(it1, "\\[")1
qq2<-qq1[1]
qq3<-gsub(" ", "", qq2, fixed = TRUE)
daates1[n]=qq3
}
daates2=as.Date(daates1, format="%d.%m.%Y")
print(daates2)
# barplot(dailydeaths3, main="Koronaviruskuolemat päivittäin vuonna 2020",
# names.arg=daate3)
dataf1 <- data.frame("Date" = daates2, "Paivitt_kuolemat"=dailydeaths3)
- str(dataf1)
dataf2 <- data.frame("Date" = daates2, "Paivitt_tapaukset"=dailycases3)
- str(dataf2)
write.csv(dataf1, "/Users/himot/akor1/dailydeaths1.csv", row.names=T)
write.csv(dataf2, "/Users/himot/akor1/dailycases1.csv", row.names=T)
indf1 <- read.csv(file = '/Users/himot/akor1/dailycases1.csv')
#head(indf1)
cases1<-indf1$Paivitt_tapaukset
dates1<-indf1$Date
len1=length(cases1)
dates2<-as.Date(dates1)
paivat<-1:len1
xy<-data.frame(daates2, dailycases3)
return(xy)
}
download_solanpaa_finnish_data<-function()
{
solanpaa_fi="https://covid19.solanpaa.fi/data/fin_cases.json"
cache_file="solanpaa_fi.json"
download.file(solanpaa_fi, cache_file)
j1 <- fromJSON(cache_file)
## maybe errori
dates<-as.Date(j1$date)
dailycases<-j1$new_cases
dailydeaths<-j1$new_deaths
dataf1 <- data.frame("Date" = dates, "Paivitt_kuolemat"=dailydeaths)
dataf2 <- data.frame("Date" = dates, "Paivitt_tapaukset"=dailycases)
write.csv(dataf1, "./dailydeaths1.csv", row.names=T)
write.csv(dataf2, "./dailycases1.csv", row.names=T)
xy0<-data.frame(dates, dailycases)
names(xy0)<-c("Dates", "Cases")
xy<-na.omit(xy0)
return(xy)
}
calculate_r0_with_r0<-function(xy2)
{
## calculate r0 w/r0 package
dates<-as.Date(xy2$Dates)
cases<-as.integer(xy2$Cases)
cases[is.na(cases)] <- 1
cases[(cases<0)] <- cases*-1
cases[cases==0] <- 1
nummeros<-1:length(dates)
num<-cases
#names<-nummeros
names<-dates
lenu=length(dates)
bekini=as.Date(dates[1])
enti=as.Date(dates[lenu])
#print(bekini)
#print(enti)
#stop(-1)
#enti=lenu
#bekini=enti*0+1
#enti=as.integer(enti)
#bekini=as.integer(bekini)
df1 <- setNames(num, names)
mGT<-generation.time("gamma", c(3, 1.5))
#TD <- est.R0.TD(df1, mGT, begin=1, end=length(dates), nsim=200)
#TD <- est.R0.TD(df1, mGT, begin=bekini, end=enti, nsim=200)
TD <- est.R0.TD(df1, mGT, begin=bekini, end=enti, nsim=200)
TD.5D <- smooth.Rt(TD, 5)
paivat1<-TD.5D$epid$t
paivat2<-as.Date(paivat1)
r0t1<-TD.5D$R
conf1<-TD.5D$conf.int
xypaluu<-data.frame(paivat1,r0t1)
names(xypaluu)<-c("paivat","r0")
return(xypaluu)
}
calculate_r0_with_epiestim<-function(xy2)
{
## calculate r0 w/r0 package
dates<-as.Date(xy2$Dates)
cases<-as.integer(xy2$Cases)
nummeros<-1:length(dates)
num<-cases
#names<-nummeros
names<-dates
lenu=length(dates)
cases[is.na(cases)] <- 1
cases[(cases<0)] <- cases*-1
cases[cases==0] <- 1
incid<-cases
bekini=as.Date(dates[1])
enti=as.Date(dates[lenu])
config<-make_config( list(mean_si = 2.6,std_si = 1.5) )
res<-estimate_R(incid,method="parametric_si", config = config)
plot(res)
resr<-res$R
str(resr)
meanr<-resr$Mean
medianr<-resr$Median
quantile95<-resr$Quantile.0.95
quantile05<-resr$Quantile.0.05
quantile75<-resr$Quantile.0.75
quantile25<-resr$Quantile.0.25
meanr
daydexes<-resr$t_start
daydexes
plot(daydexes, meanr)
dayss<-as.Date(dates[daydexes])
print (dayss)
#stop(-1)
plot(dayss, meanr)
xypaluu<-data.frame(dayss,meanr)
names(xypaluu)<-c("paivat","r0")
return(xypaluu)
}
calculate_r0_with_simple_exponent_moving_average<-function(xy2, madays1, madays2)
{
## calculate r0 w/r0 package
dates<-as.Date(xy2$Dates)
cases<-as.integer(xy2$Cases)
nummeros<-1:length(dates)
num<-cases
#names<-nummeros
names<-dates
lenu=length(dates)
cases[is.na(cases)] <- 1
cases[(cases<0)] <- cases*-1
cases[cases==0] <- 1
# compute a MA(7)
ma1<-moving_average(cases,madays1,mean)
r0t1<-calculate_multiple_r0(ma1)
r0avg1<-moving_average(r0t1, madays2, mean)
xypaluu<-data.frame(dates,r0t1)
plot(r0t1)
print (r0t1)
#stop(-1)
names(xypaluu)<-c("paivat","r0")
return(xypaluu)
}
lataa_thl_tapaukset_kuolleet<-function()
{
## oriko
##url1<-"https://sampo.thl.fi/pivot/prod/fi/epirapo/covid19case/fact_epirapo_covid19case.json?row=measure-492118&column=dateweek20200101-508804L"
# viikoittain
url1<-"https://sampo.thl.fi/pivot/prod/fi/epirapo/covid19case/fact_epirapo_covid19case.json?row=hcdmunicipality2020-445222.&column=dateweek20200101-509030&filter=measure-444833"
cube1 <- fromJSONstat(url1, naming = "label", use_factors = F, silent = T)
head(cube1)
res01 <- cube11
head(res01,40)
print("Pazka")
stop(-1)
#res00
url2<-"https://sampo.thl.fi/pivot/prod/fi/epirapo/covid19case/fact_epirapo_covid19case.json?row=measure-444833&column=dateweek20200101-508804L"
cube2 <- fromJSONstat(url2, naming = "label", use_factors = F, silent = T)
res02 <- cube21
#res02
#stop (-1)
paiva=as.Date(res01$dateweek20200101)
kuolleet=as.integer(res01$value)
tapaukset=as.integer(res02$value)
kuolin_prosentit=kuolleet/tapaukset
kuolin_prosentit=kuolin_prosentit*10000
kuolin_prosentit=as.integer(kuolin_prosentit)
kuolin_prosentit=as.double(kuolin_prosentit)
kuolin_prosentit=kuolin_prosentit/100.0
#print (paiva)
#print (kuolleet)
#stop(-1)
#print (tapaukset)
#print (kuolin_prosentit )
df1<-data.frame(paiva,tapaukset, kuolleet, kuolin_prosentit)
names(df1)<-c("Paiva", "Tapauksia", "Kuolleita", "Kuolinprosentti")
#write.csv2(df1, "./kuolleet_ikaryhmittain.csv", sep = ";" )
write.csv(df1, "./thl_tapaukset_kuolleet.csv")
xy0<-data.frame(paiva, tapaukset)
names(xy0)<-c("Dates", "Cases")
xy<-na.omit(xy0)
#return(df1)
}
nth_element <- function(vector, starting_position, n) {
vector[seq(starting_position, length(vector), n)]
}
get_thl_hospital_data<-function()
{
url_base2="https://sampo.thl.fi/pivot/prod/fi/epirapo/covid19care/fact_epirapo_covid19care.json"
request2 <- "?row=dateweek20200101-509093L&column=measure-547523.547516.547531.456732.&fo=1"
url2 <- paste0(url_base2, request2)
cube2 <- fromJSONstat(url2, naming = "label", use_factors = F, silent = T)
- print (cube2)
- head(cube2, 40)
- stop(-1)
res02 <- cube21
head(res02, 40)
daates00<-res021
- print(daates00)
days0<-as.Date(daates00)
days1<-nth_element(days0, 1, 4)
- print(days1)
gecko1<-as.integer(res023)
- print(head(gecko1,40))
gecko2<-matrix(gecko1,nrow=4)
- print (head(gecko2,20))
sairaalassa1=gecko2[1,]+gecko2[2,]+gecko2[4,]
teholla1=gecko2[4,]
sairaalassa1[is.na(sairaalassa1)]<-0
teholla1[is.na(teholla1)] <- 0
print (head(sairaalassa1,50))
- print (teholla1)
df1<-data.frame(days1, sairaalassa1, teholla1)
names(df1)<-c("Paiva", "Sairaalassa", "Teholla")
df0<-data.frame(days1, sairaalassa1)
names(df0)<-c("Paiva", "Sairaalassa")
write.csv(df0, "./thl_sairaalassa.csv")
xy0<-data.frame(days1, sairaalassa1)
names(xy0)<-c("Dates", "Cases")
xy<-na.omit(xy0)
return(xy)
- return(df0)
}
- main program
if(load_data_from==1)
{
xy<-load_data_from_finnish_wiki()
print (xy)
}
if(load_data_from==2)
{
xy<-load_data_from_aggregated()
names(xy)<-c("Dates","Cases")
print("Aggreg data")
##stop(-1)
}
if(load_data_from==3)
{
xy<-download_solanpaa_finnish_data()
}
if(load_data_from==4)
{
xy<-lataa_thl_tapaukset_kuolleet()
}
if(load_data_from==5)
{
xy<-get_thl_hospital_data()
names(xy)<-c("Dates","Cases")
print("From THL hospital data")
#print(xy)
#head(xy)
#stop(-1)
}
- print (xy)
## quit(-1)
#print (beginday1)
select_datelimit_begin=as.Date(beginday1,format="%d/%m/%Y")
select_datelimit_end=as.Date(today1, format="%d/%m/%Y")
#format(select_datelimit_begin, "%Y-%m-%d")
print(select_datelimit_begin)
print(select_datelimit_end)
#2020-12-16
xy2<-xy[xy$Dates >= select_datelimit_begin & xy$Dates <= select_datelimit_end,]
#xy2<-xy[xy$Dates >= select_datelimit_begin,]
print("xy2")
print(xy2)
#stop(-1)
cases1<-xy2$Cases
dates1<-xy2$Dates
len1=length(cases1)
dates2<-as.Date(dates1)
paivat<-1:len1
## test code
arrat0<-calculate_r0_with_simple_exponent_moving_average(xy2, 14,7)
#arrat1<-calculate_r0_with_r0(xy2)
#arrat2<-calculate_r0_with_epiestim(xy2)
#print("calcu ok")
#plot(arrat$paivat, arrat$r0)
# arrat<-arrat2
arrat<-arrat0
str(arrat)
head(arrat)
#plot(arrat$paivat, arrat$r0)
- stop(-1)
if(tulosta_svg==1)
{
#svg(filename=tulosfilee1, width=8, height=3, pointsize=12)
svg(filename=tulosfilee1, width=widthi, height=heighti, pointsize=12)
}
if(plottaa==1)
{
metodi="loess"
print ("ggplot")
#ggplot(arrat, aes(x =paivat , y = r0)) +ylim(0.6, 1.8)+xlim(as.Date(datelimits1, format="%d/%m/%Y") )+
ggplot(arrat, aes(x =paivat , y = r0)) +ylim(yala, yyla)+xlim(as.Date(datelimits1, format="%d/%m/%Y") )+
ggtitle("Arvioitu koronaviruksen perusuusiutumisluku R0") +
xlab("Kuukausi") + ylab("R0")+
theme(title=element_text(size=15), axis.text=element_text(size=12,face="bold"),axis.title=element_text(size=14,face="bold"))+
geom_point() +
geom_smooth( fill="#a0a0ff",span=spanni, method=metodi, level=0.99, size=3)+
geom_smooth( fill="#9090ff", span=spanni,method=metodi, level=0.7) +
geom_smooth( fill="#8a08af", span=spanni, method=metodi,level=0.5) +
geom_hline(yintercept=1.0, linetype="dashed", color = "red", size=1)
}
if(tulosta_svg==1)
{
dev.off()
}
Lisenssi
- Voit:
- jakaa – kopioida, levittää ja esittää teosta
- remiksata – valmistaa muutettuja teoksia
- Seuraavilla ehdoilla:
- nimeäminen – Sinun on mainittava lähde asianmukaisesti, tarjottava linkki lisenssiin sekä merkittävä, mikäli olet tehnyt muutoksia. Voit tehdä yllä olevan millä tahansa kohtuullisella tavalla, mutta et siten, että annat ymmärtää lisenssinantajan suosittelevan sinua tai teoksen käyttöäsi.
- jaa samoin – Jos muutat tai perustat tähän työhön, voit jakaa tuloksena syntyvää työtä vain tällä tai tämän kaltaisella lisenssillä.
Kohteet, joita tässä tiedostossa esitetään
esittää
Jotkut arvot ilman kohdetta Wikidata
2. syyskuu 2020
image/svg+xml
Tiedoston historia
Päiväystä napsauttamalla näet, millainen tiedosto oli kyseisellä hetkellä.
Päiväys | Pienoiskuva | Koko | Käyttäjä | Kommentti | |
---|---|---|---|---|---|
nykyinen | 23. heinäkuuta 2022 kello 19.06 | 900 × 450 (104 KiB) | Merikanto | Update | |
15. huhtikuuta 2022 kello 16.05 | 900 × 450 (170 KiB) | Merikanto | update | ||
14. huhtikuuta 2022 kello 09.35 | 900 × 450 (161 KiB) | Merikanto | Update | ||
13. huhtikuuta 2022 kello 20.38 | 900 × 450 (164 KiB) | Merikanto | Update | ||
15. maaliskuuta 2022 kello 09.19 | 900 × 450 (151 KiB) | Merikanto | update | ||
6. helmikuuta 2022 kello 17.24 | 900 × 450 (148 KiB) | Merikanto | Update | ||
11. tammikuuta 2022 kello 22.02 | 900 × 450 (139 KiB) | Merikanto | update | ||
7. joulukuuta 2021 kello 18.33 | 900 × 450 (127 KiB) | Merikanto | update | ||
25. lokakuuta 2021 kello 10.13 | 900 × 450 (117 KiB) | Merikanto | Update | ||
6. lokakuuta 2021 kello 08.03 | 900 × 450 (110 KiB) | Merikanto | update |
Tiedoston käyttö
Seuraava sivu käyttää tätä tiedostoa:
Metatieto
Tämä tiedosto sisältää esimerkiksi kuvanlukijan, digikameran tai kuvankäsittelyohjelman lisäämiä lisätietoja. Kaikki tiedot eivät enää välttämättä vastaa todellisuutta, jos kuvaa on muokattu sen alkuperäisen luonnin jälkeen.
Leveys | 720pt |
---|---|
Korkeus | 360pt |