Estou tendo muitos problemas com a GDAL. Além de, às vezes, falta documentação, parece haver pouco suporte no Python. De qualquer forma, este é apenas um script de reprojeto em lote que segue assim:
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)
As partes dest_srs e des_wkt não estão definidas neste pedaço de código, mas estão em algum lugar fora do loop (já que precisam ser definidas apenas uma vez). Parece funcionar uma vez, posso obter um tif bonito e, em seguida, me dar um 'ERRO 6 WriteBlock () não suportado') e falhas no python. Todos eles são GeoTIFFs criados da mesma maneira com os mesmos dados básicos (apenas em momentos diferentes).
Também devido à natureza da reprojeção (do GCS para o PCS), o AutoCreateWarpedVRT tende a criar muito espaço em branco, mas fornece um valor de 0, o que é um problema, pois esse pode ser um valor real dos dados. Existe alguma maneira de definir o valor nodata para -99?
fonte
gdalwarp -t_srs '+proj=utm +zone=11 +datum=WGS84' raw_spot.tif utm11.tif
. Já faz muito tempo, recursos ricos, bem testados e provavelmente mais rápidos do que uma abordagem python pura.Respostas:
Em relação ao
AutoCreateWarpedVRT
espaço em branco.Dê uma olhada neste bilhete de erro gdal .
Em particular, afirma-se lá:
fonte
Option
correção, mas a mudança para chamargdalwarp
atravéssubprocess
resolveu o problema com NoData desmascarado.