Aquí podría ser tu PUBLICIDAD


Generación de curvas de nivel a partir de datos espaciados regularmente

votos
5

Actualmente estoy trabajando en un proyecto de visualización de datos. Mi objetivo es producir líneas de contorno, es decir, líneas iso, a partir de datos reticulados. Los datos pueden ser temperatura, datos meteorológicos o cualquier otro parámetro ambiental, pero solo la condición es que debe ser regularmente espaciados. Busqué en Internet, sin embargo, no pude encontrar un buen algoritmo, pseudo-código o código fuente para producir curvas de nivel de grillas. ¿Alguien sabe una biblioteca, código fuente o un algoritmo para producir curvas de nivel a partir de datos de cuadrícula? será bueno si tu sugerencia tiene un buen rendimiento de tiempo de ejecución, no quiero esperar tanto a mis usuarios :)

Editar: gracias por la respuesta, pero las isolíneas tienen algunas restricciones, como que no deben cruzarse, por lo que solo la generación de curvas de bezier no logra mi objetivo.

Publicado el 12/03/2009 a las 21:45
fuente por usuario Qubeuc
En otros idiomas...        العربية       

4 respuestas

votos
4

Vea esta pregunta: ¿Cómo aproximar un contorno vectorial desde un ráster de elevación?

Es casi un duplicado, pero usa una terminología bastante diferente. Descubrirá que la cartografía y los gráficos por computadora resuelven muchos de los mismos problemas, pero usan una terminología diferente para ellos.

Respondida el 12/03/2009 a las 10:05
fuente por usuario Paul Tomblin


Aquí podría ser tu PUBLICIDAD


votos
1

hay algunos contornos razonablemente buenos disponibles en GNUplot, si puede usar el código GPL que pueda ayudar.

Respondida el 12/03/2009 a las 09:54
fuente por usuario Alnitak

votos
0

Si sus datos se colocan a intervalos regulares, esto se puede hacer con bastante facilidad (suponiendo que entiendo su problema correctamente). Primero debe determinar a qué intervalo desea sus contornos. A continuación, cree la cuadrícula que va a usar para almacenar la información de contorno (supongo que solo se trata de un encendido / apagado simple o elevación en este tipo de datos de nivel de contorno), que debe ser un intervalo más pequeño que los datos de origen.

Ahora el truco aquí es compensar las 2 cuadrículas por 1/2 intervalo (en realidad no aparecerá en un código como este, pero es el concepto con el que estoy tratando aquí) y comparar las 4 coordenadas que rodean el punto actual en el cuadrícula de datos de contorno que está calculando. Si alguno de los 4 puntos está en un intervalo de intervalo diferente, entonces ese "píxel" en la cuadrícula de contorno debe establecerse en verdadero (o el valor del rango de contorno que se cruza).

Con este método, habrá un problema cuando el intervalo sea demasiado fino, lo que provocará que varios contornos se superpongan entre sí.

Respondida el 13/03/2009 a las 04:51
fuente por usuario Grant Peters

votos
0

Como sugiere el enlace de Paul Tomblin, las curvas de Bezier (que son un subconjunto de B-splines) son una solución madura para su problema. Si el rendimiento del tiempo de ejecución es un problema, las curvas de Bezier tienen la ventaja adicional de ser construibles a través del algoritmo de Casteljau muy rápido, en lugar de dibujarlas de acuerdo con las ecuaciones paramétricas. En caso de que esté trabajando con DirectX, tiene una función de biblioteca para el Castel de Casteljau, pero no debería ser difícil prepararse uno mismo utilizando las páginas web 1001 que lo describen.

Respondida el 12/03/2009 a las 10:19
fuente por usuario Not Sure