如何更正文件中的行数以允许显示光栅图像?
How may I correct the number of rows in my files to allow my raster image to be displayed?
在我尝试将多个光栅图像堆叠在一起时,我标识了我的目标文件:
ncfiles <- list.files("~/Desktop/Summer 2020/Tropomi/AH.Error1/Error", full.names = T, pattern = "*.nc")
创建空栅格:
bigstack <- stack()
构造一个for
循环来读取文件夹中的文件并堆叠光栅:
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
定义每个文件的行数是否相同的最小阻力路径?如果是这样,我该如何纠正这个错误?提前谢谢你。
你需要弄清楚这里发生了什么:
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)
在我尝试将多个光栅图像堆叠在一起时,我标识了我的目标文件:
ncfiles <- list.files("~/Desktop/Summer 2020/Tropomi/AH.Error1/Error", full.names = T, pattern = "*.nc")
创建空栅格:
bigstack <- stack()
构造一个for
循环来读取文件夹中的文件并堆叠光栅:
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
定义每个文件的行数是否相同的最小阻力路径?如果是这样,我该如何纠正这个错误?提前谢谢你。
你需要弄清楚这里发生了什么:
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)