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?


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.