Die Berechnung der Fläche, die umschlossen von beliebigen polygon auf der Erdoberfläche
Sagen, ich habe eine beliebige Gruppe von breiten-und Längengrad-Paare repräsentieren Punkte auf einige einfache, geschlossene Kurve. Im kartesischen Raum, konnte ich leicht berechnen Sie die Fläche, die umschlossen von so einer Kurve mit Hilfe von Green ' s Theorem. Was ist der analoge Ansatz für die Berechnung der Fläche auf der Oberfläche einer Kugel? Ich denke, was ich am nach ist (sogar einige approximation) der Algorithmus hinter Matlab ist areaint
- Funktion.
InformationsquelleAutor Paul A. Hoadley | 2009-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Möglichkeiten, dies zu tun.
1) Integration der Beiträge aus breiten Streifen. Hier wird die Fläche eines jeden Streifens werden (Rcos(A)(B1-B0))(RdA), wobei A die Breite, B1 und B0 sind die Start-und End-Längen -, und alle Winkel sind im Bogenmaß angegeben werden.
2) Brechen Sie die Oberfläche in sphärische Dreiecke, und berechnen Sie die Fläche mithilfe Girard ' s Theorem, und fügen Sie diese.
3), Wie hier vorgeschlagen von James Schek, die in GIS-Arbeit, die Sie verwenden, ein Gebiet, Erhaltung der Projektion auf einem flachen Raum und die Fläche berechnet.
Aus der Beschreibung Ihrer Daten, klingt wie die erste Methode ist vielleicht die einfachste ist. (Natürlich kann es andere einfachere Methoden, die ich nicht kenne.)
Bearbeiten – Vergleich dieser zwei Methoden:
Auf den ersten Inspektion, kann es scheinen, dass der sphärische Dreieck Ansatz ist die einfachste, aber im Allgemeinen ist dies nicht der Fall ist. Das problem ist, dass man nicht nur braucht, um zu brechen, die die region bis in die Dreiecke, aber in sphärischen Dreiecke,,, Dreiecke, dessen Seiten große Kreisbögen. Zum Beispiel breiter Grenzen nicht qualifizieren, so sind diese Grenzen müssen aufgebrochen werden in Kanten, bessere Ungefähre großen Kreisbogen. Und dies wird schwieriger zu tun, für beliebige Kanten, wo die großen Kreise erfordern bestimmte Kombinationen von sphärischen Winkel. Denken Sie zum Beispiel, wie würde man brechen, eine mittlere band um eine Kugel, sagen alle das Gebiet zwischen lat 0 und 45deg in sphärische Dreiecke.
Am Ende, wenn man dies richtig tun mit ähnlichen Fehlern für jede Methode, Methode 2 gibt weniger Dreiecke, aber Sie werden schwieriger zu bestimmen. Methode 1 gibt mehr Streifen, aber Sie sind trivial, um zu bestimmen. Ich empfehle daher, die Methode 1 als der bessere Ansatz.
Ich denke, Ihr Kommentar ist falsch und ich habe bearbeitet meine Antwort an diese Adresse.
Dank Tom.
Paul... das macht Sinn, vor allem wenn Sie Punkte liegen nahe beieinander.
Ich es geschafft, die Spur auf Papier. Und ziemlich erstaunlich, da der FTP-server in dem Artikel erwähnt, ist verschwunden, den zugehörigen code. Also werde ich Bürste meine Fortran Fähigkeiten und check it out.
InformationsquelleAutor tom10
Ich schrieb die MATLAB "areaint" - Funktion in java, die hat genau das gleiche Ergebnis.
"areaint" berechnet "suface pro Einheit", so dass ich multipliziert die Antwort von der Erde ' s Oberfläche (5.10072e14 sq m).
InformationsquelleAutor user2548538
Die Sie erwähnen, "Geographie" in eines Ihrer tags, so kann ich nur annehmen, Sie sind nach der Fläche des Polygons auf die Fläche von einem geoid. Normalerweise geschieht dies mit einem projizierten Koordinatensystem, sondern als eine geografische Koordinatensystem (d.h. die lon/lat). Wenn Sie es tun, lon/lat, dann würde ich davon ausgehen, das unit-of-measure kehrte wäre Prozent der Kugeloberfläche.
Wenn Sie möchten, tun Sie dies mit einem "GIS" Geschmack", dann müssen Sie eine unit-of-measure für Ihre Region und finden Sie eine geeignete Projektion Konserven-Bereich (nicht alle tun). Seit Sie sprechen über die Berechnung eines beliebigen Polygons, würde ich so etwas wie ein Lambert Azimutale Gleicher Fläche Projektion. Legen Sie den Ursprung/Zentrum der Projektion, um das Zentrum Ihres polygon -, Projekt-polygon für das neue Koordinatensystem ein, dann berechnen Sie die Fläche mithilfe von standard-planare Techniken.
Wenn Sie benötigt zu viele Polygone in einem geographischen Gebiet, es gibt wahrscheinlich auch andere Projektionen, die arbeiten (oder nahe genug). UTM, zum Beispiel, ist eine ausgezeichnete Näherung, wenn alle Polygone gruppiert werden, um eine einzelne meridian.
Ich bin nicht sicher, wenn einer das hat nichts damit zu tun, wie Matlab die areaint Funktion arbeitet.
+1... rechts, im Gespräch mit einem Freund, der auch eine Menge von GIS-arbeiten, erzählte Sie mir, dies ist, wie Sie es tun. Gibt es einen Grund für diese Vorgehensweise?
vielleicht schon wissen, aber vorsichtig sein, die Projektion, die Sie wählen. Einige Projektionen bewahren Bereich, andere nicht. Die gängigen Web-Mercator-Projektion verwendet, die auf den meisten Karten erhält lediglich die Form.
Nicht sicher, warum... Meine Vermutung ist, dass es einfacher zu arbeiten mit kartesischen/planar systems. Wenn Sie mehr tun müssen, als die Berechnung der Fläche eines Polygons, dann mit einer planaren Darstellung macht das Leben leichter. Plus--USGS, unter anderem eine "Referenz" - Implementierungen der meisten großen Projektions-Techniken.
aus der rechnerischen Perspektive: die von der equal-area-Projektionen wäre die billigste zu verwenden für die Berechnung der Fläche? Ich meine, die Projektion ist die einfachste transformation Formel?
InformationsquelleAutor James Schek
Ich weiß nicht, etwas über Matlab-s-Funktion, aber hier wir gehen. Aufteilen Ihre sphärischen Polygons in die sphärischen Dreiecke, sagen wir, durch zeichnen einer diagonalen von einem Eckpunkt aus. Die Fläche eines sphärischen Dreiecks gegeben ist durch
wo
R
ist der radius der Kugel, undA
,B
, undC
sind die Innenwinkel des Dreiecks (im Bogenmaß). Die Menge in der Klammer ist bekannt als die "sphärische exzess".Ihre
n
-sided polygon geteilt werden solln-2
Dreiecke. Summieren über alle Dreiecke, die Extraktion der gemeinsame FaktorR^2
, und bringt alle\pi
zusammen, der Bereich der polygonwo
S
ist der Winkel, den Betrag von Ihrer polygon. Die Menge in Klammern ist wieder der sphärische exzess des Polygons.[Bearbeiten] Dies gilt unabhängig davon, ob das polygon konvex. Alles was zählt ist, dass es kann seziert werden in Dreiecke.
Bestimmen Sie den Winkel aus einem bit-Vektor-Mathematik. Angenommen, Sie haben drei Eckpunkte
A
,B
,C
sind und Interesse haben, in den Winkel, beiB
. Wir müssen deshalb zwei tangentialen Vektoren (Ihre Größen irrelevant sind) auf den Bereich von PunktB
entlang der großen Kreissegmente (die polygon-Kanten). Let ' s work it out fürBA
. Der große Kreis liegt in der Ebene, definiert durchOA
undOB
, woO
ist das Zentrum der Sphäre, so sollte es sein, die senkrecht zum normalen VektorOA x OB
. Es sollte auch senkrecht zuOB
da es die Tangente gibt. Ein solcher Vektor ist also gegeben durchOB x (OA x OB)
. Sie kann mit Hilfe der rechten-hand-Regel zu überprüfen, dass diese in die entsprechende Richtung. Beachten Sie auch, dass dies vereinfacht, umOA * (OB.OB) - OB * (OB.OA) = OA * |OB| - OB * (OB.OA)
.Können Sie dann mit dem guten alten dot-Produkt zu finden, die Winkel zwischen den Seiten:
BA'.BC' = |BA'|*|BC'|*cos(B)
, woBA'
undBC'
sind die tangential Vektoren ausB
entlang der SeitenA
undC
.[editiert, um klar sein, dass diese Tangente Vektoren, nicht wörtliche zwischen den Punkte]
Bedeutet die zweite Gleichung (die mit S) erfordern, dass das polygon konvex?
Dank Jefromi. Ein nicht-konvexes polygon würde auch erschweren die anfängliche Aufteilung in sphärische Dreiecke. Gibt es einen bekannten Algorithmus, um zu erreichen, dass?
Warten Sie, warum sind wir versucht zu zerlegen? Der Bereich Formel ist immer noch gültig! Der Nachweis hat nicht davon abhängen, Konvexität. Die Fläche des Polygons ist immer noch die Summe der Fläche der Dreiecke, egal wie Sie schneiden Sie es.
Sorry, ich war nicht die Befragung der Beweis, aber die schneiden sich selbst. Irgendwann möchte ich in der Lage sein, dies zu tun programmgesteuert und offensichtlich Zeichnung diagonalen von einem Eckpunkt funktioniert nur für ein konvexes polygon. Was ich mich Frage ist, ob es einen anderen Algorithmus für die Spaltung, die nicht ratlos durch eine nicht-konvexe Form.
InformationsquelleAutor Cascabel
Könnten Sie auch einen Blick auf diesen code, der
spherical_geometry
Paket: Hier und hier. Es bietet zwei verschiedene Methoden für die Berechnung der Fläche eines sphärischen Vielecks.InformationsquelleAutor Felix D.