Hay muchas maneras de calcular distancias para construir polígonos de Thiessen. La idea básica para construirlos se basa en comparar la distancia entre un punto arbitrario xy dos puntos fijos p y q ; debe decidir si x está "más cerca" de p que de q o no. Para este fin, al menos conceptualmente, consideramos las distancias dp = d ( x , p ) y dq = d ( x , q ). La ponderación generalmente ocurre de dos maneras: los puntos pueden recibir pesos numéricos positivos wp y wq y las distancias mismas pueden transformarse.
Para tener sentido, la transformación (que escribiré como f ) debería aumentar a medida que aumentan las distancias; es decir, f (d ')> f (d) cada vez que d'> d> = 0. Ejemplos de tales transformaciones son f (d) = d + 1, f (d) = d ^ 2 (Ley de Reilly de Gravitación Minorista ), f (d) = 1 - 1 / d (suponiendo que todas las distancias son menores que 1), f (d) = log (d), f (d) = exp (d) -1.
Entonces diríamos que x está "más cerca" de p que de q exactamente cuando
f (d ( x , p )) / wp <f (d ( x , q )) / wq.
Observe la división por los pesos, en lugar de la multiplicación: esto significa que los pesos grandes tenderán a "atraer" puntos a distancias más grandes. Verá esto en el siguiente ejemplo de ejecución.
Aquí está lo hermoso, y el punto central de esta exposición algo abstracta: aunque las regiones de Thiessen resultantes pueden tener límites complejos, extremadamente difíciles de calcular, son relativamente fáciles de calcular usando una representación basada en cuadrícula. Aquí está la receta:
Para cada punto de entrada p , calcule su cuadrícula de distancia euclidiana [d (p)].
Use el Álgebra de mapas para aplicar fy los pesos, volviendo a expresar cada cuadrícula de distancia como
[fp] = f ([d (p)]) / wp.
Aquí hay un ejemplo usando f (d) = 100 + d ^ (3/2); la escala es de 400 por 600.
A medida que f (d) aumenta, el valor se oscurece. Evidentemente, la distancia en este ejemplo es con respecto al punto rojo central; los otros cuatro puntos obtienen sus cálculos de distancia por separado (no se muestran). Las áreas de los puntos son proporcionales a sus pesos, que son 2, 10, 3, 4 y 5.
Calcule el mínimo local de todas estas cuadrículas [fp]. Llama a esto [f]. Aquí hay un ejemplo.
Al comparar [f] con cada [fp], a cada celda de la cuadrícula asigne el identificador de la primera p para la cual [f]> = [fp]. (Esto se puede hacer en un paso con una operación de posición más baja , por ejemplo).
(Dudo que exista un algoritmo en cualquier lugar que calcule una solución de formato vectorial para esta función de ponderación f).
Obviamente, si tienes más de un puñado de puntos p , escribirás esto, y si su número llega a miles, probablemente abandonarás el intento por ser impracticable computacionalmente (aunque hay formas de acelerar el cálculo al ponerlo en mosaico).
Otro ejemplo, que muestra los polígonos de Thiessen en un elipsoide, aparece en /gis//a/17377/ .
Lo que desea es un diagrama de Voronoi ponderado: http://en.wikipedia.org/wiki/Weighted_Voronoi_diagram también conocido como una teselación de Dirichlet circular cuando se hace con pesos multiplicativos en un plano 2D. Alguien parece haber construido una extensión arcgis 9 para construir estos: http://arcscripts.esri.com/details.asp?dbid=15481 Con una guía del usuario disponible aquí http://geography.unt.edu/~pdong/software .htm y un artículo publicado en Dong, P., 2008. Generación y actualización de diagramas de Voronoi ponderados multiplicativamente para entidades de puntos, líneas y polígonos en SIG. Computadoras y Geociencias, Volumen 34, Número 4, Páginas 411-421.
Hay un artículo reciente sobre un algoritmo basado en vectores (supongo que el algoritmo de P Dong está basado en la trama) para esto. http://www.sciencedirect.com/science/article/pii/S0098300411003037 El resumen dice que el código C # está incluido.
fuente