Dieses Skript war sehr nützlich und ich habe es geschafft, einen Stapel von 36 Dateien zu konvertieren. Mein Problem ist jedoch, dass die Konvertierung nicht korrekt erscheint. Wenn ich es mit ArcGIS 'NetCDF-Raster-Layer-Werkzeug erstellen' erhalte ich unterschiedliche Ergebnisse + Ich kann die Zahlen von Kelvin nach C konvertieren mit einer einfachen Formel: RasterValue * 0.02 - 273.15. Mit den Ergebnissen der R-Konvertierung bekomme ich nach der Konvertierung nicht die richtigen Ergebnisse, was zu der Annahme führt, dass die ArcGIS-Konvertierung gut ist und die R-Konvertierung einen Fehler zurückgibt.
library(gdalUtils)
library(raster)
setwd("D:/Users/szynisze/Google Drive/Gates Project/Data/Climate/MODIS")
# Get a list of sds names
sds <- get_subdatasets('MOD11C3.A2009001.006.2016006051904.hdf')
# Isolate the name of the first sds
name <- sds[1]
filename <- 'Rasterinr.tif'
gdal_translate(sds[1], dst_dataset = filename)
# Load the Geotiff created into R
r <- raster(filename)
# Identify files to read:
rlist=list.files(getwd(), pattern="hdf$", full.names=FALSE)
# Substract last 5 digits from MODIS filename for use in a new .img filename
substrRight <- function(x, n){
substr(x, nchar(x)-n+1, nchar(x))
}
filenames0 <- substrRight(rlist,9)
# Suffixes for MODIS files for identyfication:
filenamessuffix <- substr(filenames0,1,5)
listofnewnames <- c("2009.01.MODIS_","2009.02.MODIS_","2009.03.MODIS_","2009.04.MODIS_","2009.05.MODIS_",
"2009.06.MODIS_","2009.07.MODIS_","2009.08.MODIS_","2009.09.MODIS_","2009.10.MODIS_",
"2009.11.MODIS_","2009.12.MODIS_",
"2010.01.MODIS_","2010.02.MODIS_","2010.03.MODIS_","2010.04.MODIS_","2010.05.MODIS_",
"2010.06.MODIS_","2010.07.MODIS_","2010.08.MODIS_","2010.09.MODIS_","2010.10.MODIS_",
"2010.11.MODIS_","2010.12.MODIS_",
"2011.01.MODIS_","2011.02.MODIS_","2011.03.MODIS_","2011.04.MODIS_","2011.05.MODIS_",
"2011.06.MODIS_","2011.07.MODIS_","2011.08.MODIS_","2011.09.MODIS_","2011.10.MODIS_",
"2011.11.MODIS_","2011.12.MODIS_")
# Final new names for converted files:
newnames <- vector()
for (i in 1:length(listofnewnames)) {
newnames[i] <- paste0(listofnewnames[i],filenamessuffix[i],".img")
}
# Loop converting files to raster from NetCDF
for (i in 1:length(rlist)) {
sds <- get_subdatasets(rlist[i])
gdal_translate(sds[1], dst_dataset = newnames[i])
}
Haben Sie [* diesen Artikel *] (http://www.r-bloggers.com/working-with-hdf-files-in-r-example-pathfinder-sst-data/) auf R-Bloggern überprüft ? Es bietet ein funktionierendes Beispiel, ob die angebotene Lösung * einfach * ist, es wäre eine Frage des individuellen Urteils. In Bezug auf Ihre zweite Frage, bietet die Methode ['writeRater'] (http://www.inside-r.org/packages/cran/raster/docs/writeRaster) im [**' Raster' **] (http://www.inside-r.org/packages/cran/raster) Paket von Nutzen für Sie? – Konrad
@Konrad Ja, ich stieß auf diesen Artikel und verbrachte eine Weile damit, es zum Laufen zu bringen. Problem ist, dass ich den folgenden Fehler bekomme, wenn ich versuche, die h5ls-Funktion für meine Daten zu verwenden: Fehler in H5Fopen (Datei, "H5F_ACC_RDONLY"): HDF5. Dateizugriffsfähigkeit. Datei kann nicht geöffnet werden. Ich benutze das Raster-Paket sehr, es ist das Einlesen und Bearbeiten von .hdf-Dateien Ich interessiere mich für die Meinungen von Leuten, da das ist, was mich Probleme verursacht. – James
Bitte denken Sie daran, Ihr Problem reproduzierbar zu machen in Bezug auf die in [dieser Diskussion] geäußerten Vorschläge (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example?lq= 1); Es wird einfacher sein, dir zu helfen. – Konrad