Eu queria saber se alguém tem alguma experiência em obter dados de elevação de um raster sem usar o ArcGIS , mas obter as informações como um python list
ou dict
?
Eu recebo meus dados XY como uma lista de tuplas:
xy34 =[perp_obj[j].CalcPnts(float(i.dist), orientation) for j in range (len(perp_obj))]
Gostaria de percorrer a lista ou passá-la para uma função ou método de classe para obter a elevação correspondente para os pares xy.
Eu fiz algumas pesquisas sobre o assunto e a API gdal parece promissora. Alguém pode me aconselhar sobre como fazer coisas, armadilhas, código de exemplo?
GDAL não é uma opção, pois não consigo editar a variável de caminho do sistema na máquina em que estou trabalhando!
Alguém sabe sobre uma abordagem diferente?
Respostas:
Aqui está uma maneira mais programática de usar o GDAL do que a resposta da @ Aragon. Eu não testei, mas é principalmente o código da placa da caldeira que funcionou para mim no passado. Ele se baseia nas ligações Numpy e GDAL, mas é isso.
fonte
mapToPixel()
epixelToMap()
são pouco importante, contanto que você pode criar uma matriz numpy (ou um Python regular de um, mas eles geralmente não são tão eficientes para este tipo de coisa), e obter caixa delimitadora geográfica da matriz.gt
no exemplo) esteja errada. Uma matriz afim conforme usada em CGAL (consulte: gdal.org/gdal_datamodel.html ) geralmente é invertível (caso contrário, você tem alguns valores de escala descolados). Então, onde temosg = p.A
, também podemos fazer op = g.A^-1
Numpy.linalg é um pouco pesado para nossos propósitos - podemos reduzir tudo para duas equações simples.Confira minha resposta aqui ... e leia aqui para obter mais informações. As seguintes informações foram obtidas das geotips:
Com gdallocationinfo , podemos consultar a elevação em um ponto:
A saída do comando acima tem a forma:
Isso significa que o valor da elevação na geolocalização fornecida é 1418.
fonte
Veja, por exemplo, este código baseado em GDAL (e Python, não é necessário numpy): https://github.com/geometalab/retrieve-height-service
fonte
O código python fornecido extrai os dados de valor de uma célula de varredura com base em determinadas cordas x, y. É uma versão ligeiramente alterada de um exemplo desta excelente fonte . Ele é baseado
GDAL
enumpy
não faz parte da distribuição python padrão. Agradecemos ao @ Mike Toews por apontar os binários não oficiais do Windows para pacotes de extensão Python para tornar a instalação e o uso rápidos e fáceis.fonte