Saltar al contenido

¿Crear archivos TFW y PRJ para la carpeta de archivos GeoTIFF?

Nuestros desarrolladores estrellas han agotado sus provisiones de café, en su búsqueda todo el tiempo por la solución, hasta que Brenda encontró la solución en GitLab por lo tanto hoy la compartimos aquí.

Solución:

los listgeo La utilidad que viene con libgeotiff es una buena utilidad de línea de comandos que puede extraer el archivo TWF de los archivos GeoTIFF.

Por ejemplo, tengo un directorio de GeoTIFF y tengo libgeotiff instalado como parte de OSGeo4w. Puede ejecutar el shell OSGeo4w y hacer esto:

$ listgeo -tfw BN24_GeoTif_1-01.tif
World file written to 'BN24_GeoTif_1-01.tfw'.

Sería bueno si la misma utilidad también pudiera extraer el archivo PRJ.

La forma más hábil de generar TFW es escribir un script en Python o Java usando GDAL, que sería unas pocas líneas de código.

La creación de archivos .prj de estilo antiguo (anteriores a ArcGis 9) no son compatibles con GDAL, solo lectura (consulte aquí). Los archivos de estilo nuevo (basados ​​en WKT) son compatibles con la creación, pero no se garantiza que cubran todos los casos. Pero de cualquier manera, en un caso supremo de actividad de desplazamiento, he escrito un script de Python que hace lo que necesita. No hay comprobación de errores ni nada, pero funciona para el directorio de tiffs que tenía a mano, YMMV.

# Written by MerseyViking (mersey dot viking at gmail dot com), 2011.
# Released into the public domain - May 8, 2011
# I accept no responsibility for any errors or loss of data, revenue, or life this script may cause. Use at your own risk.

import osgeo.gdal as gdal
import osgeo.osr as osr
import os
import glob
import sys

def generate_tfw(path, gen_prj):
    for infile in glob.glob(os.path.join(path, '*.tif')):
        src = gdal.Open(infile)
        xform = src.GetGeoTransform()

        if gen_prj == 'prj':
            src_srs = osr.SpatialReference()
            src_srs.ImportFromWkt(src.GetProjection())
            src_srs.MorphToESRI()
            src_wkt = src_srs.ExportToWkt()

            prj = open(os.path.splitext(infile)[0] + '.prj', 'wt')
            prj.write(src_wkt)
            prj.close()

        src = None
        edit1=xform[0]+xform[1]/2
        edit2=xform[3]+xform[5]/2

        tfw = open(os.path.splitext(infile)[0] + '.tfw', 'wt')
        tfw.write("%0.8fn" % xform[1])
        tfw.write("%0.8fn" % xform[2])
        tfw.write("%0.8fn" % xform[4])
        tfw.write("%0.8fn" % xform[5])
        tfw.write("%0.8fn" % edit1)
        tfw.write("%0.8fn" % edit2)
        tfw.close()

if __name__ == '__main__':
    generate_tfw(sys.argv[1], sys.argv[2])

Llámalo desde la línea de comando así:

python gen_tfw.py  [prj]

El segundo parámetro puede ser prj para generar archivos prj de estilo WKT, o cualquier otra cosa para generar archivos .TFW.

Si no puede usar secuencias de comandos de Python por cualquier motivo, puede usar:

gdal_translate -co "TFW=YES" in.tif out.tif

Pero eso también copiará los datos de la imagen, por lo que tendrá que eliminar el original. Y, por supuesto, no generará archivos .prj de ningún tipo. Pero suponiendo que todos sus tiff estén en la misma proyección, podría crear un archivo .prj a mano y duplicarlo para todas las imágenes de origen.

Si uno quiere editar más tiff en la aplicación de retoque fotográfico y conservar su geolocalización, la exportación de la capa ráster con la creación de tfw y la imagen renderizada habilitada es la forma más fácil, en mi opinión. Para opciones ligeramente diferentes, hay un camino a través del menú Ráster / Conversión / Traducir.

ingrese la descripción de la imagen aquí

Comentarios y puntuaciones del post

Recuerda dar visibilidad a esta reseña si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *