Neuprojektion des Höhendatensatzes für "gekippte Erde"

8

Ich möchte Karten einer "geneigten Erde" erstellen, wie zum Beispiel das folgende Beispiel, in dem Australien am Nordpol liegt:

Geben Sie hier die Bildbeschreibung ein http://i1048.photobucket.com/albums/s379/laskaris_mods/tilted_earth.jpg

Mit der von mir verwendeten Software Geocart 3 kann ich Karten in Bildformaten wie .jpeg wie diesen neu projizieren. Ich muss jedoch die Höhendatensätze im netcdf-Format (die ETOPO .grd-Daten) auf diese Weise neu projizieren Ich habe genaue Höhendaten für meine "geneigte Erde".

Gibt es eine GIS-Software, die dies kann?

Laskaris
quelle
Auch auf Cartotalk gefragt: cartotalk.com/index.php?showtopic=9050, wo daan strebe berichtete, dass Geocart 3 TIFFs unterstützt (Sie müssen die TIFFs CRS in der Software identifizieren).
Mkennedy
1
Aber ich muss die tatsächlichen Höhendaten des TIFF neu projizieren, und ich glaube nicht, dass Geocart das tut. Ich würde es auch vorziehen, wenn ich es mit dem netcdf-Format machen könnte.
Laskaris
Da sich die Zellengrößen / -positionen geändert haben, müssen die Zellenwerte neu abgetastet / neu berechnet werden, aber das sollte passieren. Warum denkst du, ist es nicht? Das Neuprojektieren eines Punkts hat keinen Einfluss auf seinen Elevation / z / H-Wert.
Mkennedy
Sie haben Recht, es funktioniert für TIFF mit Geocart. Ich habe mich dort geirrt. Vielen Dank! Wenn ich das gleiche mit netcdf machen könnte, wäre es sogar noch besser.
Laskaris

Antworten:

1

Dies kann mit Python NetCDF4, Projection4 Library Pyproj und Numpy erfolgen. Vorausgesetzt, Sie kennen die netcdf-Datei CRS und die gekippte Erde CRS, wenn EPSG-Codes verfügbar sind, ist es super einfach. Die Schritte sind

  1. Importieren Sie zuerst die netcdf-Datei mithilfe der netCDF4-Bibliothek in Python.
  2. Fragen Sie die lat, long der netcdf-Datei ab und speichern Sie sie als Array.
  3. Definieren Sie die aktuelle CRS der Netcdf-Datei und die erforderliche CRS für gekippte Erde. Wenn keine CRS vorhanden ist, kann die Projektion definiert werden. Ein Beispiel für die Konvertierung zwischen einer benutzerdefinierten lcc-Projektion in EPSG: 4326 (siehe unten). 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. Die Arrays lat2 und lon2 enthalten neu projizierte lat long-Werte. Verwenden Sie diese Werte, um eine Netcdf-Datei oder ein tiff mithilfe der Python-Ogr-Bibliothek neu zu erstellen.

Diese Antwort kann einen Starter für die Schritte 1 bis 2 geben. Oder lesen Sie diese erweiterte Einführung für die Projektionskonvertierung mit der Python-Bibliothek pyproj.

nish
quelle