Estou usando o gdalwarp para manipular blocos SRTM perto da linha de dados (ou seja, 180 °, também conhecido como antimeridiano). Os blocos SRTM apresentam uma sobreposição muito pequena (1/2 pixel) com o meridiano. Você pode ver isso usando gdalinfo:
gdalinfo S16W180.hgt
Driver: SRTMHGT/SRTMHGT File Format
Files: S16W180.hgt
Size is 1201, 1201
[...]
Lower Left (-180.0004167, -16.0004167) (180d 0' 1.50"W, 16d 0' 1.50"S)
Upper Right (-178.9995833, -14.9995833) (178d59'58.50"W, 14d59'58.50"S)
[...]
Portanto, a fonte abrange a linha de dados em uma quantidade pequena.
Isso causa problemas com o gdalwarp, o que acaba criando enormes resultados em todo o mundo.
gdalwarp -t_srs "epsg:900913" S16W180.hgt test.tif
gdalinfo test.tif
Driver: GTiff/GeoTIFF
Files: test.tif
Size is 1703, 5
[...]
Lower Left (-20037508.330,-1806798.473) (180d 0' 0.00"W, 16d 7'13.00"S)
Upper Right (20032839.451,-1689152.120) (179d57'29.01"E, 15d 5'45.84"S)
Observe as longitudes que abrangem (quase) todo o globo e também o número de linhas é inesperadamente pequeno (5)
Isso é um bug no gdalwarp? Caso contrário, quais são as opções corretas para passar ao gdalwarp para obter uma saída sensata?
Respostas:
Uma solução fácil seria especificar o sistema de coordenadas "manualmente" como uma seqüência de caracteres PROJ. Isso permite que você use o
+over
comutador que desativa o empacotamento no antimeridiano:Quando faço isso e depois faço
gdalinfo
o resultado, recebo o seguinte:Eu peguei a string PROJ (sem
+over
) olhando a saída original degdalinfo
. Foi incluído em umEXTENSION[...]
bloco do sistema de coordenadas.fonte
Funciona em duas etapas:
O primeiro comando inicia o meio pixel extra no lado errado do meridiano de 180 °. Você obtém um arquivo de saída 1178P x 1222L.
Como alternativa, com gdal_translate:
Criando um arquivo de saída 1179P x 1223L.
fonte
Como estava enfrentando o mesmo problema, escrevi um pequeno script de shell que descobre se o arquivo raster atravessa a linha de dados. Se verdadeiro, a seguinte opção é adicionada ao gdalwarp:
É assim que o script funciona passo a passo:
ATUALIZAÇÃO Melhor versão do script, requer GDAL 2.0+ e Python: versão antiga abaixo.
fonte
Este é um problema na biblioteca GDAL. Parece que GDALSuggestedWarpOutput () está dando saída estranha para largura e altura do arquivo de saída.
Ainda não encontrei uma maneira de contornar isso.
fonte