Convertir geoTiff proyectado a WGS84 con GDAL y Python

13

Le pido disculpas si la siguiente pregunta es un tanto estúpida, pero soy MUY NUEVO en todo este asunto del SIG.

Estoy tratando de convertir algunas imágenes geoTiff proyectadas a WGS84 usando gdal en python. He encontrado una publicación que describe el proceso para transformar puntos dentro de las GeoTiffs proyectadas utilizando algo similar a lo siguiente:

from osgeo import osr, gdal

# get the existing coordinate system
ds = gdal.Open('path/to/file')
old_cs= osr.SpatialReference()
old_cs.ImportFromWkt(ds.GetProjectionRef())

# create the new coordinate system
wgs84_wkt = """
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.01745329251994328,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4326"]]"""
new_cs = osr.SpatialReference()
new_cs .ImportFromWkt(wgs84_wkt)

# create a transform object to convert between coordinate systems
transform = osr.CoordinateTransformation(old_cs,new_cs) 

#get the point to transform, pixel (0,0) in this case
width = ds.RasterXSize
height = ds.RasterYSize
gt = ds.GetGeoTransform()
minx = gt[0]
miny = gt[3] + width*gt[4] + height*gt[5] 

#get the coordinates in lat long
latlong = transform.TransformPoint(x,y) 

Mi pregunta es, si quiero convertir estos puntos y crear un nuevo archivo GeoTiff WGS84, ¿es esta la mejor manera de hacerlo? ¿Existe alguna función que haga como tarea en 1 paso?

¡Gracias!

    
pregunta JT.WK 02.03.2011 - 06:25

2 respuestas

18

Una forma más sencilla sería utilizar las herramientas de línea de comandos de GDAL:

gdalwarp infile.tif outfile.tif -t_srs "+proj=longlat +ellps=WGS84"

Esto se puede invocar fácilmente mediante secuencias de comandos para trabajos por lotes. Esto cambiará el ráster a una nueva cuadrícula y hay otras opciones para controlar los detalles.

enlace

El sistema de coordenadas de destino (t_srs) puede ser PROJ.4 como se muestra, o un archivo real con WKT, entre otras opciones. El sistema de coordenadas de origen (-s_srs) se supone conocido, pero se puede establecer explícitamente como el objetivo.

Podría ser más fácil hacer el trabajo si no tiene que usar la API de GDAL a través de Python.

Aquí hay un tutorial para deformar con la API, dice que el soporte para Python está incompleto (no conozco los detalles): enlace

    
respondido por el mdsumner 02.03.2011 - 06:38
13

Como dijo mdsumner, es mucho más fácil usar la línea de comandos que los enlaces de python, a menos que desee ejecutar tareas muy complejas .

Entonces, si te gusta Python, como yo, puedes ejecutar la herramienta de línea de comandos con:

import os  
os.sys('gdalwarp infile.tif outfile.tif -t_srs "+proj=longlat +ellps=WGS84"')

o iterar a través de una lista de archivos:

listoffiles=['file1, file2, file3, filen']  
for file in listoffiles:
    os.system('gdalwarp %s %s -t_srs "+proj=longlat +ellps=WGS84"' %(file,'new_'+file))  

E incluso use las herramientas multiprocessing use toda la potencia de su máquina para ejecutar grandes tareas.

    
respondido por el Pablo 02.03.2011 - 15:25

Lea otras preguntas en las etiquetas