[R-sig-Geo] Question on hierarchical data format 5 .h5 file format
Edzer Pebesma
edzer@pebe@m@ @end|ng |rom un|-muen@ter@de
Sun Nov 14 14:13:02 CET 2021
On 14/11/2021 13:59, Edzer Pebesma wrote:
> Gabriel shared the data with me (off-list, 1Gb) and it contains two hdf5
> datasets, one containing the raster of the longitude and latitude, the
> other rasters with the attributres (LST) but no coordinates. I could get
> a (rough: factor 50 downsampling) plot with stars using:
>
> library(stars)
> lat =
> read_stars("HDF5:ECOSTRESS_L1B_GEO_11712_012_20200730T061029_0601_01.h5://Geolocation/latitude")
>
> lon =
> read_stars("HDF5:ECOSTRESS_L1B_GEO_11712_012_20200730T061029_0601_01.h5://Geolocation/longitude")
>
>
> var =
> "HDF5:ECOSTRESS_L2_LSTE_11712_012_20200730T061029_0601_01.h5://SDS/LST"
> lst = read_stars(var, curvilinear = list(x = lon, y = lat))
> plot(lst, downsample = 50, axes = TRUE, reset = FALSE)
>
> library(rnaturalearth)
> ne = ne_countries(returnclass = "sf")
> plot(st_geometry(ne), add = TRUE, border = 'yellow')
> # california border seems to make sense
>
>
> but I'm not sure how to make a regular raster (in some CRS) out of this
> for exporting to GeoTIFF.
This might be useful: https://github.com/r-spatial/stars/issues/386
but converting to polygons will be incredibly slow and memory hungry.
>
> On 14/11/2021 11:00, Edzer Pebesma wrote:
>> This might be because the grid is not regular but possibly
>> curvilinear, having two raster layers with the lon & lat values for
>> each pixel. Can you share a sample data set?
>>
>> On 14/11/2021 10:47, Gabriel Cotlier wrote:
>>> Dear Michael,
>>>
>>> Following your advice I have tired :
>>>
>>> library(terra)
>>> library(raster)
>>> library(dplyr)
>>>
>>> r = terra::rast(file.choose())
>>> plot(r$LST)
>>> r_lst = r$LST
>>> r_lst %>% raster()
>>> plot(r_lst)
>>>
>>> Then I effectively get a raster layer format from the raster package
>>> as I
>>> wanted, but looking at the plot and the raster layer information--see
>>> bellow-- the scene appears to need both latitude and longitude for
>>> correct
>>> geolocation, how can I do this procedure?
>>>
>>>> r_lst %>% raster()
>>> class : RasterLayer
>>> dimensions : 5632, 5400, 30412800 (nrow, ncol, ncell)
>>> resolution : 1, 1 (x, y)
>>> extent : 0, 5400, 0, 5632 (xmin, xmax, ymin, ymax)
>>> crs : NA
>>> source : LST
>>> names : LST
>>> values : 0, 65535 (min, max)
>>>
>>> The extent and the resolution are not the correct ones.
>>> Maybe in the same .h5 is all the data for georeferencing it although I
>>> could not see how to get to it and apply it to the layer.
>>> There is also another file with complementary data related to
>>> geolocation
>>> but how can I query it, and get the data for geolocation and apply it to
>>> the raster layer?.
>>> The objective is to save it as a GeoTIFF file to be opened in QGIS with
>>> correct geolocation.
>>>
>>> What do you suggest for converting the .h5 file to a georeferenced
>>> Raster
>>> Layer in GeoTIFF format ?
>>>
>>> Thanks a lot.
>>> Kind regards,
>>> Gabriel
>>>
>>> On Sat, Nov 13, 2021 at 12:22 PM Gabriel Cotlier <gabiklm01 using gmail.com>
>>> wrote:
>>>
>>>> Dear Michael Summer,
>>>> Thanks a lot for your swift reply.
>>>> I will give a try to the procedure you mentioned.
>>>> Kind regards,
>>>> Gabriel
>>>>
>>>>
>>>> On Sat, Nov 13, 2021 at 12:14 PM Michael Sumner <mdsumner using gmail.com>
>>>> wrote:
>>>>
>>>>> try terra::rast() or stars::read_stars() on the file, both use gdal to
>>>>> interrogate and read. What you get depends on the structure of the
>>>>> files,
>>>>> variables interpreted as subdatasets. stars is more general but sees
>>>>> variables as 2D arrays with bands, terra calls these bands layers.
>>>>>
>>>>> Alternatively try raster::raster() or RNetCDF or tidync which might be
>>>>> more straightforward than rhdf5 but all are quite different to each
>>>>> other
>>>>> and to the gdal view.
>>>>>
>>>>> hth
>>>>>
>>>>> On Sat, 13 Nov 2021, 18:56 Gabriel Cotlier, <gabiklm01 using gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I would like to be able to visualize / plot a specific data layer
>>>>>> within
>>>>>> the structure a hierarchical data file format .h5 in R. I could
>>>>>> observe
>>>>>> the structure as follows :
>>>>>>
>>>>>> library(rhdf5)
>>>>>> r= h5ls(file.choose())
>>>>>> r
>>>>>>
>>>>>> and also in this way identify the Group and Name of the data to be
>>>>>> plotted,
>>>>>> however I've tried I could not access the data itself, nor plot it
>>>>>> as a
>>>>>> raster layer with its corresponding geographic coordinates.
>>>>>> I would like to be able to select such data, plot it as a raster
>>>>>> layer
>>>>>> and
>>>>>> if possible save it as GeoTIFF file format to be further processed
>>>>>> with
>>>>>> the
>>>>>> raster package as a common raster layer.
>>>>>>
>>>>>> If any small guidance example, reprex, of this procedure is possible
>>>>>> it would be appreciated.
>>>>>>
>>>>>> Thanks a lot in advance
>>>>>> Kind regards,
>>>>>> Gabriel Cotlier
>>>>>> --
>>>>>> Gabriel Cotlier, PhD
>>>>>> Haifa Research Center for Theoretical Physics and Astrophysics
>>>>>> (HCTPA)
>>>>>> University of Haifa
>>>>>> Israel
>>>>>>
>>>>>> [[alternative HTML version deleted]]
>>>>>>
>>>>>> _______________________________________________
>>>>>> R-sig-Geo mailing list
>>>>>> R-sig-Geo using r-project.org
>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>
>>>>>
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-sig-Geo mailing list
>>> R-sig-Geo using r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>
>>
>
--
Edzer Pebesma
Institute for Geoinformatics
Heisenbergstrasse 2, 48151 Muenster, Germany
Phone: +49 251 8333081
More information about the R-sig-Geo
mailing list