Reprojetando o conjunto de dados de elevação para "Terra inclinada"

8

Eu gostaria de criar mapas de uma "Terra inclinada", como o exemplo a seguir, onde a Austrália está no Polo Norte:

insira a descrição da imagem aqui http://i1048.photobucket.com/albums/s379/laskaris_mods/tilted_earth.jpg

Posso reprojetar mapas em formatos de imagem como .jpeg como este com o software que estou usando, Geocart 3. No entanto, o que preciso fazer é reprojetar conjuntos de dados de elevação em formato netcdf (dados ETOPO .grd) dessa maneira, para que Eu tenho dados de elevação exatos para minha "Terra inclinada".

Existe um software GIS que possa fazer isso?

Laskaris
fonte
Também perguntado em Cartotalk: cartotalk.com/index.php?showtopic=9050, em que daan strebe relatou que o Geocart 3 suporta TIFFs (você precisa identificar o TIFFs CRS no software).
mkennedy
1
Mas preciso reprojetar os dados reais de elevação do TIFF e não acho que o Geocart faça isso. Eu também preferiria poder fazê-lo com o formato netcdf.
Laskaris 9/08/2013
Como os tamanhos / locais das células foram alterados, os valores das células precisam ser reamostrados / recalculados, mas isso deve estar acontecendo. Por que você acha que não é? Reprojetar um ponto não afeta seu valor de elevação / z / H.
mkennedy
Você está certo, ele funciona para TIFF com Geocart. Eu estava enganado lá. Muito obrigado! Agora, se eu pudesse fazer o mesmo com o netcdf, seria ainda melhor.
Laskaris 9/08/13

Respostas:

1

Isso pode ser feito usando python netCDF4, biblioteca Projection4 pyproj e numpy. Desde que seja conhecido o CRS do arquivo netcdf e o CRS de terra inclinada, se os códigos EPSG estiverem disponíveis, é super fácil. Os passos são

  1. Primeiro importe o arquivo netcdf para o python usando a biblioteca netCDF4.
  2. Consulte o arquivo netcdf longo e lat e armazene-o como matriz.
  3. Defina o CRS atual do arquivo netcdf e o CRS de terra inclinado necessário, se não houver CRS, a projeção pode ser definida, por exemplo, para converter entre a projeção personalizada lcc em EPSG: 4326, abaixo do código funciona. import pyproj
    tc={'proj':'lcc','width':'width_meters','height':'height_meters','lat_0':cen_lat,'lon_0':cen_lon,'lat_1':truelat1,'lat_2':truelat2} proj1=pyproj.Proj(tc) proj2_out='+init=EPSG:4326' proj2=pyproj.Proj(proj2_out) lat2,lon2=[],[] for k, l in zip(lon,lat): lat1,lon1=pyproj.transform(proj1,proj2,k,l) lat2.append(lon1) lon2.append(lat1)
  4. As matrizes lat2 e lon2 contêm valores lat lat reprojetados, use esses valores para recriar o arquivo Netcdf ou tiff usando a biblioteca python ogr.

Esta resposta pode fornecer uma iniciação para as etapas 1 a 2. Ou consulte esta introdução estendida para conversão de projeção usando a biblioteca python pyproj.

nish
fonte