Es gibt viele Möglichkeiten, Entfernungen für die Konstruktion von Thiessen-Polygonen zu gewichten. Die Grundidee bei ihrer Konstruktion basiert auf dem Vergleich des Abstands zwischen einem beliebigen Punkt x und zwei festen Punkten p und q ; Sie müssen entscheiden, ob x "näher" an p als an q ist oder nicht. Zu diesem Zweck betrachten wir - zumindest konzeptionell - die Abstände dp = d ( x , p ) und dq = d ( x , q ). Die Gewichtung erfolgt normalerweise auf zwei Arten: Den Punkten können positive numerische Gewichte wp und wq gegeben und die Abstände selbst transformiert werden.
Sinnvollerweise sollte die Transformation (die ich als f schreiben werde ) mit zunehmenden Entfernungen zunehmen. das heißt, f (d ')> f (d), wann immer d'> d> = 0. Beispiele für solche Transformationen sind f (d) = d + 1, f (d) = d ^ 2 (Reillys Gesetz der Gravitation im Einzelhandel) ), f (d) = 1 - 1 / d (unter der Annahme, dass alle Abstände kleiner als 1 sind), f (d) = log (d), f (d) = exp (d) -1.
Wir würden dann sagen, x ist "näher" an p als an q genau wann
f (d ( x , p )) / wp <f (d ( x , q )) / wq.
Beachten Sie die Division durch die Gewichte und nicht die Multiplikation: Dies bedeutet, dass große Gewichte dazu neigen, Punkte bei größeren Entfernungen "einzuziehen". Sie werden dies im folgenden Beispiel sehen.
Hier ist das Schöne und der springende Punkt dieser etwas abstrakten Darstellung: Obwohl die resultierenden Thiessen-Regionen komplexe, äußerst schwierig zu berechnende Grenzen haben können, sind sie mit einer gitterbasierten Darstellung relativ einfach zu berechnen. Hier ist das Rezept:
Berechnen Sie für jeden Eingabepunkt p sein euklidisches Abstandsgitter [d (p)].
Verwenden Sie die Kartenalgebra, um f und die Gewichte anzuwenden und dabei jedes Abstandsgitter als auszudrücken
[fp] = f ([d (p)]) / wp.
Hier ist ein Beispiel mit f (d) = 100 + d ^ (3/2); Der Maßstab ist 400 mal 600.
Mit zunehmendem Wert von f (d) wird der Wert dunkler. Offensichtlich bezieht sich der Abstand in diesem Beispiel auf den zentralen roten Punkt; Die anderen vier Punkte erhalten ihre separaten Entfernungsberechnungen (nicht gezeigt). Die Flächen der Punkte sind proportional zu ihren Gewichten, dh 2, 10, 3, 4 und 5.
Berechnen Sie das lokale Minimum all dieser Gitter [fp]. Nenne dies [f]. Hier ist ein Beispiel.
Durch Vergleichen von [f] mit jedem [fp] ordnen Sie jeder Gitterzelle die Kennung des ersten p zu, für das [f]> = [fp] gilt. (Dies kann zum Beispiel in einem Schritt mit einer Operation in der niedrigsten Position erfolgen .)
(Ich bezweifle, dass es irgendwo einen Algorithmus gibt, der eine Vektorformatlösung für diese Gewichtungsfunktion f berechnet.)
Wenn Sie mehr als eine Handvoll Punkte p haben, erstellen Sie ein Skript, und wenn die Anzahl der Punkte Tausende beträgt, werden Sie den Versuch wahrscheinlich als rechenunpraktikabel abbrechen (obwohl es Möglichkeiten gibt, die Berechnung durch Kacheln zu beschleunigen).
Ein weiteres Beispiel, das Thiessen-Polygone auf einem Ellipsoid zeigt, finden Sie unter /gis//a/17377/ .
Was Sie wollen, ist ein gewichtetes Voronoi-Diagramm: http://en.wikipedia.org/wiki/Weighted_Voronoi_diagram Auch bekannt als kreisförmige Dirichlet-Tessellation, wenn multiplikative Gewichte in einer 2D-Ebene verwendet werden. Jemand scheint eine arcgis 9-Erweiterung erstellt zu haben, um diese zu erstellen: http://arcscripts.esri.com/details.asp?dbid=15481 Hier finden Sie ein Benutzerhandbuch http://geography.unt.edu/~pdong/software .htm und eine Veröffentlichung von Dong, P., 2008. Generieren und Aktualisieren von multiplikativ gewichteten Voronoi-Diagrammen für Punkt-, Linien- und Polygon-Features in GIS. Computers & Geosciences, Band 34, Ausgabe 4, Seiten 411-421.
Hierfür gibt es einen kürzlich erschienenen Artikel über einen vektorbasierten Algorithmus (ich nehme an, der Algorithmus von P Dong basiert auf Rastern). http://www.sciencedirect.com/science/article/pii/S0098300411003037 Zusammenfassung besagt, dass C # -Code enthalten ist.
quelle