Estoy teniendo muchos problemas con GDAL. Además de la falta de documentación, parece haber poco soporte en Python. De todos modos, esto es solo un script de reproyección por lotes que va así:
source_file = gdal.Open(filepath.encode("ascii"))
source_wkt = source_file.GetProjectionRef()
source_srs = osr.SpatialReference()
source_srs.ImportFromWkt(source_wkt)
reproj_file = gdal.AutoCreateWarpedVRT(source_file, source_wkt, dest_wkt)
gdal.ReprojectImage(source_file, reproj_file, source_wkt, dest_wkt)
reproj_attributes = reproj_file.GetGeoTransform()
driver = gdal.GetDriverByName("GTiff")
dest_file = driver.CreateCopy(outputpath.encode("ascii"), reproj_file, 0)
La parte dest_srs y des_wkt no están definidas en este fragmento de código, pero está en algún lugar fuera del bucle (ya que solo necesita definirse una vez). Parece que funciona una vez, puedo obtener un aspecto bonito de él, luego darme un 'ERROR 6 WriteBlock () no compatible' y Python se bloquea. Todos son GeoTIFF creados de la misma manera con los mismos datos básicos (solo en diferentes momentos).
También debido a la naturaleza de la reproyección (de GCS a PCS), el AutoCreateWarpedVRT tiende a crear mucho espacio en blanco, pero le da un valor de 0, que es un problema ya que podría ser un valor de datos real. ¿Hay alguna forma de establecer el valor de nodata en -99 en su lugar?
fuente
gdalwarp -t_srs '+proj=utm +zone=11 +datum=WGS84' raw_spot.tif utm11.tif
. Ha existido desde hace mucho tiempo, tiene muchas funciones, está bien probado y probablemente sea más rápido que un enfoque de Python puro.Respuestas:
Sobre
AutoCreateWarpedVRT
el espacio en blanco.Echa un vistazo a este ticket de error gdal .
En particular se afirma allí:
fuente
Option
solución, pero el cambio a llamargdalwarp
a travéssubprocess
resuelto el problema con NoData desenmascarado.