Esistono molti modi per ponderare le distanze per costruire poligoni di Thiessen. L'idea di base nel costruirli si basa sul confronto della distanza tra un punto arbitrario xe due punti fissi p e q ; devi decidere se x è "più vicino" a p che a q oppure no. A tal fine - almeno concettualmente - consideriamo le distanze dp = d ( x , p ) e dq = d ( x , q ). La ponderazione di solito avviene in due modi: ai punti possono essere dati pesi numerici positivi wp e wq e le distanze stesse possono essere trasformate.
Per senso, la trasformazione (che scriverò come f ) dovrebbe aumentare all'aumentare delle distanze; cioè, f (d ')> f (d) ogni volta che d'> d> = 0. Esempi di tali trasformazioni sono f (d) = d + 1, f (d) = d ^ 2 (Reilly's Law of Retail Gravitation ), f (d) = 1 - 1 / d (supponendo che tutte le distanze siano inferiori a 1), f (d) = log (d), f (d) = exp (d) -1.
Vorremmo quindi dire che x è "più vicino" a p che a q esattamente quando
f (d ( x , p )) / wp <f (d ( x , q )) / wq.
Notare la divisione per i pesi, piuttosto che la moltiplicazione: questo significa che pesi di grandi dimensioni tenderanno a "tirare" punti a distanze maggiori. Lo vedrai nell'esempio seguente.
Ecco la cosa bella, e il punto centrale di questa esposizione in qualche modo astratta: sebbene le regioni di Thiessen risultanti possano avere confini complessi, estremamente difficili da calcolare, sono relativamente facili da calcolare usando una rappresentazione basata su griglia. Ecco la ricetta:
Per ogni punto di input p , calcola la sua griglia della distanza euclidea [d (p)].
Utilizzare Map Algebra per applicare f e i pesi, ri-esprimendo così ciascuna griglia della distanza come
[fp] = f ([d (p)]) / wp.
Ecco un esempio usando f (d) = 100 + d ^ (3/2); la scala è 400 per 600.
Man mano che f (d) aumenta, il valore diventa più scuro. Evidentemente la distanza in questo esempio è rispetto al punto rosso centrale; gli altri quattro punti ottengono i loro calcoli di distanza separati (non mostrati). Le aree dei punti sono proporzionali ai loro pesi, che sono 2, 10, 3, 4 e 5.
Calcola il minimo locale di tutte queste griglie [fp]. Chiama questo [f]. Ecco un esempio
Confrontando [f] con ciascun [fp], a ciascuna cella della griglia assegnare l'identificatore della prima p per cui [f]> = [fp]. (Questo può essere fatto in un solo passaggio con un'operazione nella posizione più bassa , per esempio.)
(Dubito che esista un algoritmo ovunque che calcolerà una soluzione in formato vettoriale per questa funzione di ponderazione f.)
Ovviamente se hai più di una manciata di punti p , lo scriverai e se il loro numero si esaurisce in migliaia probabilmente abbandonerai il tentativo come non fattibile dal punto di vista computazionale (anche se ci sono modi per accelerare il calcolo affiancandolo).
Un altro esempio, che mostra poligoni di Thiessen su un ellissoide, appare su /gis//a/17377/ .