5 votos

¿Cómo establecer un umbral para la triangulación de Delaunay?

He estado trabajando la triangulación de Delaunay en un conjunto de puntos aleatorios dentro de un grupo de áreas mayoritariamente lineales (de hecho, topes alrededor de ríos).

El problema es que, aunque la triangulación funciona correctamente dentro de estas áreas, también produce muchos triángulos entre ellas. Como era de esperar.

Ahora, tengo que borrar todos estos datos extra manualmente.

¿Alguien cree que sería posible definir un umbral, una distancia máxima, para el algoritmo de Delaunay?

De esta forma, sólo produciría triángulos dentro de cada área.

¿Alguna idea de cómo podría hacerlo? Estoy utilizando QGIS o GRASS.

0 votos

Si R es una opción, puede utilizar la biblioteca Triangle en el paquete RTriangle, y puede especificar tamaños mínimos +/- ángulos mínimos. Feliz de mostrar el uso si usted proporciona datos de ejemplo. Pero de lo contrario, ¿no se puede calcular estas métricas en cada triángulo y filtrarlos?

3voto

gabor Puntos 612

Comando GRASS v.delaunay puede configurarse con v.in.ogr min area para definir un área mínima para cada triángulo. Pero, podría ser complicado, porque el algoritmo podría genera polígonos pequeños fuera área del río.

La forma más sencilla es tener en cuenta el polígono de amortiguación (en tu caso) y ejecutar una ejecución Select by location . Seleccionará sólo los polígonos dentro del área deseada, también puede establecer un conjunto de reglas para la selección. Después de esto, simplemente selecta Save As... / Save only selected features .

He aquí un ejemplo sencillo en el que se utiliza una línea para definir la selección:

buff1

Con una zona tampón, necesitas un paso más. Tomar polígono de búfer y aplicar un búfer inverso ( Fixed distance buffer con valores de distancia negativos). Utilice el segundo búfer para seleccionar polígonos Delaunay (el área negra discontinua es el segundo búfer):

buff2

0 votos

Es una forma alternativa de obtener el mismo resultado, todo en QGIS. Yo estaba buscando umbral y se olvidó de la selección.

3voto

Joe Puntos 16

Si he entendido bien lo que quieres hacer y si puedes usar OpenJUMP entonces quizás la capa de triangulación con restricciones sea utilizable.

Crear una capa de puntos y una capa de polígonos con las zonas de interés.

enter image description here

Utiliza estos ajustes

enter image description here

El resultado será el siguiente

enter image description here

0 votos

OpenJUMP funciona perfectamente con la restricción. El número de triángulos resultante es aproximadamente el mismo que el método manual que he estado utilizando, pero obviamente más rápido.

0voto

artificer Puntos 3

Según el manual, v.delunay no tiene opción de distancia máxima o mínima. Por lo tanto, si desea obtener sólo los triángulos dentro de un mapa vectorial de polígonos, tendrá que eliminar el resto utilizando v.seleccionar o v.superponer (este último puede ser más rápido para grandes conjuntos de datos.

Sin embargo, utilizando el v.distancia puede crear líneas entre puntos dentro de umbrales de distancia mínima y máxima. Si las líneas forman conjuntos cerrados, puede cambiar las líneas por límites et añadir un centroide para obtener un área topológicamente correcta. Pero tenga en cuenta que, dependiendo de los puntos que introduzca, las líneas no están necesariamente conectadas a triángulos ni a límites cerrados en todos los casos...

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