Ich versuche, Polygone für Satellitenorbitalschwaden zu erzeugen. Bisher habe ich eine Methode, um zwei Linien zu erzeugen, die die Kante jedes Schwads in [lat, long] darstellen. Einige der Schwaden überqueren die internationale Datenlinie und wickeln sich so um:
Ich konnte dies lösen mit ogr2ogr
-wrapdateline
:
ogr2ogr -wrapdateline -f "ESRI Shapefile" test.shp orbits.shp
Was die Linien wahrscheinlich teilt
Ich möchte jetzt in der Lage sein, Polygone im Inneren beider Linien zu erzeugen. In dem Fall, in dem eine Kante des Schwads die Datenlinie kreuzt, wird beispielsweise ein Polygon ausgefüllt, wenn es auf der anderen Seite auftritt, z.
Ich brauche eine Methode, die automatisiert ist, da ich die Aufgabe oft wiederholen muss. Am liebsten in Python, da ich so die Zeilen generiert habe. Hier sind die beiden Shapefiles, die die Linien enthalten: Wraparound ; datelinefixed
Antworten:
Sie können eine benutzerdefinierte Mercator-Projektion erstellen, die ungefähr in der Mitte des Schwads zentriert ist. Verwenden Sie zum Beispiel für Schwad 25:
In dieser Projektion wird der Schwad nicht durch die Datenlinie unterbrochen. Sie können das Polygon aus der Linie erstellen.
Erstellen Sie dann ein geschnittenes Polygon zwischen -179,95 ° O und 179,95 ° E in EPSG: 4326:
Projizieren Sie es auch in Ihr benutzerdefiniertes CRS und subtrahieren Sie es vom Schwadpolygon.
Nach der erneuten Projektion auf EPSG: 4326 wird der Schwad korrekt durch die Datenlinie geteilt:
Fahren Sie mit allen Schwaden fort, die die Datenlinie überschreiten.
quelle
Ich würde den Prozess der Erzeugung der Swathe-Linie so umschreiben, dass er im selben kontinuierlichen Longintudinalraum beginnt und endet. dh wenn eine Linie bei 170 ° begann und bei -170 ° endete, würde ich den Prozess so umschreiben, dass er bei 190 ° endet, ohne bei -180.180 zu wickeln
Dann können Sie ununterbrochene Polygone zwischen Ihren Linien erstellen.
Verwenden Sie dann einen Clip-Prozess, um die Polygone an der Linie 180, -180 zu teilen und alle Teile, die außerhalb des Bereichs -180.180 liegen, zu verschieben, indem Sie 360 ° entsprechend addieren oder subtrahieren.
Erledigen Sie einfach alles, bevor Sie es mit einer bestimmten Projektion / einem bestimmten Datum speichern
quelle