Wie berechnet man die Verzerrung bei der gleichwinkligen Projektion?


28

Ich versuche, die Verzerrung zu berechnen, damit ich überlagerten Text und Formen so verzerren kann, dass sie genau mit dem Bild einer gleichwinkligen Projektion übereinstimmen.

Wie berechnet man also die Verzerrung bei einem gegebenen Breitengrad auf einer gleichwinkligen Projektion von 1: 45.000.000 (z. B. 2000 Pixel breit x 1000 Pixel hoch)?

Ich habe versucht, diesen Beitrag und seine Links ohne Erfolg herauszufinden: Wie erstelle ich eine genaue Tissot-Indikatrix?

Ich bin kein Profi, sondern nur ein sehr interessierter Amateur.

Danke vielmals!


Danke für die prompten Antworten! Hier ist die lange Geschichte; Ich hoffe es ist klarer.

Ich visualisiere Daten mit der Programmiersprache Processing und möchte, dass die 2D-Kartendaten (Schriftarten und Kreise unterschiedlicher Größe) beim Umschließen auf einen 3D-Globus unverzerrt angezeigt werden. Die Daten werden mit äquirektangularen x, ys abgebildet, und die Karten, die ich als Hintergrund verwenden möchte, sind alle diese Projektionen. Daher gehe ich davon aus, dass ich diese Verzerrung "angleichen" möchte (z. B. durch Berechnen der Verzerrung über den Breitengrad mit Tissot-Gleichungen?). Mit der Programmiersprache kann ich sowohl den Text als auch die Kreise präzise verzerren. Ich denke, alles was ich brauche, sind die Gleichungen, um es richtig zu machen.

Hier ist die ursprüngliche 2D-Datenkarte:

Bildbeschreibung hier eingeben

In der Verpackung sieht es verzerrt aus:

Bildbeschreibung hier eingeben

Die 10.000-Dollar-Frage: Wie kann ich mein 2D-Bild unverzerrt aussehen lassen, wenn es in die 3D-Kugel gewickelt wird?

Als Referenz wird hier dieselbe Frage im Processing-Forum unterschiedlich gestellt.

Danke noch einmal!


Wenn ich Sie richtig verstehe, bin ich mir nicht sicher, ob ich in eine orthografische Projektion umprojizieren möchte. Ich möchte, dass meine 2D-Datenkarte in ein 3D-Kugelmodell übergeht, mit dem interagiert werden kann (dh das gedreht werden kann).

Ich verwende ein 3D-Modellierungsprogramm (Cinema 4D), um eine Kugel mit einem 2 MB großen "Blue Marble" -Bild (gleichwinklige Projektion) der NASA zu umhüllen .

Eingehüllt erscheint es unverzerrt von allen Hemisphären (nicht nur eine Hemisphäre, wie eine orthografische Projektion wäre?), Siehe: noch vom 3D-Modell oben. (Das Modellierungsprogramm führt die orthografische Projektion für mich durch, während ich das Objekt drehe, nehme ich an.) Wenn ich meine 2D-Datenkarte auf ähnliche Weise verzerre, wird sie auch auf der 3D-Kugel unverzerrt angezeigt. Hier ist eine Aufnahme, die ich mit einer Gleichung gemacht habe, die sich einer gleichwinkligen Verzerrung annähert. Sie werden feststellen, dass die eiförmigen Ellipsen im 2D-Bild wie ein Kreis aussehen, wenn sie in die 3D-Kugel gewickelt werden. In ähnlicher Weise erscheinen die Tissot-Ellipsen auch als Kreise auf der 3D-Kugel.

Tissotsche Indikatrix mit verzerrten Kreisen Verzerrte Kreise, die in eine 3D-Kugel eingeschlossen sind

Aus diesem Grund habe ich mir die Tissot-Gleichungen angesehen, um die Verzerrung der gleichwinkligen Projektion in verschiedenen Breitengraden genauer zu bestimmen, damit ich meine Überlagerung entsprechend verzerren kann.

Hoffe das alles macht Sinn.

Vielleicht hast du recht, dass ich ein GIS-Programm verwenden sollte. Ich habe gerade Cartographica heruntergeladen und werde sehen, ob ich es herausfinden kann. Irgendwelche Mac-Software-Vorschläge für einen Neuling, der diese Aufgabe übernimmt?

Danke noch einmal.


1
Meinen Sie wirklich, die Verzerrung zu berechnen, oder möchten Sie wirklich wissen, wie die Projektion selbst berechnet wird? Vielleicht können Sie ein Bild im Web zur Verfügung stellen, um zu veranschaulichen, was Sie erreichen möchten. Wenn Sie "Übereinstimmung" verwenden, möchten Sie festlegen, wie ein Bild in ein anderes umgewandelt werden soll. Dies bedeutet, dass Sie angeben müssen, womit Sie beginnen und womit Sie enden möchten.
Whuber

1
Wir verstehen, dass es schwierig ist zu beschreiben, was Sie tun möchten, ohne den Jargon zu kennen, aber es hört sich so an, als würden Sie versuchen, den Prozess und nicht das Ergebnis zu beschreiben. Beginnen Sie mit einem Problem, das Sie lösen möchten, und geben Sie dann die gewünschten Ergebnisse ein. Wir werden versuchen, die Lücken zu schließen :)
MerseyViking,

Technisch ausgedrückt: Sie möchten von der gleichwinkligen Projektion zu einer orthografischen Projektion ("Welt aus dem Weltraum") umprojizieren . Welche Software können Sie verwenden? Wenn Sie über GIS-Software verfügen oder bereit sind, Code für eine Projektionsbibliothek zu erstellen, wird die Arbeit im Grunde für Sie erledigt. Andernfalls müssen Sie für die Gleichungen implementieren unprojecting den equirectangular Vorsprung (leicht) und Projizieren die Orthogonalprojektion (nicht zu hart, aber einige Fähigkeiten erfordern numerische Routinen in Codierung).
whuber

1
Ich habe diesen Beitrag gesehen und versuche im Grunde das Gleiche zu tun. Ich möchte 2D-Kreise zeichnen, die korrekt verzerrt sind, wenn sie auf eine 3D-Kugel projiziert werden. Ich habe mich gefragt, ob Sie bereit wären, den Algorithmus zu teilen, den Sie für die Verzerrung der 2D-Kreise verwendet haben. Eigentlich hätte ein Kommentar keine Antwort sein sollen, aber ich habe ihn an der falschen Stelle geschrieben. Es tut uns leid.
HankTurbo

Sie sollten Ihre Daten im 3D-Raum zeichnen und dann auf die Kugel projizieren.
AngelLeliel

Antworten:


5

Wie kann ich mein 2D-Bild unverzerrt aussehen lassen, wenn es in die 3D-Kugel gewickelt wird?

Die Bildkoordinaten sind Breitengrad und Längengrad, also auch Sie

(a) Nehmen Sie die Projektion zurück und projizieren Sie sie mit einer orthografischen oder vertikalen Nahprojektion ( dh Projektionen, die wie die Welt aus dem Weltraum aussehen) oder

(b) Ordnen Sie es mit einer Textur auf ein 3D-Modell einer Kugel zu, wobei Sie Lat-Lon als Texturkoordinaten verwenden, und zeigen Sie diese Kugel mit einem 3D-Grafik-Rendering-Gerät an.

Die meisten GIS machen (a) routinemäßig. Zur Veranschaulichung von (b) ist hier eine Reihe von Bildern, die von der "flachen" Karte in der Frage abgeleitet wurden, die von einem Standpunkt aus aufgenommen wurden, der die texturabgebildete Kugel umkreist:

Welt aus dem Weltraum

(Wenn Sie sich das Bild ganz rechts genau ansehen, sehen Sie einen markanten Meridian durch den Pazifik: Dies ist die "Naht", die durch Zusammenwickeln der linken und rechten Seite der Karte entsteht.)

Der grundlegende Mathematica- Befehl zum Erstellen eines dieser Befehle lautet

SphericalPlot3D[1, {a, 0, \[Pi]}, {b, 0, 2 \[Pi]}, Mesh -> None, 
 PlotStyle -> {Texture[i]}, TextureCoordinateFunction -> ({#5, -#4} &), 
 Lighting -> {{"Ambient", White}}, 
 Boxed -> False, Axes -> False, Background -> Black]

Dies reduziert das ursprüngliche Problem (das Zeichnen von "Datenkarten" auf einer Kugel), um eine Karte zu generieren, die Kreise korrekt anzeigt. Die beste Projektion hierfür ist die Stereografie, da alle Kreise auf der Kugel - unabhängig von ihrer Größe - auf Kreise auf der Karte projiziert werden. Ein Verfahren zum korrekten Zeichnen großer Kreise in einer gleichwinkligen Projektion, wie in der Frage gezeigt, besteht darin, sie in einer stereografischen Projektion zu erstellen und sie dann auf geografische Koordinaten (lat, lon) zu projizieren. Die Verwendung von (lon, lat) als (x, y) kartesische Koordinaten, um die Karte zu erstellen, entspricht der gleichgerichteten Projektion und ist daher für die Texturabbildung auf die Kugel oder für die Anwendung einer orthografischen Projektion geeignet.


Beachten Sie, dass Tissot-Indikatoren nicht als Lösung geeignet sind: Sie repräsentieren nur lokale Verzerrungen infinitesimaler Kreise. Kreise, die groß genug sind, um global gesehen zu werden, werden in den meisten Projektionen nicht einmal mehr kreisförmig angezeigt: Sehen Sie in der fraglichen Karte, wie blobhaft sie auftauchen. Aus diesem Grund ist es für eine gute Lösung unerlässlich, Spiele mit Projektionen zu spielen, wie hier gezeigt.


Danke für den sehr informativen Beitrag! Ich gehe von (b) aus und habe eine korrekt erzeugte Karte mit gleichem Rechteck zur Hand, bekomme aber hässliche Polverzerrungen, wenn ich die Karte auf eine 3D-Kugel übertrage. Würdest du mir bitte helfen? gis.stackexchange.com/questions/245315/…
Sibbs Gambling

2

Vorausgesetzt, die gezeichneten Formen bedecken einen kleinen Teil der Kugel, sollten Sie in der Lage sein, die Breite um 1 / cos (lat) zu skalieren und die Höhe in Ruhe zu lassen.

Je größer die Form und je näher Sie den Polen kommen, desto weniger funktioniert dies.


Könnten Sie bitte erklären, warum dies funktionieren würde? Es sieht so aus, als würde es selbst in kleinen Bereichen der Kugel nahe dem Rand des Renderings in den Beispielbildern dramatisch versagen.
whuber

Vielen Dank für die Bearbeitung; Ich habe die Ablehnung dementsprechend entfernt, weil Ihre Antwort für mich richtig aussieht und in Zukunft für jemanden von Nutzen sein könnte. Bei der Prüfung der Frage scheint es jedoch unwahrscheinlich, dass jemand so kleine Formen um die Kugel wickelt - und wenn sie dies tun, müssen sie sich mit den Polen auseinandersetzen, und ich stelle mir auch überall anders vor.
Whuber

0

Ich kann nicht herausfinden, wie ich einen Kommentar hinzufügen soll. Daher werde ich dies in die Lösung aufnehmen und die Moderatoren durcheinander bringen, um herauszufinden, warum ich keinen Kommentar abgeben kann.

Mein erster Eindruck beim Lesen Ihrer Frage war "Warum entwerfen Sie Ihre Kreise nicht in einer konformen Projektion wie Mercator?". Sie können diese Karte in eine Mercator-Projektion projizieren und Ihre Kreis- und Textverzerrung sehen, alles so korrigieren, dass es gut aussieht. Wenn Sie sie auf Ihren Globus projizieren, sollten die Formen korrekt bleiben (das ist die Definition einer konformen Projektion).


2
Das liest sich wie eine Antwort für mich, also lasse ich es. Aber es ist falsch, weil es auf einem Missverständnis beruht: Konforme Projektionen projizieren nicht alle Kreise auf Kreise. Sie tun dies nur unendlich. Der Unterschied ist riesig: Überlegen Sie, was der Mercator beispielsweise mit Kreisen tut, die um die Erdachse verlaufen. Es kann es unmöglich als Kreis abbilden - es muss es irgendwo aufbrechen. Für weitere Informationen durchsuchen Sie bitte unsere Website nach Tissot .
Whuber

1
"Sie machen das nur unendlich." -> "Das machen sie nur für unendlich kleine."
Martin F

0

In Ihrer ersten 2D-Karte sind keine geografischen Merkmale gezeichnet. Fügen Sie sie dieser Karte hinzu (sagen wir Afrika-Kontur) und wenden Sie die Verzerrung, an die Sie denken, auf alles gleichzeitig an. Die Geographie würde sich ebenfalls ändern, und wenn Sie sie auf die Kugel legen, wäre sie falsch. Daher glaube ich, dass diese Idee, eine gewisse Verzerrung anzuwenden, nicht funktionieren würde.

In 2D können Sie zurechtkommen, indem Sie Grafiken in kleinen 2D-Karten mit begrenztem Bereich und akzeptablen Verzerrungen zeichnen. Sie können Ihre 2D-Karte in Kacheln schneiden und für jede Kachel eine eigene "beste" Projektion verwenden.

Auf der anderen Seite ist es einfach, Punkte auf einem geodätischen Kreis mit einem bestimmten Radius auf der 2D-Karte zu erstellen. Dazu müssten Sie eine Funktion finden, die Lat / Long eines Punktes in einer bestimmten Entfernung und Azimut von einem anderen Punkt berechnet (suchen Sie nach "direct problem Vincenty"). Sobald Sie dies erhalten haben, können Sie eine Reihe von äquidistanten Punkten in einem bestimmten Abstand vom Punkt erzeugen, indem Sie den Azimut von 0 auf 360 ändern. Das Erstellen eines Polygons aus diesen Punkten in 2D erfordert mehr Arbeit, wenn der geodätische Kreis einen Pol enthält oder sich schneidet linker oder rechter Rand der Karte. Prüfen Sie , wie geodätischen Kreise wie auf einer flachen Karte sehen kann hier .

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.