This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

library(terra)
## terra 1.7.71
# 1. Φόρτωση εικόνων ταξινόμησης

rf_raster <- rast("G:/parnitha_rf_classified.tif")
cart_raster <- rast("G:/parnitha_cart_classified.tif")

plot(rf_raster)

plot(cart_raster)

rf_raster <- rast("G:/parnitha_rf_classified.tif")
rf_raster <- as.factor(rf_raster)
levels(rf_raster) <- data.frame(value = 0:3, 
                                label = c("Fir", "Pine", "Open", "Urban"))
class_colors <- c("red", "green", "yellow", "blue")
class_labels <- c("Fir", "Pine", "Open", "Urban")

## Plot με χρώματα, ετικέτες, κλίμακα και βορρά
plot(rf_raster, col = class_colors, 
     legend = TRUE, main = "RF Classification")


library(terra)
library(ggplot2)

library(ggspatial)

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:terra':
## 
##     intersect, union
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(patchwork)
## 
## Attaching package: 'patchwork'
## The following object is masked from 'package:terra':
## 
##     area
# 1. Φόρτωση εικόνων ταξινόμησης
rf_raster <- rast("G:/parnitha_rf_classified.tif")
cart_raster <- rast("G:/parnitha_cart_classified.tif")

# 2. Μετατροπή σε data.frame για ggplot
rf_df <- as.data.frame(rf_raster, xy = TRUE) %>% rename(class = 3)
cart_df <- as.data.frame(cart_raster, xy = TRUE) %>% rename(class = 3)

# 3. Κατηγορίες και χρώματα (σύμφωνα με τη σειρά που ζήτησες)

class_labels <- c("Fir", "Pine", "Open", "Urban")
class_colors <- c("red", "green", "yellow", "blue")

# Μετατροπή αριθμητικής κλάσης σε factor με σωστή σειρά και ονόματα
rf_df$class <- factor(rf_df$class, levels = 0:3, labels = class_labels)
cart_df$class <- factor(cart_df$class, levels = 0:3, labels = class_labels)

# 4. Θεματικοί χάρτες RF & CART με ggplot2 + ggspatial (χωρίς ROI)
plot_rf <- ggplot() +
  geom_raster(data = rf_df, aes(x = x, y = y, fill = class)) +
  scale_fill_manual(values = class_colors, name = "Κατηγορία") +
  coord_fixed() +
  labs(title = "Random Forest Classification", x = "Μήκος", y = "Πλάτος") +
  theme_minimal() +
  annotation_scale(pad_x = unit(1, "cm"),
                   pad_y = unit(0.1, "cm"),style = "ticks", width_hint = 0.5) +      # scale bar
  annotation_north_arrow(height = unit(0.8, "cm"),
                         width = unit(0.4, "cm"),
                         pad_x = unit(0.8, "cm"),
                         pad_y = unit(0.7, "cm"))  # βέλος βορρά


plot_rf
## Using plotunit = 'm'

## ΕΞΑΓΩΓΗ

ggsave("G:/01_rf_map.png", plot_rf, width = 8, height = 7, dpi = 300)
## Using plotunit = 'm'
### ΔΙΑΓΡΑΜΜΑΤΑ ΕΚΤΑΣΕΩΝ


# 5. Υπολογισμός εκτάσεων κλάσεων από RF (σε στρέμματα)
area_df <- rf_df %>%
  group_by(class) %>%
  summarise(count = n()) %>%
  mutate(area_m2 = count * 10 * 10,    # pixels 10x10 m
         area_ha = area_m2 / 10000,    # 1 ha = 10,000 m2
         perc = 100 * area_ha / sum(area_ha))

# 6. Διάγραμμα έκτασης κλάσεων
plot_area <- ggplot(area_df, aes(x = class, y = perc, fill = class)) +
  geom_col(show.legend = FALSE) +
  geom_text(aes(label = sprintf("%.1f%% (%.1f ha)", perc, area_ha)), vjust = -0.5) +
  scale_fill_manual(values = class_colors) +
  labs(title = "Ποσοστό Έκτασης ανά Κλάση (RF)", y = "Ποσοστό (%)", x = "Κλάση") +
  theme_minimal()

plot_area