6 votos

Convertir los datos de punto en una trama ponderada

Estoy completamente re-escrito mi pregunta como creo que fue bastante confuso antes:

Tengo un número de diferentes puntos, cada punto tiene un valor de z. Necesito crear algún tipo de ráster o una serie de polígonos que los búferes de estos puntos.. pero tengo un par de reglas complicadas!

  1. Si los puntos adyacentes tienen el mismo valor de z, entonces el buffer debe combinar en un polígono.
  2. si el adyacentes punto diferente es un valor de z - a continuación, los tapones deben ser ponderados de acuerdo a la profundidad de los valores z, es decir, si un valor de z es de -10, y el otro es de -5, entonces el buffer de la -10 punto de toma hasta el 75% de la distancia entre los 2 puntos. Pero debido a que hay muchos puntos, y todos ellos están relacionados, esta mezcla será diferente en diferentes partes de el punto, ver el diagrama!enter image description here
  3. La idea de la ponderación de diagrama de voronoi se ha sugerido a mí y que sería perfecto si no fuera por todos los puntos que están relacionados con todos los puntos alrededor de su!
  4. Sé cómo iba a hacerlo en papel - me gustaría dividir el espacio entre todos los puntos 10 y, a continuación, basado en la diferencia entre los dos puntos de elegir donde el buffer sería el inicio (si no hay ninguna diferencia entre los puntos a continuación, el búfer se inicia en el medio).
  5. Aunque no puedo trabajar fuera de la fórmula para determinar cuando el buffer se inicia.. sé que debe ser derivado de la DIFERENCIA entre los dos puntos -, pero no tengo la mathmatical capacidad para trabajar cómo iba a utilizar para calcular la distancia!

Estoy usando Arcmap 9.3.1 y estoy abierto a secuencias de comandos de python! Si usted necesita de mí para intentar explicar algo más de lo que voy a intentar! estoy muy confundido mismo!

1voto

JeanLaurent Puntos 327

Estoy claro en el dibujo de la parte de su pregunta, así que espero que no estoy totalmente fuera de lugar aquí, pero a mí me parece que se podría aplicar un búfer basado en el valor de z de campo alrededor de cada uno de sus puntos. Tomar el polígono resultante y el uso del polígono de trama herramienta para crear su final de trama (si usted tiene ArcInfo). Si usted no tiene ArcInfo creo gdal_rasterize debe hacer el truco.

Nota: Si el búfer de distancia alrededor de cada punto no está directamente relacionada a su valor de z, sólo tiene que añadir un extra de distancia intermedia de campo.

ESRI enlace: http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=Polygon_to_Raster_(de conversión)

gdal_rasterize enlace: http://www.gdal.org/gdal_rasterize.html

0voto

Symmetric Puntos 158

Si entiendo tu pregunta, un algoritmo que puede trabajar (es decir, no en mi cabeza, pero no lo he intentado), y requeriría de algunas secuencias de comandos es algo como esto:

  1. Generar la Voronoi/Theissen polígonos de sus puntos.
  2. Tomar el inverso de los polígonos, que es ahora habrá bordes conectados a sus puntos originales.
  3. Para cada arista e conectado al punto p, calcular la distancia relativa a lo largo de e tales que una proporción de los puntos finales de pesos. I. e. w / (w + w), donde w es el peso de p y w es el peso de p', el otro extremo de correo. (Si usted necesita la inversa, que es de -10 es "más pesado" que -2, sólo restar este valor de 1).
  4. Escala e en proporción al valor obtenido en el 3), y su nuevo punto final será el que marque la ponderación de la frontera entre los dos puntos. Asociar este concepto con el punto p. Hacer esto para cada borde, recordando a duplicar el nuevo límite del punto p', por lo que no es necesario calcular una segunda vez.
  5. Ahora usted tiene un anillo de puntos asociados con cada uno de sus puntos originales. Se unen a estos en los polígonos que tienen un peso atributo que es el mismo que el punto que ellos encierran.
  6. Combinar todos los polígonos adyacentes con el mismo peso atributo.

Puede que tenga que comprobar que cada punto p tiene más de dos filos que irradia de ella para evitar que degenere polígonos que puede suceder con la esquina de los casos, pero creo que debería funcionar.

0voto

kenorb Puntos 516

Hice el intento de resolver un problema similar recientemente - que necesitaba para dividir los clústeres de la ponderación de los puntos en regiones. Aquí está el método que terminó trabajando para mí:

  1. Calcular la densidad de kernel de trama para distribuir el efecto de los diferentes puntos en el espacio. Tendrás que jugar con el ancho de banda para asegurarse de que los mayores puntos de flujo en pequeños puntos en la forma que más le convenga.

  2. El uso de la calculadora ráster, hallar la inversa de la densidad de kernel de trama.

  3. Utilizando el método mencionado aquí por @whuber calcular las cuencas hidrográficas.

  4. Convertir las cuencas de ráster a los polígonos, se unen para sus puntos originales, y disolver los polígonos con el mismo valor de z.

Si su ancho de banda es apropiado que usted debe terminar con los polígonos que siga la distribución del punto de pesos. Que no será tan determinado matemáticamente como usted menciona, sino que debe estar cerca.

Alternativa #2: ¿por Qué no utilizar ponderado de voronoi y, a continuación, disolver las regiones con el mismo valor de z? No resolver el problema de la interacción entre puntos adyacentes?

Alternativa #3: Si usted realmente necesita precisión matemática, usted puede necesitar un kernel cálculo de la densidad con un ancho de banda variable relacionada con el valor de z. Habría que escribir esto, pero es simplemente una cuestión de cálculo de un núcleo alrededor de cada punto, agregando un temporal de trama, de pasar al siguiente punto, añadir el siguiente punto del núcleo y así sucesivamente. Sería difícil, pero sería darle precisamente la forma que usted necesita.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X