Eu tenho uma imagem raster geotiff que possui um sistema de coordenadas com longitudes de 0 a 360. O centro horizontal da imagem é 180 longitude. Veja a imagem abaixo:
Quero transformá-lo em EPSG: 4326 SRS com -180 180 de longitude. E eu quero que o centro da imagem esteja no meridiano de Greenwich (0). Eu acho que esse srs é muito usado. Espero que o resultado fique assim:
Então, eu uso um comando gdalwarp para reprojetar:
gdalwarp -s_srs '+proj=latlong +datum=WGS84 +pm=180dW' -t_srs EPSG:4326 test_col.tif test_4326.tif
Mas só recebo um tiff com dimensões maiores (mais pixels) e metadados EPSG: 4326. A imagem em si parece a mesma, como a inicial. Mas espero que troque os hemisférios.
A questão é: como faço para que uma imagem seja estritamente -180 180 EPSG: 4326 com o centro em 0 longitude?
Este é gdalinfo do meu arquivo inicial:
Origin = (-0.102272598067084,89.946211604095552)
Pixel Size = (0.204545196134167,-0.204423208191126)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=BAND
Corner Coordinates:
Upper Left ( -0.1022726, 89.9462116) ( 0d 6' 8.18"W, 89d56'46.36"N)
Lower Left ( -0.1022726, -89.9462116) ( 0d 6' 8.18"W, 89d56'46.36"S)
Upper Right ( 359.897, 89.946) (359d53'50.18"E, 89d56'46.36"N)
Lower Right ( 359.897, -89.946) (359d53'50.18"E, 89d56'46.36"S)
Center ( 179.8975000, -0.0000000) (179d53'51.00"E, 0d 0' 0.00"S)
Este é gdalinfo após gdalwarp
Origin = (-180.102727401932952,89.946211604095552)
Pixel Size = (0.091397622896436,-0.091420837939082)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left (-180.1027274, 89.9462116) (180d 6' 9.82"W, 89d56'46.36"N)
Lower Left (-180.1027274, -89.9699975) (180d 6' 9.82"W, 89d58'11.99"S)
Upper Right ( 179.8211116, 89.9462116) (179d49'16.00"E, 89d56'46.36"N)
Lower Right ( 179.8211116, -89.9699975) (179d49'16.00"E, 89d58'11.99"S)
Center ( -0.1408079, -0.0118929) ( 0d 8'26.91"W, 0d 0'42.81"S)
fonte
-tr xres yres
bandeira?Respostas:
Você pode definir explicitamente o intervalo de coordenadas de saída usando a opção de extensão de destino como gdalwarp (por exemplo, "-te -180 -90 180 90"), mas também pode usar a opção de configuração CENTER_LONG para forçar o rebrulho em torno de uma nova longitude central. Algo assim:
Observe também a opção de distorção "SOURCE_EXTRA = 1000". Ao re-embalar, o cálculo do retângulo de origem fica confuso com a interrupção da longitude e perde algumas imagens. Esta opção diz extrair alguns extras. Sem ele, você verá uma lacuna de dados perto do meridiano principal.
PS. definir um meridiano de 180dW como você fez não é uma boa ideia IMHO.
fonte
--config CENTER_LONG 0
não faz nada, o resultado é o mesmo raster. Algo que sinto falta aqui? Rodando no GDAL versão 2.2.3.Basicamente, você precisa cortar a varredura em duas partes e juntá-las novamente com um novo deslocamento / escala.
Há um exemplo aqui de como fazer isso de [-180.180] a [0,360] com gdal_translate e o driver VRT: http://trac.osgeo.org/gdal/wiki/UserDocs/RasterProcTutorial
Digitalize para baixo até o "tutorial de 5 min" e os detalhes estão em "Arquivos virtuais". Deve ser simples o suficiente para modificar o exemplo para se adequar.
fonte
Isso pode ser feito em R com uma linha de código usando a
rotate
função com oraster
pacotefonte
Se você quiser apenas visualizar a varredura no QGIS, poderá definir uma projeção personalizada com o parâmetro + lon_wrap = 180.
Meu entendimento disso é que, por padrão, o proj4 agrupa latitudes de 0 -> 360 a -180 -> 180. + lon_wrap = 180 efetivamente cancelará esse agrupamento e exibirá latitudes entre 180 e 360 no hemisfério ocidental.
A opção + over deve desativar completamente o agrupamento, mas - pelo menos no meu caso - a varredura não foi exibida corretamente quando essa opção foi usada.
Consulte http://proj4.org/parameters.html#lon-wrap-over-longitude-wrapping para obter mais informações.
fonte
Aqui está uma função que eu criei para reprojetar uma única matriz fraca de valores de grade usando javascript de 0-360 a -180-180. Espero que ajude alguém.
fonte