Eu sou novo no GIS.
Eu tenho algum código que converte imagens infravermelhas de Marte em mapas de inércia térmica, que são armazenados como matrizes numpy 2D. Eu tenho salvado esses mapas como arquivos hdf5, mas eu realmente gostaria de salvá-los como imagens rasterizadas, para poder processá-los no QGIS. Eu passei por várias pesquisas para descobrir como fazer isso, mas sem sorte. Eu tentei seguir as instruções no tutorial em http://www.gis.usu.edu/~chrisg/python/, mas os arquivos que eu produzo usando o código de exemplo são abertos como caixas cinza simples quando os importo para o QGIS. Sinto que se alguém pudesse sugerir o procedimento mais simples possível para um exemplo simplificado do que eu gostaria de fazer, talvez eu pudesse fazer algum progresso. Eu tenho QGIS e GDAL, ficaria muito feliz em instalar outras estruturas que qualquer pessoa poderia recomendar. Eu uso o Mac OS 10.7.
Portanto, se, por exemplo, eu tenho uma matriz numpy de inércia térmica que se parece com:
TI = ( (0.1, 0.2, 0.3, 0.4),
(0.2, 0.3, 0.4, 0.5),
(0.3, 0.4, 0.5, 0.6),
(0.4, 0.5, 0.6, 0.7) )
E para cada pixel eu tenho a latitude e longitude:
lat = ( (10.0, 10.0, 10.0, 10.0),
( 9.5, 9.5, 9.5, 9.5),
( 9.0, 9.0, 9.0, 9.0),
( 8.5, 8.5, 8.5, 8.5) )
lon = ( (20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5) )
Qual procedimento as pessoas recomendariam para converter esses dados em um arquivo raster que eu possa abrir no QGIS?
Respostas:
Uma solução possível para o seu problema: converta-o em uma varredura ASCII, cuja documentação está aqui . Isso deve ser bastante fácil de fazer com python.
Portanto, com seus dados de exemplo acima, você terminaria com o seguinte em um arquivo .asc:
Isso adiciona com sucesso ao QGIS e ao ArcGIS e, estilizado no ArcGIS, fica assim:
Adendo: Embora você possa adicioná-lo ao QGIS conforme observado, se você tentar acessar as propriedades dele (para estilizá-lo), o QGIS 1.8.0 trava. Estou prestes a relatar isso como um bug. Se isso acontecer com você também, existem muitos outros SIG gratuitos por aí.
fonte
Abaixo está um exemplo que escrevi para um workshop que utiliza os módulos numpy e gdal Python. Ele lê os dados de um arquivo .tif em uma matriz numpy, faz uma reclassificação dos valores na matriz e os grava de volta em um .tif.
Pela sua explicação, parece que você conseguiu escrever um arquivo válido, mas você só precisa simbolizá-lo no QGIS. Se bem me lembro, quando você adiciona um raster pela primeira vez, ele geralmente mostra todas as cores se você não possui um mapa de cores preexistente.
fonte
outDs = None
para obtê-lo salvoFinalmente encontrei esta solução, obtida com essa discussão ( http://osgeo-org.1560.n6.nabble.com/gdal-dev-numpy-array-to-raster-td4354924.html ). Gosto porque posso ir direto de uma matriz numpy para um arquivo raster tif. Ficaria muito grato por comentários que poderiam melhorar a solução. Vou postá-lo aqui, caso alguém procure uma resposta semelhante.
fonte
Há também uma boa solução no livro de receitas oficial do GDAL / OGR para Python.
fonte
Uma alternativa à abordagem sugerida nas outras respostas é usar o
rasterio
pacote. Ocorreu um problema ao gerá-losgdal
e achei este site útil.Supondo que você tenha outro arquivo tif (
other_file.tif
) e uma matriz numpy (numpy_array
) que tenha a mesma resolução e extensão que este arquivo, esta é a abordagem que funcionou para mim:fonte