J'ai le fichier suivant NetCDF - J'essaye de convertir en raster mais quelque chose ne va pas. La projection du fichier NetCDF n'est pas donnée mais selon le logiciel que je l'ai reçu, LatLong devrait être de même cylindrique. J'ai essayé les deux, mais je continue à obtenir cette distorsion qui rend impossible d'interroger les valeurs aux bons endroits. Je sais que l'espacement de la grille n'est pas pair, pas sûr si cela affecte le résultat final (ici visuel d'ArcGIS mais dans R c'est le même problème à moins d'être tracé avec la fonction levelplot). NetCDF - conversion en raster et projection problèmes
library(raster)
library(ncdf4)
library(lattice)
library(RColorBrewer)
setwd("D:/Results")
climexncdf <- nc_open("ResultsSO_month.nc")
lon <- ncvar_get(climexncdf,"Longitude")
nlon <- dim(lon)
head(lon)
lat <- ncvar_get(climexncdf,"Latitude")
nlat <- dim(lat)
head(lat)
dname <- "Weekly Growth Index"
t <- ncvar_get(climexncdf,"Step")
tmp_array <- ncvar_get(climexncdf,dname)
tmp_stack <- vector("list",length(t))
for (i in 1:length(t)) {
tmp_stack[[i]] <- tmp_array[,,i]
}
YearData <- vector("list",52)
for (i in 1:4) {
YearData[[i]] <- tmp_array[,,i]
}
Month1 <- YearData[c(1,2,3,4)]
# Calculate monthly averages
M1Avg <- Reduce("+",Month1)/length(Month1)
# Replace 0's with NA's
M1Avg[M1Avg==0] <- NA
# Piece of code that gives me what I need:
grid <- expand.grid(lon=lon, lat=lat)
cutpts <- seq(0,1,0.1)
# Convert to raster - work to include lat and long
M1Avg_reorder <- M1Avg[ ,order(lat) ]
M1Avg_reorder <- apply(t(M1Avg_reorder),2,rev)
M1AvgRaster <- raster(M1Avg_reorder,
xmn=min(lon),xmx=max(lon),
ymn=min(lat),ymx=max(lat),
crs=CRS("+proj=longlat +datum=WGS84"))
#crs=CRS("+proj=cea +lat_0=0 +lon_0=0"))
r <- projectRaster(M1AvgRaster,crs=CRS("+proj=longlat +datum=WSG84"))
plot(M1AvgRaster)
# Location file not included but any locations can be entered
locations <- read.csv("Locations.csv", header=T)
coordinates(locations) <- c("y","x")
data <- extract(M1AvgRaster,locations)
writeRaster(M1AvgRaster, "M1AvgRaster_Globe_projWGSTest", format = "GTiff")
Êtes-vous sûr que le fichier de données est OK? Les valeurs de latitude semblent assez aléatoires et, en tant que tel, ce n'est certainement pas un bon fichier avec lequel travailler. Les valeurs de la latitude commencent comme suit: '-16,25, -20,75, -18,25, -14,25, -29,25, 51,75, 28,25, -44,25'. Après le tri, ils sont très simples cylindriques avec un pas de 0,5 degrés, la longitude semble correcte. – kakk11
je sais, c'est comme ça que le logiciel revient, donc je l'ai trié par M1Avg_reorder <- M1Avg [, commande (lat)] M1Avg_reorder <- apply (t (M1Avg_reorder), 2, rev). Pourtant, j'ai des problèmes avec la conversion en lat long, ou toute projection où je serai en mesure d'appeler les emplacements par leurs coordonnées correctement – MIH
Aussi, vous pouvez remarquer que l'étape n'est pas toujours 0,5, mais il peut aussi être 0,75 ou 1 dans certains instances, en longitude et si je me souviens bien dans lat aussi bien. – MIH