Esta página presenta una síntesis acerca de la generación de grids rectangulares y triangulares y sus respectivos interpoladores, a partir de muestras (puntos e isolíneas) y otras grids que son utilizadas por el SPRING.
Las grids rectangulares se utilizan generalmente en aplicaciones cualitativas, o sea, para la visualización de la superficie. En lo que respecta al modelo de grid irregular, este se utiliza cuando se requiere mayor precisión en el análisis cuantitativo de los datos.
Los interpoladores de grid rectangular y triangular, utilizados en el SPRING para la generación de modelos numéricos de terreno, fueron especificados de acuerdo con los tipos de datos de entrada, o sea, muestras (puntos e isolíneas), grid rectangular o triangular.
Consulte también:
Cómo generar grid Rectangular
Cómo generar Grid Triangular
Productos de MNT en el SPRING - ¿Cuáles son y cómo ejecutar?
Procesos de Modelaje
La grid rectangular o regular es un modelo digital que aproxima superficies a través de un poliedro de caras rectangulares (Figura abajo). Los vértices de esos poliedros pueden ser los propios puntos muestreados, en el caso que estos hayan sido adquiridos en las mismas localizaciones xy que definen la grid deseada.
Modelo de superficie generada por una grid rectangular.
La generación de grid regular o rectangular
debe efectuarse cuando los datos muestreados en la superficie no se obtienen con
espaciado regular. Así, a partir de las informaciones contenidas en las isolíneas o en los
puntos muestreados, se genera una grid que representa, de la manera lo más fiel posible, a la
superficie. Los valores iniciales que han de determinarse son los espaciados en las direcciones
x y y, de modo que puedan representar los valores próximos a los puntos de la grid en regiones
con gran variación. Al mismo tiempo, deben reducir redundancias en regiones casi
planas.
El espaciado de la grid, o sea, la resolución en x o y, debe ser idealmente menor o igual a la menor distancia entre dos muestras con cotas diferentes. Al generarse una grid muy fina (densa), con una distancia entre los puntos muy pequeña, habrá un mayor número de informaciones sobre la superficie analizada, pero se necesitará más tiempo para su generación. Por el contrario, si se consideran distancias grandes entre los puntos, se creará una grid gruesa, que podrá acarrear la pérdida de información. De esta manera, para la resolución final de la grid, debe haber un compromiso entre la precisión de los datos y el tiempo de generación de la grid.
Una vez definida la resolución y consecuentemente las coordenadas de cada punto de la grid, puede aplicarse uno de los dos métodos de interpolación para calcular el valor aproximado de la elevación.
En el SPRING la grid regular se puede generar a partir de muestras, o sea, puntos y líneas, grid regular o irregular. En el caso de puntos y líneas pueden utilizarse los siguientes interpoladores: vecino más próximo, media simple, media ponderada, media ponderada por cuadrante, media ponderada por cota y por cuadrante y splines. Para la generación de una nueva grid regular a partir de otra grid rectangular, se pueden utilizar los interpoladores lineal y bicúbico. Para la generación de una grid rectangular a partir de un TIN (Triangular Irregular Network), se encuentra disponible el interpolador lineal.
Para la generación de grid regular o rectangular a partir de muestras (puntos e isolíneas), se describen y representan a continuación los métodos de interpolación más utilizados:
El valor de cota (+) equivale al valor muestreado más próximo (*).
donde:
n
= número de vecinos
El valor de la cota (+) obtenido a partir de los 4 vecinos muestreados más próximos (*).
d = ((x - x0)2 + (y - y0)2)1/2 d = distancia euclidiana del punto interpolador al vecino I
w(x,y) = (1/d)u=1 u = 1 = exponente de la función de ponderación
donde:
w(x,y) = función de ponderación
f(x,y) - función de interpolación
Este interpolador produce resultados intermedios entre el interpolador de media simple y los otros interpoladores más sofisticados, con tiempo de procesamiento menor.
El valor de cota por cuadrante con peso es proporcional a la inversa de la distancia de los
valores muestreados.
El valor de la cota se obtiene por la media ponderada de cotas de las isolíneas por cuadrante.
Ejemplos de superficies Spline
La generación de una nueva grid rectangular a partir de una grid rectangular anteriormente elaborada, o sea, el refinamiento de la grid, consiste en disminuir el espaciado entre puntos de la grid, condensándola. Estos puntos internos, por retazos, presentan un valor de cota z de la nueva grid estimados mediante los interpoladores bicúbico y bilineal.
Para realizar un refinamento bicúbico, según la relación de vecindad, el número de vecinos que han de considerarse será igual a 16 (Vea figura a continuación).
Interpolador bicúbico.
El refinamiento bicúbico, a pesar de ser más lento computacionalmente que el bilineal, suministra resultados más interesantes, ya que garantiza continuidad de primer y segundo órdenes entre las funciones que representa cada célula del modelo. De esta forma, la superficie resultante es suave en los puntos de la grid y también a lo largo de los segmentos que forman los rectángulos, o sea, la grid es más suave y cada retazo de la grid es continua y suave con relación a sus vecinos.
Para calcular la superficie bilineal para una célula de la grid, se aprovechan las características de ordenación de las posiciones de los elementos de las células y se optimiza el procedimiento que implementa este interpolador.
Considerando una célula de la grid formada por los puntos vértices A, B, C y D, y un punto
genérico situado en el interior de la célula. M=f(u,v), (u,v) en (0,1), la interpolación
bilineal sobre la célula ABCD es realizada por la siguiente secuencia: inicialmente
se interpolan linealmente los puntos E y F, a partir de los puntos C y D, y A y B,
respectivamente; por último,
se interpola el punto M, linealmente, a partir de los puntos E y F (Vea figura abajo).
Así, el valor de cota Z, calculada en el punto M, es:
Interpolador bilineal.
Este método es muy rápido computacionalmente en relación con el interpolador bicúbico. Su mayor desventaja es la producción de superficies poco suavizadas. Por lo tanto, debe usarse cuando no fuese necesaria una apariencia suave de la superficie.
La conversión de la grid triangular a grid rectangular puede ser necesaria cuando se desea una forma matricial para el modelo numérico de terreno. De este modo, las informaciones del terreno que fueran modeladas por un interpolador de grid triangular, pueden ser analizadas por otras informaciones del tipo matricial. El proceso de conversión puede utilizar los siguientes interpoladores: Lineal, Quíntico con líneas de ruptura y Quíntico sin líneas de ruptura, los cuales se describen a continuación.
En la interpolación lineal, un plano es ajustado para cada retazo triangular de la grid, a fin de determinar los valores de z en cada posición xy dentro del triángulo. La ecuación de una superficie plana puede expresarse por Ax +By +Cz +D=0.
En este abordaje lineal las superficies de retazos diferentes se encuentran en el lado común de estos triángulos. Esto significa que los bordes no tienen continuidades suaves.
El interpolador quíntico sin líneas de ruptura ajusta una superficie al retazo de la grid, utilizando un polinomio de quinto grado. La utilización de este interpolador permite generar una superficie más suave cuando es comparada con otra grid generada por el interpolador lineal.
Líneas de ruptura son líneas que definen discontinuidades en la superficie para los dos diferentes lados de la línea, como las líneas de valle o de cresta. Un río, por ejemplo, puede editarse como una línea de ruptura en la que, a lo largo de sus márgenes, hay una discontinuidad de relevo, sin ningún valor de cota asociado a él.
Estas líneas de ruptura pueden considerarse, o no, en la generación de una grid triangular. El interpolador quíntico sin líneas de ruptura obviamente no considera estas líneas de ruptura (Vea ejemplo en la figura abajo).
Interpolador quíntico sin línea de ruptura.
Se recomienda este interpolador cuando se desea una superficie suave y no hay líneas de valle o cresta muy realzadas (líneas de ruptura) en el modelo numérico del terreno.
Este interpolador sólo difiere del anterior en lo que se refiere a las líneas de ruptura. Utiliza la misma superficie de quinto grado para ajustar los retazos de la grid, pero el algoritmo reconoce la línea de ruptura y la superficie a lo largo de ella no será suavizada (Vea ejemplo en la figura siguiente).
Grid generada por interpolador quíntico con líneas de ruptura.
Este interpolador es recomendado para situaciones en las que las líneas de ruptura se editan para destacar caracteres lineales de relieve y drenaje y se desea una superficie suave.
En el modelaje de la superficie por medio de una grid irregular triangular, cada polígono que forma una cara del poliedro es un triángulo (Figura abajo). Los vértices del triángulo son generalmente los puntos muestreados de la superficie. Este modelaje, considerando las aristas de los triángulos, permite que las informaciones morfológicas importantes, como las discontinuidades representadas por caracteres lineales de relieve (crestas) y drenaje (valles), sean consideradas durante la generación de la grid triangular, posibilitando así modelar la superficie del terreno preservando las características geomórficas de la superficie.
Modelo de superficie generado por grid triangular.
El número de redundancias es bastante reducido en comparación con la grid rectangular, puesto
que la malla es más fina en regiones de grandes variaciones y más espaciada en regiones
casi planas. Las discontinuidades de la superficie pueden ser modeladas por medio de líneas y
puntos característicos.
Esta grid tiene la ventaja de utilizar los propios puntos muestreados para modelar la superficie, sin necesidad de cualquier tipo de interpolación sobre los mismos. La desventaja de la grid irregular está en que los procedimientos para la obtención de datos derivados de grids triangulares tienden a ser más complejos y consecuentemente más demorados que los de la grid rectangular.
La entrada de isolíneas en el modelaje numérico, bien sea por la sensibilidad de la mesa digitalizadora o por la resolución del scanner y el algoritmo de conversión, produce muchas veces un número excesivo de puntos para representar la isolínea. El espaciado ideal entre puntos de una misma isolínea debe ser la distancia media entre la isolínea y las isolíneas vecinas. Este espaciado ideal permite generar triángulos más equiláteros, que permiten modelar el terreno de manera más eficiente.
Otra fuente de puntos redundantes ocurre cuando una línea no es digitalizada continuamente, desde su inicio hasta su final. En estos casos, el primer punto de una línea puede ser el último de la línea anterior, o estar tan próximo a ella que puede interpretarse como si estuviese ubicado en la misma localización geográfica. Este último problema puede resolverse comparando los valores iniciales y finales de las isolíneas. Uno de los puntos, así duplicados, puede ser eliminado del conjunto de muestras.
Los puntos en exceso, a lo largo de una línea, se eliminan utilizando un procedimiento de simplificación basado en el algoritmo de Douglas-Peucker. El procedimiento de Douglas-Peucker elimina puntos, analizando la distancia de cada punto a una recta que une el primer punto y el último de la línea. Si todos los puntos se encuentran a una distancia menor que una tolerancia dada, la línea se representará sólo por el primer y el último puntos. Si algún punto está a una distancia mayor, el punto más distante de la recta es considerado el último, y el algoritmo se reinicia, calculando las distancias.
Se sigue un procedimiento especial cuando la línea representa una isla, es decir, cuando el primer punto es igual al último. En este caso, se utiliza el penúltimo punto. Una vez que las líneas tratadas representan isolíneas y sus puntos son utilizados como muestras de elevación en la generación de grid triangular, debe mantenerse una distancia máxima entre puntos a lo largo de las líneas. Idealmente, esta distancia debe ser la media de la distancia entre la línea analizada y las líneas paralelas más próximas.
El valor de tolerancia se calcula considerando la escala original de los datos. Se sabe que la precisión de los datos disponibles en mapas es de alrededor de 0,2 mm. El valor de 0,4 mm de tolerancia para la eliminación de puntos fue utilizado en pruebas que mostraron que este valor permite generar grids triangulares bien conformadas (se procuran triángulos lo más equiláteros posible). La distancia máxima entre puntos de la isolínea se define a partir de la tolerancia del algoritmo de Douglas-Peucker, y las pruebas arrojaron que puede utilizarse un valor dado equivalente a 20 veces la tolerancia. Estos valores aparecen como 'default', en la ventana de generación de la grid triangular.
Las líneas de drenaje pueden utilizarse como fuentes de informaciones adicionales y pueden mejorar la calidad del modelo de terreno. Estas líneas se representan por medio de un conjunto de puntos y, de la misma forma que las isolíneas, deben procesarse de modo que se tengan apenas los puntos necesarios para una buena representación. Se utiliza el mismo procedimiento basado en el algoritmo de Douglas-Peucker, pero con la diferencia de que no es necesario mantener una distancia máxima entre puntos.
El acesso a la triangulación que ha de generarse debe ser lo más eficiente posible, debido al gran volumen de datos que se almacena. Una triangulación típica para modelaje de elevación tiene entre 10.000 a 100.000 triángulos, que deben ser modificados continuamente durante la fase de creación, y a los que se accede regularmente cuando se necesita extraer datos derivados del modelo. Las estructuras escogidas están basadas en vectores, siendo una para almacenar los vértices, otra para las aristas y la última para los triángulos.
Cada vértice contiene los valores de x y y, y de elevación z correspondientes a una muestra de la superfície. Estos valores se almacenan en la clase TinNode, con lo que x y y forman el punto (TNpoint).
Además de estos datos, se almacena la información de procedencia de la muestra. Los vértices se clasifican y obtienen a partir de los puntos de las isolíneas, de puntos de las líneas de ruptura (líneas de drenaje), de muestras aisladas y de puntos eliminados en el proceso.
Los vértices de líneas de ruptura pueden clasificarse también en función de la forma empleada para obtener el valor de elevación. Como las líneas de ruptura no tienen valores de elevación asociados, debe utilizarse algún método estimativo. Cuando la línea de ruptura intercepta una isolínea, el valor es estimado como si fuese de la isolínea y se clasifica como si fuese de un tipo diferente de otro vértice con elevación calculada por otro método. Cada unidad básica de almacenamiento constituye una posición en un vector de tamaño igual al número de vértices, siendo accesible directamente por el índice de la línea del vector.
El tamaño inicial del vector es igual al número de muestras (puntos acotados más el número de puntos sobre isolíneas después de la simplificación) aumentado en 4. Estos 4 elementos adicionales corresponden a los puntos extremos del rectángulo envolvente de las muestras, necesario durante el proceso de generación de la triangulación.
Las aristas de la triangulación contienen las informaciones relativas a los vértices a las que están conectadas y a los triángulos que comparten esta arista.
La unidad utilizada para almacenar la arista es orientada, siendo los dos vértices clasificados con DE y PARA, y los triángulos, como de la DERECHA y de la IZQUIERDA.
Cada unidad básica de almacenamiento constituye una posición en un vector de tamaño igual al número de aristas, siendo accesible directamente por el índice de la línea del vector.
El tamaño inicial del vector es igual al número de muestras (puntos acotados más el número de puntos sobre isolíneas después de la simplificación) multiplicado por 3.
Los triángulos contienen la información de cuáles son las tres aristas que lo componen. Para acceder a las coordenadas de los vértices del triángulo, es necesario consultar el índice de las aristas y el índice de los vértices de las aristas, y obtener entonces las coordenadas deseadas.
Las aristas de los triángulos son numeradas de 0 a 2, obedeciendo al orden con que son almacenados en cada unidad básica. El tamaño inicial del vector es igual al número de muestras (puntos acotados más el número de puntos sobre isolíneas después de la simplificación) multiplicado por 2.
Creación de la Triangulación de Delaunay
Los puntos muestreados se utilizan para crear la grid irregular. El método utilizado es el aumentativo, en el que los puntos se insertan uno a uno en la triangulación, con lo que se modifica la triangulación existente, efectuando pruebas de Delaunay en los triángulos generados y modificados con sus vecinos. En la última fase del proceso, todos los triángulos se comprueban y modifican, si es necesario, para respetar las restricciones de Delaunay.
Para iniciar el procedimiento de inserción de puntos en la triangulación es necesario que haya un conjunto de triángulos iniciales. Estos triángulos se basan en el rectángulo que envuelve todos los datos muestras que se utilizarán (vea figura al lado). Los cuatro puntos que definen los dos triángulos iniciales se obtienen en los vértices del rectángulo envolvente, aumentado en una distancia en cada uno de estos vértices. El valor utilizado es el de tolerancia, calculado en función de la escala, y es de 0,4 mm veces por la escala.
Los vértices de los triángulos iniciales son diferentes de los otros vértices que corresponden a las muestras. Para permitir su identificación, el valor de elevación a ellos atribuido es el correspondiente al mayor valor posible de ser representado (MAXFLOAT) en notación de punto fluctuante de 4 bytes. El valor utilizado es de 3,4E37. Este valor parte de un patrón y todos los procedimientos deben conocer este valor para que puedan distinguir un vértice no válido de otros normales.
La inserción de muestra se hace sobre los triángulos existentes. Cada muestra que ha de insertarse está contenida en un solo triángulo de la triangulación. Una vez que los dos triángulos iniciales están creados, conteniendo todo el espacio de muestras, toda muestra debe pertenecer a uno de los triángulos existentes. Las muestras se insertan una a una: inicialmente se insertan las muestras puntuales, y después las obtenidas de isolíneas. No se utilizan los puntos de isolíneas que coinciden con otros puntos ya insertados. Este caso sucede al inicio o al final de una isolínea, cuando esta se halla representada por más de una línea. Cada muestra se inserta mediante un proceso que consta de la definición de qué triángulo la contiene, la modificación de este triángulo y de sus vecinos, la prueba del criterio de Delaunay y la modificación de los nuevos triángulos vecinos, en caso de que sea necesario para atender la restricción impuesta por el criterio de Delaunay.
Una vez insertadas todas las muestras, está disponible una triangulación. Sin embargo, esta triangulación puede no tener todos los triángulos respetando el criterio de Delaunay. Para garantizar que la triangulación sea Delaunay, todos los triángulos se comprobarán en relación con sus vecinos. Los triángulos se comprueban en la misma secuencia en que se crearon.
La comprobación en un triángulo se efectúa con sus 3 vecinos. En el caso de que el triángulo comprobado T y su vecino TV estén alterados para obedecer el criterio, se verifica si el triángulo vecino ya había sido comprobado, o sea, si TV está antes que T en la secuencia. Cuando el triángulo vecino TV está antes que T, TV debe comprobarse en relación con sus vecinos. Si el triángulo TV se halla después que T en la secuencia, los nuevos vecinos de T se comprueban en relación con T y la comprobación continúa a partir de T. En cada una de estas, cuando se altera algún triángulo y está antes que T en la secuencia, este triángulo se comprobará nuevamente.
Sobre la triangulación Delaunay creada, pueden efectuarse alteraciones para que ella obedezca criterios adicionales. Entre las alteraciones implementadas están la creación de triangulación con envoltorio convexo, triangulación donde las aristas no interceptan isolíneas, triangulación en la que los triángulos vecinos tienen la menor diferencia de ángulo entre las normales.
En la generación de la triangulación, las isolíneas son utilizadas como si fuera un conjunto de muestras, en el que cada punto que forma una línea es una muestra aislada. Sin embargo, la isolínea representa toda la región del espacio x,y entre dos puntos consecutivos de una isolínea que tiene el valor de elevación constante e igual al valor de la isolínea. La triangulación debe considerar este hecho en la generación, manteniendo una arista sobre la isolínea que conecta dos puntos muestreados sobre ella.
Para obtener la triangulación en la que las aristas no intercepten isolíneas, la triangulación Delaunay debe ser modificada. Las isolíneas son analizadas una a una, para cada segmento que une las muestras extraídas de la isolínea. Si el número de aristas interceptadas para cada segmento es 1 ó 2, la alteración de la arista para conectar los vértices de los triángulos que comparten esta, y que son diferentes a los actuales vértices de la arista, puede ser suficiente.
Si el número de aristas interceptadas es mayor que 2, los puntos de intersección son insertados en la triangulación.
La generación de triangulación tiene en cuenta sólo las coordenadas en X y Y. La triangulación obtenida de este modo puede contener distorsiones debido al valor de elevación, o sea, en los análisis en los que se utiliza la elevación, los resultados pueden ser más correctos si la triangulación considera también la coordenada Z.
Una de las maneras de insertar la información de elevación es modificar la triangulación utilizando como criterio de restricción el menor ángulo posible entre los normales de las superficies de los triángulos. La modificación de la triangulación se hace en un proceso semejante al de la modificación para obedecer el criterio de Delaunay, es decir, todos los triángulos se comprueban en relación con sus vecinos en la misma secuencia en que se crearon y la comprobación en un triángulo dado se efectúa con sus 3 vecinos. En caso de que el triángulo comprobado T y su vecino TV estén alterados en la prueba, se verifica si el triángulo vecino ya había sido comprobado, o sea, si TV está antes que T en la secuencia. Cuando el triángulo vecino TV está antes que T, todos los triángulos vecinos a TV deben ser comprobados nuevamente. Si el triángulo TV está después que T en la secuencia, los vecinos de T son comprobados en relación con T y la comprobación continúa a partir de T. En cada una de estas comprobaciones, se verifican si los triángulos alterados están antes que T en la secuencia y todos los que están antes se comprueban nuevamente.
La triangulación creada a partir de las muestras puede modificarse con la inserción de líneas de ruptura. Las líneas de ruptura pueden estar en el mismo plano de información de las isolíneas o pueden estar en otro plano. Para el caso de líneas de ruptura en el mismo plano, ellas se diferencian con el uso de un identificador que define el tipo de línea. Cuando las líneas de ruptura se encuentran en otro plano de información, la categoría de este plano debe ser diferente a la categoría Numérica, de modo que todas las líneas del plano se considerarán de ruptura. Las líneas de ruptura del plano de entrada son copiadas e insertadas en la triangulación.
Durante la generación de grids triangulares con líneas de ruptura, estas líneas de ruptura se incorporan a la triangulación, constituyendo aristas de triángulos. El modelo final, o sea, la grid triangular irregular, tendrá estas informaciones adicionales de línea de ruptura incorporadas, con lo que se posibilita una representación más fiel del terreno, pues no suaviza las características como valles y crestas.
NOTA : En el SPRING este modelaje puede elaborarse a partir de muestras
(puntos e isolíneas), grids regulares u otra grid triangular (TIN). Una vez que la
grid triangular haya sido generada, es posible la generación de isolíneas, calcular
declividad y generar grid regular a partir del TIN.
Vea también :
Cómo generar una Grid Triangular.