Saya heran dengan masalah berulang size vector cannot be allocated dalam fungsi geom_raster. Masalah ini terjadi dengan kumpulan data kecil dan dalam kasus saya 1559 pengamatan. Saya mencoba melakukan:

# Read the raster in data frame format
ras_df<-read.csv("https://raw.githubusercontent.com/Leprechault/trash/main/myraster_df.csv")
str(ras_df)
#'data.frame':  1559 obs. of  3 variables:
# $ cc       : num  65 85.6 82.7 85.6 89.4 ...
# $ longitude: num  -50.6 -50.6 -50.6 -50.6 -50.6 ...
# $ latitude : num  -24.2 -24.2 -24.2 -24.2 -24.2 ...

# Representation
ggplot() +
  geom_raster(data = ras_df , aes(x = longitude, y = latitude, fill = cc)) + 
  scale_fill_gradientn(name="Canopy cover",colours = rev(terrain.colors(100)))+
  xlab("longitude") + ylab("latitude") +
  theme_bw() + 
  coord_quickmap() +
  theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"),
text=element_text(size=16,  family="serif"),legend.position="bottom")
#
#
#Error: 20254.0 Gb size vector cannot be allocated

Tetapi jika saya menggunakan fungsi plot() normal, ini tidak terjadi, tetapi saya mencari representasi yang lebih indah seperti keluaran ggplot2. Dan beberapa posting dengan beberapa solusi tidak bekerja dengan baik untuk saya (mis. SpatialPixelsDataFrame konversi dan kontrol toleransi).

Tolong, ada ide untuk saya perbaiki?

0
Leprechault 27 Mei 2021, 17:26

1 menjawab

Jawaban Terbaik

Peringatan yang datang dengan kesalahan itu informatif

Selain itu: Pesan peringatan:
1: Piksel raster ditempatkan pada interval horizontal yang tidak rata dan akan digeser. Pertimbangkan untuk menggunakan geom_tile() sebagai gantinya.
2: Piksel raster ditempatkan pada interval vertikal yang tidak rata dan akan digeser. Pertimbangkan untuk menggunakan geom_tile() sebagai gantinya.

Ini terjadi ketika data memiliki presisi palsu, jadi geom_raster mencoba membuat kisi yang sangat halus yang menggunakan jumlah memori yang gila.

Solusinya hanya dengan membulatkan data ke jumlah presisi yang sesuai.

library(tidyverse)
ras_df <- ras_df %>% mutate(across(c(latitude, longitude), round, digits = 4))

Plot kemudian bekerja dengan baik.

2
Richard Telford 27 Mei 2021, 15:29