Archivo de la etiqueta: topología

Topologías en Digi3D.NET

Hemos añadido el concepto de Topología en Digi3D.NET, y eso nos permite realizar cosas como introducir automáticamente centroides en las inundaciones topológicas y como asignar un diccionario de valores a cada centroide que podemos utilizar a la hora de exportar a SIG como ArcGIS.

El editor de tablas de códigos ahora dispone de una nueva pestaña denominada Topologías que nos permite crear una topología y asignarle un nombre, códigos de las geometrías que forman la topología, un conjunto de centroides además de un diccionario clave/valor para cada centroide.

Podemos indicar un color de relleno para los polígonos de la geometría que no tengan centroide, así como un color de relleno para los huecos, y podemos asignar un color de relleno en función del centroide.

Podemos indicar además si un centroide tiene un texto fijo (como por ejemplo Edificio) o si se le permite al usuario añadir un texto, como por ejemplo el nombre de una calle).

En el vídeo de a continuación te enseñamos a añadir topologías en el editor de tablas de códigos así como a exportar a Shapefile con atributos de base de datos extraídos de la propia tabla de códigos.

Nueva orden FORMAR_POLIGONOS

Presentamos una nueva orden que nos va a ayudará a incrementar la productividad al trabajar con geometrías duplicadas: FORMAR_POLIGONOS.

Esta orden solicita que seleccionemos una serie de geometrías y, una vez seleccionadas, forma una topología virtual. A partir de ese momento podemos seleccionar caras compartidas y mediante la tecla Suprimir eliminar lados para formar polígonos de una forma dinámica.

El programa tiene en cuenta los códigos con los que están formados los polígonos, de manera que si unimos dos áreas con códigos distintos, el programa solicita el código con el que queremos dejar el polígono. En caso de que los dos polígonos tengan el mismo código pero distintos atributos, el programa mostrará en el cuadro de diálogo el listado de atributos para que seleccionemos el código con el que queremos dejar el polígono.

Puedes verlo a continuación en el siguiente vídeo:

 

 

Nueva orden RENOMCOD_SEL

Presentamos una nueva orden en Digi3D.NET que te va a permitir renombrar un código de la entidad o entidades que selecciones a continuación.

Esta orden (que puedes localizar en el menú Editar/Renombrar un código de entidades seleccionadas…), junto con la orden SELECCIONA_INUNDACION te va a permitir cambiar de código a varias geometrías rápidamente, incrementando mucho tu productividad.

A continuación puedes ver un vídeo en el que te mostramos esta nueva orden en acción:

 

Nueva orden SELECCIONA_INUNDACION

¿Sabías que en Digi3D.NET cuando una orden solicita que selecciones una entidad o entidades puedes utilizar las órdenes de selección múltiple?

Acabamos añadir a Digi3D.NET una orden que nos va a permitir seleccionar por inundación. Esta orden (que puedes localizar en el menú Inmediato/seleccionar por inundación únicamente la puedes ejecutar si se cumplen las siguientes condiciones:

  • Estás ejecutando una orden que está solicitando que se seleccionen varias entidades, como por ejemplo BORRA_E,  CAMB_COD,  CAMB_SEN, CAMB_Z, DUP, etc.
  • Tienes una topología temporal para inundación activa (que puedes crear en cualquier momento mediante las opciones del menú Inundación/Generar inundaciones o Inundación/Generar inundaciones sin huecos).

Gracias a esta orden puedes incrementar mucho tu productividad como puedes ver en el vídeo de a continuación:

Insertando automáticamente puntos en las intersecciones al finalizar una línea

Tal y como se explica en Relaciones geométricas entre entidades, para que dichos análisis funcionen correctamente, es necesario que siempre que una entidad (punto, línea, polígono) cruce otra entidad exista un vértice en la intersección de ambas entidades.

Hasta hoy teníamos dos formas de insertar vértices en las intersecciones:

Pero estas órdenes tienen sus inconvenientes:

  • La orden tentativo inserta únicamente introduce vértices en las entidades en las que hemos tentativado (líneas y polígonos desde hace unos pocos días).
  • La orden de insertar vértice en la intersección de líneas visibles analiza todo el archivo, de modo que si éste tiene muchas entidades, puede demorarse. Además, trabaja únicamente con líneas. Si una línea se cruza con un polígono, no añade vértice alguno a las entidades que formen el polígono.

Acabamos de añadir a Digi3D.NET la variable booleana: AUTO_INSERTAR_VERTICE_INTERSECCION_AL_FINALIZAR_LINEA, que como su nombre indica, inserta automáticamente vértices en las intersecciones de la línea que acabas de digitalizar con el resto de intersecciones.

Esta orden tiene la característica de que sí que es capaz de añadir vértices en polígonos (en la línea que hace de límite del polígono o en cualquiera de las líneas que forman los huecos de éste), y además está optimizada pues únicamente analiza las líneas que se cruzan con la línea que acabas de digitalizar.

Esta orden no sabe de códigos, es decir que añadirá vertices a todas las líneas o polígonos que se crucen con la línea que acabas de digitalizar (y obviamente también añadirá esos vértices a la propia línea), independientemente de los códigos que tengan dichas líneas.

En el siguiente vídeo te muestro en acción esta nueva característica de Digi3D.NET.

Relaciones geométricas entre entidades

 

Hemos añadido a Digi3D.NET lógica para detectar relaciones geométricas entre entidades.

Estas relaciones nos van a servir en un futuro próximo para crear modelos semánticos en la tabla de códigos e indicar por ejemplo que una línea de mar no puede terminar en una curva de nivel, o que una alcantarilla no puede estar dentro de una línea de mar.

La primera fase para lograr este objetivo es añadir operaciones que le permitan a Digi3D.NET analizar relaciones entre geometrías.

Lo que te presento hoy es una serie de opciones que hemos añadido en el menú de Análisis Geométricos de la aplicación.

Definiciones:

Tenemos que definir primero qué es un punto, qué es una línea y lo más importante: qué es un área para Digi3D.NET.

Tipo de entidad Descripción
Punto Puntual de Digi con o sin rotación. Creados con la orden PUNTO, PUNTO_R, etc.
Línea Línea de dos o más puntos (abierta o cerrada). Se consideran únicamente las entidades de tipo línea, y no las entidades de tipo línea que formen parte de un elemento complejo.
Área Se considera un área a cualquier línea cerrada o polígono. Las líneas cerradas o polígonos que formen parte de un elemento complejo no se tienen en cuenta.

Así que en todo lo que te voy a explicar aquí, no se tienen en cuenta ni puntos ni nada que forme parte de un elemento complejo.

Condiciones:

Se tienen que cumplir una serie de condiciones para que los algoritmos que te voy a presentar funcionen:

  • No existencia de puntos dobles. Si una línea tiene dos vértices con la misma coordenada, eso va a hacer que los algoritmos no funcionen. Puedes eliminar automáticamente los posibles puntos dobles existentes en tus geometrías ejecutando la orden COMPRIMIR=1 1, pero ¡ATENTO!, si haces esto y tu cartografía es 3d real (es decir, si has dibujado los edificios con su Z real en limatesas, limahoyas, etc, te cargarás esos puntos.
  • Todas las operaciones trabajan en 2D, de modo que cuando digo que una línea esté cerrada me refiero a que las coordenadas X e Y del primer vértice de la línea coinciden con las coordenadas X e Y del último vértice de ésta, independientemente de la coordenada Z de ambas.
  • Para que funcionesn las operaciones que te presento a continuación deben cumplir la siguiente regla general: Todas las geometrías que intersecten con otras geometrías deben tener un punto común en la intersección.
  • Los test son mutuamente excluyentes, de modo que si el test

Te lo muestro en la siguiente tabla:

Los algoritmos funcionan bien Los algoritmos funcionan mal
Punto – Línea  ReglaPuntoLineaBien  ReglaPuntoLineaMal
Línea – Línea  ReglaLineaLineaBien  ReglaLineaLineaMal
Área – Área  ReglaAreaAreaBien  ReglaAreaAreaMal

Así que ya sabes, antes de ejecutar cualquiera de las órdenes que te voy a presentar en esta entrada, asegúrate de haber insertado vértices en la intersección de las entidades involucradas mediante la opción del menú Análisis geométricos/Insertar un vértice en el punto de cruce de las líneas o acostúmbrate a trabajar con la variable TENTATIVO_INSERTA activada.

Tipos de relaciones que es capaz de analizar Digi3D.NET:

Existen seis tipos de relaciones si nos fijamos en el tipo de entidad:

  • Punto con punto.
  • Punto con línea.
  • Punto con área.
  • Línea con línea.
  • Línea con área.
  • Area con área.

Si ejecutas Digi3D.NET comprobarás que en el menú de Análisis geométricos hemos añadido esas opciones, cada una de ellas con una serie de órdenes que siguen todas el mismo patrón: Nos van a solicitar que seleccionemos dos entidades y luego nos mostrarán un globo indicando si ambas entidades cumplen o no la condición.

Relaciones Punto – Punto

Título Ejemplo
 ¿Son disjuntos?  PuntoPuntoNoCoincidentes
 ¿Son coincidentes?  PuntoPuntoCoincidentes

Relaciones Punto – Línea

Título Ejemplo
¿El punto es disjunto con la línea?
¿La línea es disjunta con el punto?
 PuntoLineaNoCoincidentes
¿El punto coincide con el final de la línea?
¿El punto termina en la línea?
¿La línea termina en el punto?
 PuntoLineaCoincidentesExtremo.png
 ¿El punto es coincidente con la línea?  PuntoLineaCoincidentes

Relaciones Punto – Área​

Título Ejemplo
¿Es el punto disjunto con el área?
¿Es el área disjunta con el punto?
 PuntoAreaNoCoincidentes
¿El punto es coincidente con el borde del área?  PuntoAreaCoincidentes
¿El punto está en el dentro del área?
¿El area encierra al punto?
 PuntoInteriorArea

Relaciones Línea – Línea​

Título Ejemplo
¿Son disjuntas?  LineaNoCoincidenteLinea
 ¿El final de una línea se une con la otra línea?
¿El final de una línea se une con el final de la otra línea?
¿Una línea se une con otra línea?
 LineaCoincideLinea
 ¿Una línea atraviesa la otra línea?  LineaCruzaLinea
 ¿Una línea solapa con la otra línea?  LineaSolapaLinea
 ¿Las dos líneas son idénticas?  LineaLineaIguales

Relaciones Línea – Área​

Título Ejemplo
¿Son disjuntos? LineaAreaNoCoincidentes
¿El extremo de la línea se une con el borde del área? LineaAreaCoincidentes
¿La línea termina dentro del área? LineaTerminaEnArea
¿La línea atraviesa el área? LineaCruzaAreaLineaCruzaArea2
¿La línea es adyacente al área? LineaAdyacenteArea
¿La línea está dentro del área?
¿El área incluye a la línea?
LineaDentroArea

Relaciones Área – Área​

Título Ejemplo
¿Son disjuntos?  AreaDisjuntaArea
¿Un área es adyacente con el otro área?  AreaAdyacenteArea
¿Las áreas se unen?  AreaUneAreaAreaUneArea2
¿Las áreas solapan?  AreaSolapaAreaAreaSolapaArea2
¿El primer área incluye completamente al segundo área?
¿El segundo área está completamente dentro del primer área?
 AreaIncluyeAreaAreaIncluyeArea2AreaIncluyeArea3
¿Las dos áreas son idénticas?  AreaIdenticaArea

A continuación un vídeo en el que te muestro esta nueva característica en acción y aquí tienes el enlace para descargarte el archivo de dibujo que utilizo en el vídeo.

Nueva orden GENERAR_TOPOLOGIAS_SIN_ISLAS

Acabamos de añadir a Digi3D.NET una nueva orden que nos va a permitir generar topologías por inundación sin tener en cuenta la relación entre polígono y huecos.

De esta manera, al pasar el cursor sobre un polígono, si este tiene huecos, estos no se marcarán, de modo que la orden que ejecutemos (como añadir código por recinto) únicamente tendrá en cuenta las caras externas del polígono.

Puedes seleccionar esta nueva orden en el menú Inundación/Generar inundaciones (sin huecos).

Comprueba esta nueva funcionalidad en el siguiente vídeo: