Reprojection d'un jeu de données d'altitude pour la «Terre inclinée»

8

Je voudrais créer des cartes d'une "Terre inclinée", comme l'exemple suivant où l'Australie est au pôle Nord:

entrez la description de l'image ici http://i1048.photobucket.com/albums/s379/laskaris_mods/tilted_earth.jpg

Je peux reprojeter des cartes dans des formats d'image comme .jpeg comme celui-ci avec le logiciel que j'utilise, Geocart 3. Cependant, ce que je dois faire est de reprojeter des jeux de données d'altitude au format netcdf (les données ETOPO .grd) de cette manière, de sorte que J'ai des données d'altitude exactes pour ma "Terre inclinée".

Existe-t-il un logiciel SIG qui peut le faire?

Laskaris
la source
Également demandé sur Cartotalk: cartotalk.com/index.php?showtopic=9050 où daan strebe a signalé que Geocart 3 prend en charge les TIFF (vous devez identifier les CRS TIFF dans le logiciel).
mkennedy
1
Mais je dois reprojeter les données d'élévation réelles du TIFF, et je ne pense pas que Geocart le fasse. Je préférerais également pouvoir le faire avec le format netcdf.
Laskaris
Étant donné que les tailles / emplacements des cellules ont changé, les valeurs des cellules doivent être rééchantillonnées / recalculées, mais cela devrait se produire. Pourquoi pensez-vous que ce n'est pas le cas? La reprojection d'un point n'affecte pas sa valeur d'élévation / z / H.
mkennedy
Vous avez raison, cela fonctionne pour TIFF avec Geocart. Je me suis trompé là-bas. Merci beaucoup! Maintenant, si je pouvais faire la même chose avec netcdf, ce serait encore mieux.
Laskaris

Réponses:

1

Cela peut être fait en utilisant python netCDF4, la bibliothèque Projection4 pyproj et numpy. À condition de connaître le fichier netcdf CRS et la terre inclinée CRS, si les codes EPSG sont disponibles, c'est super facile. Les étapes sont

  1. Importez d'abord le fichier netcdf en python à l'aide de la bibliothèque netCDF4.
  2. Recherchez le lat, long du fichier netcdf et stockez-le en tant que tableau.
  3. Définissez le fichier netcdf CRS actuel et le CRS de terre incliné requis, si aucun CRS, la projection peut être définie, par exemple pour convertir entre une projection personnalisée lcc en EPSG: 4326, ci-dessous le code fonctionne. 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. Les tableaux lat2 et lon2 contiennent des valeurs longues lat reprojetées, utilisez ces valeurs pour recréer le fichier Netcdf ou tiff à l'aide de la bibliothèque ogr python.

Cette réponse peut donner un début pour les étapes 1 à 2. Ou consultez cette introduction étendue pour la conversion de projection à l'aide de la bibliothèque python pyproj.

nish
la source