1 votos

Gdal.warp produce una imagen negra al cortar desde json

Tengo la siguiente tarea: cortar un polígono de un archivo .tif.

mi tarea es: crear una nueva imagen a partir de los polígonos que tengo Realizo los siguientes pasos:

  1. obtener datos de imágenes y polígonos
  2. reproyectar polígono a EPSG:4326 para norma json
  3. hacer json
  4. obtener los límites reproyectados del polígono
  5. imagen de recorte vía gdal.warp

    geom.Transform(transform) json_ap = geom.ExportToJson()

    gx_min, gx_max, gy_min, gy_max = geom.GetEnvelope()

    output_options = gdal.WarpOptions(cutlineDSName = json_ap, outputBounds= [gx_min, gy_min, gx_max, gy_max], srcSRS = g_ref, dstSRS='EPSG:4326', cropToCutline=True)

    gdal.Warp('teste.tif', raster_path, options=output_options)

Todas las imágenes que exporto están en blanco.

He intentado crear el recorte sin reproyección, con una reproyección diferente, con un tif reproyectado como fuente...

¿Qué está pasando?

1voto

user161158 Puntos 1

¡Lo he descubierto!

Una de las siguientes funciones puede estar causando este problema:

geom.Transform(transform) o geom.ExportToJson()

El Json tiene invertidos los valores de latitud y longitud. Escribí la siguiente función en mi script de python que lo solucionó.

def json_latlon_correction(json_file):
    json_file = json.loads(json_file)
    for i in range(len(json_file["coordinates"][0])):
        coord_pair = json_file["coordinates"][0][i]
        json_file["coordinates"][0][i] = coord_pair[::-1]
    return json_file

Incluso tienen un tema en github sobre esto:

https://github.com/OSGeo/gdal/issues/1974

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