Bu calisma, Beck ve ark. (2018) tarafindan guncellenen Koppen-Geiger iklim siniflandirmasi verisini kullanarak Italya’nin iklim bolgelerini haritalamaktadir. 1 km cozunurluklu kuresel raster veri, Italya sinirlarına gore kirpilarak siniflandirilmis ve gorsellestirilmistir.
Koppen-Geiger sistemi; sicaklik, yagis ve mevsimsellik kriterlerine gore iklimi 5 ana grup ve 30 alt sinif altinda kategorize etmektedir:
library(terra)
library(ggplot2)
library(tidyterra)
library(ggspatial)
library(rnaturalearth)
library(rnaturalearthdata)
library(dplyr)
library(sf)
library(knitr)
library(kableExtra)Veri kaynagi: Koppen-Geiger iklim siniflandirmasi
raster verisi (.tif formatinda, 1 km cozunurluk).
koppen_global <- rast("C:/Users/Izoly/Desktop/koppen.tif")
italy_sf <- ne_countries(scale = "medium", country = "Italy", returnclass = "sf")
italy_vect <- vect(italy_sf)
koppen_italy <- crop(koppen_global, italy_vect)
koppen_italy <- mask(koppen_italy, italy_vect)
vals <- sort(unique(values(koppen_italy, na.rm = TRUE)))val_vec <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30)
lab_vec <- c("Af","Am","Aw","BWh","BWk","BSh","BSk",
"Csa","Csb","Csc","Cwa","Cwb","Cwc",
"Cfa","Cfb","Cfc","Dsa","Dsb","Dsc","Dsd",
"Dwa","Dwb","Dwc","Dwd","Dfa","Dfb","Dfc","Dfd",
"ET","EF")
desc_vec <- c("Tropikal Yagmur Ormani","Tropikal Muson","Tropikal Savana",
"Sicak Col","Soguk Col","Sicak Yari Kurak","Soguk Yari Kurak",
"Akdeniz - Sicak Yaz","Akdeniz - Ilik Yaz","Akdeniz - Serin Yaz",
"Subtropikal - Kis Kurak Sicak Yaz","Subtropikal - Kis Kurak Ilik Yaz","Subtropikal - Kis Kurak Serin Yaz",
"Subtropikal - Sicak Yaz","Okyanus - Ilik Yaz","Okyanus - Serin Yaz",
"Karasal Akd - Sicak Yaz","Karasal Akd - Ilik Yaz","Karasal Akd - Serin Yaz","Karasal Akd - Cok Serin Yaz",
"Karasal - Kis Kurak Sicak Yaz","Karasal - Kis Kurak Ilik Yaz","Karasal - Kis Kurak Serin Yaz","Karasal - Kis Kurak Cok Serin",
"Karasal Nemli Sicak Yaz","Karasal Nemli Ilik Yaz","Karasal Nemli Serin Yaz","Karasal Nemli Cok Serin",
"Tundra","Buz Ortusu")
col_vec <- c("#0000FF","#0078FF","#46AAFA",
"#FF0000","#FF9696",
"#F5A500","#FFDB63",
"#FFFF00","#C6C700","#969600",
"#96FF96","#63C763","#329632",
"#C8FF50","#64FF50","#32C800",
"#FF00FF","#C800C8","#963296","#640064",
"#FF6EFF","#C71585","#8B008B","#4B0082",
"#00FFFF","#37C8FF","#007D7D","#00465F",
"#B2B2B2","#686868")
ana_grup <- c("A","A","A","B","B","B","B",
"C","C","C","C","C","C","C","C","C",
"D","D","D","D","D","D","D","D","D","D","D","D",
"E","E")
koppen_full <- data.frame(
value = val_vec,
label = lab_vec,
desc = desc_vec,
color = col_vec,
ana_grup = ana_grup,
stringsAsFactors = FALSE
)
present <- koppen_full[koppen_full$value %in% vals, ]Asagidaki tablo Italya’da gozlemlenen iklim siniflarini ve tanımlarini gostermektedir:
| Sinif Kodu | Aciklama | Ana Grup | Renk Kodu | |
|---|---|---|---|---|
| 6 | BSh | Sicak Yari Kurak | B | #F5A500 |
| 7 | BSk | Soguk Yari Kurak | B | #FFDB63 |
| 8 | Csa | Akdeniz - Sicak Yaz | C | #FFFF00 |
| 9 | Csb | Akdeniz - Ilik Yaz | C | #C6C700 |
| 14 | Cfa | Subtropikal - Sicak Yaz | C | #C8FF50 |
| 15 | Cfb | Okyanus - Ilik Yaz | C | #64FF50 |
| 18 | Dsb | Karasal Akd - Ilik Yaz | D | #C800C8 |
| 19 | Dsc | Karasal Akd - Serin Yaz | D | #963296 |
| 26 | Dfb | Karasal Nemli Ilik Yaz | D | #37C8FF |
| 27 | Dfc | Karasal Nemli Serin Yaz | D | #007D7D |
| 29 | ET | Tundra | E | #B2B2B2 |
| 30 | EF | Buz Ortusu | E | #686868 |
levels(koppen_italy) <- data.frame(value = present$value, label = present$label)
color_values <- setNames(present$color, present$label)
legend_labels <- setNames(paste0(present$label, " - ", present$desc), present$label)
neighbors <- ne_countries(
scale = "medium",
country = c("France","Switzerland","Austria","Slovenia","Croatia","Tunisia","Malta"),
returnclass = "sf"
)
bbox <- ext(koppen_italy)
x_exp <- (bbox$xmax - bbox$xmin) * 0.08
y_exp <- (bbox$ymax - bbox$ymin) * 0.08
xlim <- c(bbox$xmin - x_exp, bbox$xmax + x_exp)
ylim <- c(bbox$ymin - y_exp, bbox$ymax + y_exp)
ggplot() +
geom_sf(data = neighbors, fill = "#ECECEC", color = "#AAAAAA", linewidth = 0.3) +
geom_spatraster(data = koppen_italy) +
scale_fill_manual(
values = color_values,
na.value = "transparent",
name = "Koppen\nIklim Sinifi",
labels = legend_labels,
drop = TRUE
) +
geom_sf(data = italy_sf, fill = NA, color = "#222222", linewidth = 0.6) +
coord_sf(xlim = xlim, ylim = ylim, expand = FALSE) +
annotation_north_arrow(
location = "tl",
which_north = "true",
pad_x = unit(0.4, "cm"),
pad_y = unit(0.4, "cm"),
style = north_arrow_fancy_orienteering(
fill = c("white","#333333"), line_col = "#333333",
text_col = "#333333", text_size = 9
),
height = unit(1.5, "cm"),
width = unit(1.5, "cm")
) +
annotation_scale(
location = "br",
width_hint = 0.25,
bar_cols = c("#333333","white"),
text_col = "#333333",
line_col = "#333333",
text_cex = 0.75,
pad_x = unit(0.5, "cm"),
pad_y = unit(0.5, "cm")
) +
labs(
title = "Italya - Koppen Iklim Siniflandirmasi",
subtitle = "Beck ve ark. (2018) guncellenmis Koppen-Geiger siniflandirmasi",
caption = "Veri: Koppen-Geiger Iklim Siniflandirmasi (1 km cozunurluk) | Projeksiyon: WGS84 (EPSG:4326)"
) +
theme(
plot.background = element_rect(fill = "#F0F4F8", color = NA),
panel.background = element_rect(fill = "#D6E8F5", color = NA),
panel.border = element_rect(color = "#444444", fill = NA, linewidth = 0.8),
panel.grid.major = element_line(color = "#B8CDD8", linewidth = 0.3, linetype = "dashed"),
plot.title = element_text(size = 16, face = "bold", hjust = 0.5, color = "#1A1A2E", margin = margin(b=4)),
plot.subtitle = element_text(size = 11, face = "italic", hjust = 0.5, color = "#444466", margin = margin(b=8)),
plot.caption = element_text(size = 7.5, color = "#666688", hjust = 1, margin = margin(t=6)),
legend.position = "right",
legend.title = element_text(size = 10, face = "bold", color = "#1A1A2E"),
legend.text = element_text(size = 8.5, color = "#222244"),
legend.background = element_rect(fill = "#FAFAFA", color = "#CCCCCC", linewidth = 0.4),
legend.key = element_rect(fill = NA),
legend.key.size = unit(0.55, "cm"),
legend.margin = margin(6,8,6,8),
legend.box.margin = margin(0,0,0,10),
axis.text = element_text(size = 7.5, color = "#333355"),
axis.title = element_blank(),
plot.margin = margin(14,10,12,10)
)Sekil 1. Italya Koppen-Geiger Iklim Siniflandirmasi (Beck ve ark., 2018)
pixel_counts <- as.data.frame(table(values(koppen_italy, na.rm = TRUE)))
colnames(pixel_counts) <- c("value","pixel")
pixel_counts$value <- as.integer(as.character(pixel_counts$value))
pixel_counts <- merge(pixel_counts, present[, c("value","label","color","ana_grup")], by = "value")
pixel_counts$alan_yuzde <- round(pixel_counts$pixel / sum(pixel_counts$pixel) * 100, 1)
pixel_counts <- pixel_counts[order(-pixel_counts$pixel), ]
ggplot(pixel_counts, aes(x = reorder(label, alan_yuzde), y = alan_yuzde, fill = label)) +
geom_col(width = 0.7, show.legend = FALSE) +
geom_text(aes(label = paste0(alan_yuzde, "%")),
hjust = -0.15, size = 3.5, color = "#333333") +
scale_fill_manual(values = setNames(pixel_counts$color, pixel_counts$label)) +
coord_flip(clip = "off") +
scale_y_continuous(expand = expansion(mult = c(0, 0.12))) +
labs(
title = "Italya - Iklim Siniflarinin Alansal Dagilimi",
x = "Koppen Sinifi",
y = "Alan Yuzdesi (%)",
caption = "Kaynak: Beck ve ark. (2018)"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5, color = "#1A1A2E"),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank(),
axis.text.y = element_text(face = "bold"),
plot.caption = element_text(color = "#888888", size = 8),
plot.margin = margin(10, 30, 10, 10)
)Sekil 2. Italya’daki Koppen iklim siniflarinin alansal dagilimi
Beck, H.E., Zimmermann, N.E., McVicar, T.R., Vergopolan, N., Berg, A., & Wood, E.F. (2018). Present and future Koppen-Geiger climate classification maps at 1-km resolution. Scientific Data, 5, 180214. https://doi.org/10.1038/sdata.2018.214
Bu rapor R Markdown ile uretilmistir. Kod bloklari “Code” butonlari ile goruntulenebilir.