2 votos

Cómo convertir de HDF5 a GeoTIFF con Python

Vengo de Lectura de metadatos en un archivo HDF5 .

Tengo un archivo HDF5 con información de radar. Me gustaría leer estos datos y los metadatos geoespaciales contenidos en el archivo para producir un GeoTIFF. Usando la respuesta aceptada, puedo leer los metadatos, pero no estoy seguro de cómo convertirlos a algo que rasterio puede entender para producir un CRS y transform que permiten georreferenciar el campo.

Ahora mismo, los metadatos que puedo obtener del HDF5 son estos dos dicts:

{'projection_indication': b'Y',
 'projection_name': b'STEREOGRAPHIC',
 'projection_proj4_params': b'+proj=stere +lat_0=90 +lon_0=0 +lat_ts=60 +a=6378.14 +b=6356.75 +x_0=0 y_0=0'}

{'geo_column_offset': array([0.], dtype=float32),
 'geo_dim_pixel': b'KM,KM',
 'geo_number_columns': array([700], dtype=int32),
 'geo_number_rows': array([765], dtype=int32),
 'geo_par_pixel': b'X,Y',
 'geo_pixel_def': b'LU',
 'geo_pixel_size_x': array([1.0000035], dtype=float32),
 'geo_pixel_size_y': array([-1.0000048], dtype=float32),
 'geo_product_corners': array([ 0.      , 49.362064,  0.      , 55.973602, 10.856453, 55.388973,
         9.0093  , 48.8953  ], dtype=float32),
 'geo_row_offset': array([3649.982], dtype=float32)}

De la primera puedo obtener fácilmente la CRS pero no entiendo muy bien el significado de los parámetros de este último, aunque estoy bastante seguro de que definen implícitamente el parámetro transform .

¿Cómo se puede utilizar esto para producir un CRS y tranform comprensible por rasterio ?

1voto

Jasmine James Puntos 56

Tiene razón, esta información implica la transform y también deberá rellenar el formulario profile para poder escribir los datos en un GeoTIFF a través de rasterio.

Usted va para un dictado de python que se verá algo como esto:

{'affine': Affine(1.0000035, 0.0, x_corner, 0.0, -1.0000048, y_corner), 'count': 1, 'crs': CRS.from_string('+proj=stere +lat_0=90 +lon_0=0 +lat_ts=60 +a=6378.14 +b=6356.75 +x_0=0 y_0=0'})}), 'driver': 'GTiff', 'dtype': 'float32', 'height': 700, 'interleave': 'band', 'nodata': -9999.0, 'tiled': False, 'transform': (x_corner, 1.0, 0.0, y_corner.0, 0.0, -1.0000048), 'width': 765}

He intentado rellenar esos valores lo mejor que he podido a partir de los datos que has publicado, aunque tendrás que averiguar qué sustituir por "xcorner" e "ycorner".

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X