Я пытаюсь открыть и построить около 60 файлов netcdf4 из каталога. Я следовал аналогичному примеру, первоначально опубликованному здесь.
"~/Desktop/Summer 2020/Tropomi/Aerosol Height"
ncfiles <- list.files("~/Desktop/Summer 2020/Tropomi/Aerosol Height")
for (i in 1: length(ncfiles)){
fname <-(paste0("~/Desktop/Summer 2020/Tropomi/Aerosol Height/", ncfiles[i]))
f <- nc_open(fname)
print(fname)
}
Когда я запускаю этот раздел, правильные файлы считываются и выводятся на экран, но внезапно останавливаются с этим сообщением об ошибке:
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180715T201241_20180715T215609_03908_01_010301_20190530T173144.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180715T215411_20180715T233739_03909_01_010301_20190530T174631.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180715T233541_20180716T011909_03910_01_010301_20190530T175745.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180716T011711_20180716T030038_03911_01_010301_20190530T181100.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180716T213507_20180716T231835_03923_01_010301_20190530T202107.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180716T231637_20180717T010005_03924_01_010301_20190530T203126.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180717T005807_20180717T024134_03925_01_010301_20190530T203847.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180717T211603_20180717T225931_03937_01_010301_20190530T231939.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180717T225733_20180718T004100_03938_01_010301_20190530T233047.nc"
[1] "~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180718T003902_20180718T022230_03939_01_010301_20190530T234019.nc"
Error in R_nc4_open: NetCDF: HDF error
Error in nc_open(fname) :
Error in nc_open trying to open file ~/Desktop/Summer 2020/Tropomi/Aerosol Height/S5P_RPRO_L2__AER_LH_20180718T205659_20180718T224026_03951_01_010301_20190531T015417.nc
Я открыл файл, выделенный сообщением об ошибке, вне цикла, поэтому я не верю, что файл поврежден. Кто-нибудь знает, почему это происходит? Заранее спасибо!
ОБНОВЛЕНИЕ: Используя try
, я могу запустить цикл до конца и вывести все нужные файлы на консоль. Следующим шагом для меня является чтение файлов, извлечение переменных и наложение растровых изображений друг на друга, в результате чего получается одно изображение. Try
и TryCatch
не работают, и мой цикл прерывается, как только встречается первая ошибка.
for (i in 1: length(ncfiles)){
try(
{
fname <-(ncfiles[i])
f <- nc_open(fname)
print(fname)},
silent = T)
ah <- ncvar_get(f, varid = "DETAILED_RESULTS/aerosol_optical_thickness")
lon <- ncvar_get(nc, varid = "PRODUCT/longitude")
lat <- ncvar_get(nc, varid = "PRODUCT/latitude")
nc_close(f)
s1 <- data.frame(as.vector(lon), as.vector(lat), as.vector(ah))
crsLatLon <- "+proj=longlat +datum=WGS84"
ex <- extent(c(-180,180,-90,90))
pmraster <- raster(ncol=360*10, nrow=180*10, crs=crsLatLon,ext=ex)
pmraster <- rasterize(s1[,1:2], pmraster, s1[,3], fun=mean, na.rm=T)
exHI <- extent(c(-180,-140,10,30))
levelplot(crop(pmraster,exHI))
}
Как я могу изменить структуру цикла, чтобы пропустить ошибки?