Ich habe eine Reihe von Punkten als Shapefile und ich möchte (die Koordinaten) eines neuen Punktes finden, der den größtmöglichen Abstand von jedem der vorhandenen Punkte hat. Ist das möglich? Wenn ja, gibt es ein Beispiel für einen VB-Code? Danke Demetris
arcgis-10.0
arcobjects
vba
vb.net
Demetris
quelle
quelle
Antworten:
Kirk Kuykendalls Empfehlung, ein kugelförmiges Voronoi-Diagramm (Thiessen-Polygone) zu konstruieren, ist gut, könnte aber technische Probleme bereiten. In der Zwischenzeit kann alternativ die in einem anderen Thread beschriebene Standard-Raster-Lösung angewendet werden . Verwenden Sie sphärische Abstände anstelle von euklidischen Abständen.
Hier ist ein Beispiel mit fünf Punkten, hier angegeben als (lat, lon):
Diese sphärische Entfernungskarte umspannt den Globus horizontal von -180 bis 180 Grad und vertikal von -90 bis 90 Grad. Die Punkte werden mit großen roten Punkten angezeigt. Die Abstände nehmen mit der Helligkeit zu. Die sichtbaren Grate müssen Teile großer Kreise sein. Der kleine schwarze Punkt bei (-15.3268, -2.04352) markiert den Punkt der maximalen Entfernung von 11.227 km. (Die Entfernungen wurden im ITRF00-Ellipsoid-Datum berechnet.)
Die Auflösung dieses Gitters beträgt ein Grad. Um eine genauere Lösung zu erhalten, können Sie in einen solchen Punkt zoomen (und in ein beliebiges anderes lokales Maximum mit einem Wert, der dem globalen Maximum ausreichend nahe kommt) und die Berechnung in einem kleineren, aber höher auflösenden Raster wiederholen.
quelle
Ich habe das noch nie ausprobiert, aber es scheint, als würde das funktionieren:
Erstellen Sie ein 3D-Voronoi-Diagramm der Kugel. Diese resultierenden Polygone werden grob auf den ursprünglich vorhandenen (Startpunkt-) Punkten zentriert.
Durchlaufen Sie jeden resultierenden Scheitelpunkt, um denjenigen zu finden, der am weitesten von seinem nächsten existierenden Punkt entfernt ist. Dieser Punkt sollte der am weitesten entfernte Punkt der Welt sein.
quelle
Mithilfe einer kostengewichteten Distanzfunktion können Sie ermitteln, wie weit jede Zelle in Ihrem Raster von allen anderen Punkten entfernt ist.
quelle
Soweit ich weiß, muss diese " Pole of Inaccessability " -Analyse iterativ durchgeführt werden.
Ein iterativer Rasteransatz wäre angemessen, solange Sie einen kleinen Bereich mit minimaler Verzerrung durch die Projektion betrachten. Berechnen Sie für jede Zelle den Abstand zu allen Punkten und nehmen Sie dann den Mindestabstand. Die Zelle mit dem höchsten Wert ist der Pol. Sie können dazu auch Euklidische Entfernung in Spatial Analyst verwenden.
Ein iterativer Vektoransatz ist komplizierter. Garcia-Castellanos et al. 2007 beschreiben eine iterative Methode basierend auf einer kugelförmigen Erde. Es scheint, dass sie ihren C-Code online verfügbar gemacht haben . Ich kann mir vorstellen, wie dies in Arc mit Puffern gemacht werden kann, aber es würde immer noch iterativ und langsam sein.
quelle
Sie können Punktabstand (Analyse) verwenden. Das Werkzeug erstellt eine Tabelle mit Abständen zwischen zwei Punktsätzen. Wenn der Standardsuchradius verwendet wird, werden Entfernungen von allen Eingabepunkten zu allen Nahpunkten berechnet. Die Ausgabetabelle kann sehr groß sein. Wenn beispielsweise sowohl Eingabe- als auch Near-Features jeweils 1.000 Punkte aufweisen, kann die Ausgabetabelle eine Million Datensätze enthalten.
quelle
Der am weitesten von Ihrer Punktmenge entfernte Punkt ist der Kehrwert des innersten Punkts in Ihrer Menge. Wenn zum Beispiel Ihr innerster Punkt in Ihrem Satz Koordinaten von 49 Grad Nord und -144 Grad Ost hätte, dann hätten der reziproke und der am weitesten entfernte Punkt Koordinaten von 49 Grad Süd und 36 Grad West. Dies ist nicht ganz richtig, da die Erde nicht perfekt kugelförmig, sondern geoidal ist. Daher hängt die Korrektheit Ihres Ergebnispunkts stark davon ab, welche Projektions- und geografischen Systeme (orthografisch, orthorektifiziert ...) Sie verwenden. Es kann hilfreich sein, einen Kehrwert für den gesamten Satz zu finden (einen Antipode für einen Satz zu übertragen) und dann eine Oberflächenanalyse innerhalb des vom Antipode-Satz von Punkten abgedeckten Geländes durchzuführen, da das Gelände sehr unterschiedlich sein kann. Ich gehe davon aus, dass es bei Ihrer Frage nicht um Punkte auf außerirdischen Körpern wie anderen Planeten oder Monden geht. Es tut uns leid, Ich habe keinen VB-Code für dich. 🙄
quelle