Как я могу скорректировать количество строк в моих файлах, чтобы разрешить отображение растрового изображения? - PullRequest
0 голосов
/ 13 июля 2020
• 1000 * l oop, чтобы прочитать мои файлы в папке и сложить растры:
for (i in 1: length(ncfiles)){
  fname <-(ncfiles[i])
  f <- nc_open(fname)
  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))
  bigstack <- stack(bigstack, pmraster)
  print("test")
}

Я ударил стену с этим сообщением об ошибке только после 1 итерации:

[1] "test"
Error in data.frame(as.vector(lon), as.vector(lat), as.vector(ah)) : 
  arguments imply differing number of rows: 1428672, 1301440

Is путь наименьшего сопротивления вперед, чтобы определить, что каждый файл имеет одинаковое количество строк? Если да, то как я могу исправить эту ошибку? Заранее благодарю

1 Ответ

0 голосов
/ 13 июля 2020

Вам нужно выяснить, что здесь происходит:

s1 <- cbind(as.vector(lon), as.vector(lat), as.vector(ah))

Какова длина lon, lat и ah; и почему они разные? Что-то не совпадает, поэтому вы делаете что-то неправильно, вероятно, ужасно неправильно.

редактировать Вы собирали данные из разных файлов (f и nc) . Теперь исправлено ниже

pmraster <- raster(res=0.1, ext=extent(c(-180,-140,10,30)))  
biglist <- list()
for (i in 1: length(ncfiles)){
    print(i); flush.console()
    f <- nc_open(ncfiles[i])
    ah <- ncvar_get(f, varid = "DETAILED_RESULTS/aerosol_optical_thickness")
    lon <- ncvar_get(f, varid = "PRODUCT/longitude")
    lat <- ncvar_get(f, varid = "PRODUCT/latitude")
    nc_close(f)
    s1 <- cbind(as.vector(lon), as.vector(lat), as.vector(ah))
    biglist[[i]]  <- rasterize(s1[,1:2], pmraster, s1[,3], fun=mean, na.rm=T)
}

s <- stack(biglist)
...