AreaArea
Espacio de nombres: Digi21.DigiNG.Entities.Relations
Ensamblado: Digi21.DigiNG
Esta clase estática proporciona métodos que permiten analizar la relación entre áreas.
public static class AreaArea
Herencia Object → AreaArea
Observaciones
Un Área en este contexto se refiere a líneas cerradas, de manera que engloba tanto a cualquier geometría de tipo ReadOnlyPolygono cualquier ReadOnlyLineque esté cerrado.
Las relaciones entre dos áreas son excluyentes: para cada par de áreas a y b, en ese orden, se cumple exactamente una de estas nueve:
| Relación | Método que devuelve Verdadero |
|---|---|
| Iguales | Equal |
| Disjuntas | Disjoint |
| Tienen un punto de unión | Join |
| Adyacentes | Adjacent |
a completamente dentro de b |
CompletelyWithin(a, b) |
a dentro de b |
Within(a, b) |
b completamente dentro de a |
CompletelyWithin(b, a) |
b dentro de a |
Within(b, a) |
| Se solapan | Overlap |
Estos métodos solo analizan vértices; no calculan intersecciones entre lados. Para cada vértice de un área se comprueba si coincide con un vértice de la otra área (vértice común) o si está dentro o fuera de la otra área. Un vértice que está dentro de un hueco de la otra área cuenta como fuera. Un vértice que está sobre un lado de la otra área sin coincidir con ningún vértice suyo se ignora. Las comparaciones se hacen en planta, sin tener en cuenta la coordenada Z, con la tolerancia de la precisión del archivo, y el resultado no depende del vértice inicial ni del sentido de recorrido de los anillos.
| Relación | Condición |
|---|---|
| Iguales | Los dos anillos exteriores tienen los mismos vértices, y los huecos también, con cualquier vértice inicial y sentido. Los vértices repetidos consecutivos no cuentan. También son iguales si hay vértices comunes y ningún vértice de un área está dentro ni fuera de la otra (los vértices que no son comunes están sobre los lados de la otra área). |
| Disjuntas | Ningún vértice de un área está dentro de la otra y no hay vértices comunes. |
a completamente dentro de b |
Los vértices de a están dentro de b, ninguno es común y ningún vértice de b, huecos incluidos, está dentro de a. |
a dentro de b |
Ningún vértice de a está fuera de b, al menos uno es común y ningún vértice de b, huecos incluidos, está dentro de a. Si ningún vértice de a está dentro de b, se comprueba si el punto interior de a está dentro de b. |
| Adyacentes | Ningún vértice de un área está dentro de la otra, hay vértices comunes y al menos un lado común (dos vértices comunes consecutivos en los dos anillos). |
| Tienen un punto de unión | Ningún vértice de un área está dentro de la otra, hay vértices comunes y ningún lado común. |
| Se solapan | Cualquier otro caso: hay vértices de un área dentro de la otra y ninguna de las dos contiene a la otra. |
Consecuencias de analizar solo vértices:
- Si dos áreas se cruzan sin vértices comunes en el cruce ni vértices dentro de la otra área, el cruce pasa desapercibido: las áreas se consideran disjuntas.
- Si dos áreas comparten un tramo de lado sin vértices comunes, tampoco se detecta el contacto.
Si un área tiene un anillo sin cerrar, de área nula o con una espiga (un vértice cuyos dos vecinos coinciden), estos métodos lanzan una excepción que indica el motivo y las coordenadas.