Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Raster 将HDF5转换为光栅格式的问题_Raster_Sp_Rhdf5 - Fatal编程技术网

Raster 将HDF5转换为光栅格式的问题

Raster 将HDF5转换为光栅格式的问题,raster,sp,rhdf5,Raster,Sp,Rhdf5,我正在尝试将我的h5每日文件转换为光栅格式。我转换成光栅格式。当我提取我感兴趣的区域时。我无法从光栅图像中提取感兴趣的区域,请任何人指导我如何解决此问题。R代码和hf5文件以及转换后的光栅图像显示在链接(附件)中。谢谢 库(rhdf5) 图书馆(sp) 图书馆(光栅) h5ls(“工业重建2001.h5”) h5readAttributes(file=“recostruction\u indus\u CY2001.h5”,name=“Grid”) h5f=H5Fopen(“工业重建2001.h5

我正在尝试将我的h5每日文件转换为光栅格式。我转换成光栅格式。当我提取我感兴趣的区域时。我无法从光栅图像中提取感兴趣的区域,请任何人指导我如何解决此问题。R代码和hf5文件以及转换后的光栅图像显示在链接(附件)中。谢谢

库(rhdf5)
图书馆(sp)
图书馆(光栅)
h5ls(“工业重建2001.h5”)
h5readAttributes(file=“recostruction\u indus\u CY2001.h5”,name=“Grid”)
h5f=H5Fopen(“工业重建2001.h5”)
#h5f
#h5f和“电网”

#system.time(swe您可以使用
terra
软件包(
raster
replacement)来缩短此时间。terra可以直接读取hdf5文件

该文件有多个子数据集,因此最容易将其作为数据集读取

library(terra)
f <- "reconstruction_indus_CY2001.h5"
s <- sds(f)
s
#class       : SpatDataSet 
#subdatasets : 3 
#dimensions  : 3651, 1641 (nrow, ncol)
#nlyr        : 1, 365, 365 
#resolution  : 0.2193784, 0.04930156  (x, y)
#extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +no_defs 
#names       : maxswedates, melt, swe
绘制第一层

plot(r, 1)
提取感兴趣的区域,例如

v <- vect("Hunza.shp")
x <- crop(r, v)
y <- mask(x, v)
y <- writeRaster(y, "hunza.tif")

您可以使用
terra
软件包(
graster
replacement)来设置快捷方式。terra可以直接读取hdf5文件

该文件有多个子数据集,因此最容易将其作为数据集读取

library(terra)
f <- "reconstruction_indus_CY2001.h5"
s <- sds(f)
s
#class       : SpatDataSet 
#subdatasets : 3 
#dimensions  : 3651, 1641 (nrow, ncol)
#nlyr        : 1, 365, 365 
#resolution  : 0.2193784, 0.04930156  (x, y)
#extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +no_defs 
#names       : maxswedates, melt, swe
绘制第一层

plot(r, 1)
提取感兴趣的区域,例如

v <- vect("Hunza.shp")
x <- crop(r, v)
y <- mask(x, v)
y <- writeRaster(y, "hunza.tif")

谢谢你的回答。你在本节中所说的“f”是什么意思谢谢你的回答。你在本节中所说的“f”是指文件名(现在应该清楚了)。对于您的研究区域,似乎所有的值都是零——我帮不了您。@Robert感谢您的澄清。有一件事我完全肯定,在我的研究中,值不是零。我从我的同事那里获得了这些数据,他们在Matlab中开发并以hdf5格式保存。我认为这个问题与光栅和矢量范围有关。Can请你解决这个问题。我从早上就开始尝试更正它的范围。我假设研究区域在巴基斯坦上空,但文件是覆盖整个世界的地理参考…你知道数据应该具有的空间范围吗?谢谢你的回答。你说的“f”是什么意思在本节中,感谢您的回答。在本节中,您所说的“f”是指文件名(现在应该清楚了)。对于您的研究区域,似乎所有的值都是零——我帮不了您。@Robert感谢您的澄清。有一件事我完全肯定,在我的研究中,值不是零。我从我的同事那里获得了这些数据,他们在Matlab中开发并以hdf5格式保存。我认为这个问题与光栅和矢量范围有关。Can请你解决这个问题。我从早上就开始尝试更正它的范围。我假设研究区域在巴基斯坦上空,但该文件是覆盖整个世界的地理参考…你知道数据应该具有的空间范围吗?
vy <- values(y)       
write.csv(vy, 'Hunza_SWE_2001.csv', row.names=FALSE)
library(raster)
b <- brick(y)