El formato TIN de Esri es un formato de datos vectoriales geoespaciales popular pero propietario para el software de sistemas de información geográfica (GIS) para almacenar datos de elevación como una red irregular triangulada . Es desarrollado y regulado por Esri , EE. UU. El formato TIN de Esri puede describir espacialmente la información de elevación, incluidas las características de los bordes de ruptura. Cada punto y triángulo puede llevar una información de etiqueta. [1] [2] Un TIN almacenado en este formato de archivo puede tener cualquier forma, cubrir múltiples regiones (por ejemplo, islas) y contener agujeros (por ejemplo, lagos). [3]
En 2007 salió a la luz una descripción mediante ingeniería inversa del formato TIN de Esri. [4] Desde entonces, el Virtual Terrain Project, un software de código abierto , ha implementado soporte para leer el formato, sin necesidad de tener instalado ArcGIS . [5]
El formato TIN de Esri es un formato de almacenamiento vectorial digital para almacenar información de elevación, incluidas las características de vanguardia. El formato TIN de Esri se introdujo con ArcView GIS .
El formato TIN de Esri consiste en una colección de archivos con nombres de archivo específicos y una extensión de nombre de archivo común, almacenados en el mismo directorio . La mayoría de los archivos son archivos obligatoriostdenv.adf ( , tedg.adf, thul.adf, tmsk.adf, tmsx.adf, tnod.adf, [5] tnxy.adf[5] y tnz.adf[5] ), opcionalmente se puede proporcionar un archivo que contiene el sistema de coordenadas y la información de proyección ( prj.adf) y archivos que contienen información de etiqueta de punto ( tnval.adfy tndsc.adf) e información de etiqueta de triángulo ( ttval.adfy ttdsc.adf) [1] [2] .
El orden de bits de la mayoría de los archivos es big-endian tmsk.adfy tienen orden de bitstmsx.adf mixto .tdenv.adf
El orden de bytes del archivo tndsc.adfes tnval.adflittle-endian.
Un TIN con npuntos (incluidos superpuntos) y k triángulos , los tamaños de archivo se calculan de la siguiente manera:
Contiene una matriz de valores de coordenadas X e Y, un par para cada punto del TIN. El conjunto de datos para cada punto se puede describir mediante la siguiente estructura:
Contiene una matriz de valores de coordenadas Z, uno para cada punto del TIN. Los valores están en el mismo orden que los valores en tnxy.adfy juntos almacenan la coordenada tridimensional de cada punto del TIN. El conjunto de datos para cada punto se puede describir mediante la siguiente estructura:
Contiene una matriz de índices para los puntos que forman los triángulos del TIN, 3 índices para cada triángulo. Los índices están en el rango de 1 al número de puntos ([1, # de puntos]). La cara frontal de un triángulo (generalmente el lado superior) es la cara que tiene los 3 puntos/esquinas ordenados en el sentido de las agujas del reloj cuando se observa. El conjunto de datos para cada triángulo se puede describir con la siguiente estructura:
Contiene información sobre la topología de los triángulos y el tipo de sus aristas.
Hay una entrada para cada triángulo con cada 3 índices, que apuntan a la posición (número del índice) en el tnod.adfarchivo para identificar el triángulo, que comparte un borde con el triángulo descrito por el conjunto de datos actual, y el punto de ese triángulo, que forma ese borde.
Para cada triángulo en tnod.adfexiste un conjunto de datos en la misma ubicación del archivo en tedg.adf. Cada uno de los valores apunta a la ubicación en tnod.adf, donde se especifica el punto (el índice de ese punto) que forma una arista. Al mismo tiempo, dado que la ubicación en tnod.adfy tedg.adfcorresponden, cada uno de los valores apunta a la ubicación en tedg.adf, donde se especifica la ubicación del valor. Regla: si la arista a del triángulo A apunta a la arista b del triángulo B , entonces la arista b del triángulo B debe apuntar a la arista a del triángulo A . Dado que la definición de arista en tedg.adfy la definición de punto en tnod.adfde cada triángulo están en la misma ubicación en los archivos, los índices en tedg.adfapuntan a la definición de punto en tnod.adfde los triángulos vecinos.
Los índices codifican el índice y el tipo reales del borde. Los índices reales no son desplazamientos de archivo en bytes, sino int32valores, en el rango de 1 al número de puntos ([1, # de puntos]). Si el valor es negativo (el bit 31 está establecido), el borde es un borde de ruptura. Además, el bit 30 de los int32valores se utiliza para determinar si el borde es un borde de ruptura duro o suave. Si el índice real fuera 1234(0x000004D2), entonces un borde de ruptura duro se codificaría como -1234(0xFFFFFB2E) y un borde de ruptura suave como -1073743058(0xBFFFB2E). La definición del borde del triángulo vecino debe reflejar el tipo de borde. ATENCIÓN: Este comportamiento ha cambiado desde ArcGIS 10. Compárelo con la información proporcionada en la sección 'Cambios de formato y archivos nuevos con ArcGIS 10'.
El conjunto de datos de cada triángulo se puede describir mediante la siguiente estructura:
Este archivo contiene información que podría verse como una combinación de encabezado de archivo y datos estadísticos.
Contiene una matriz de índices y separadores que define el límite exterior del TIN y sus agujeros. Los índices están en el rango de 1 a la cantidad de puntos ([1, # de puntos]). Los separadores son -1 (0xFFFFFFFF) y cero (0).
Si el TIN se construye utilizando superpuntos (normalmente los 4 primeros puntos), thul.adfse enumeran los índices de estos puntos y luego -1(0xFFFFFFFF). Después del separador siguen una o más listas de índices que forman polígonos delimitadores (límites externos) y, tal vez, agujeros (límites internos). Estas listas están separadas por valores cero (0).
Si el TIN no contiene superpuntos, thul.adfcomienza con el -1separador (0xFFFFFFFF), al que le siguen una o más listas de índices que forman polígonos delimitadores (límites externos) y, tal vez, huecos (límites internos). Estas listas están separadas por valores cero (0).
Los índices y separadores son valores enteros de 4 bytes (int32), almacenados en orden de bytes big-endian.
Contiene una matriz de bits (almacenados en números enteros de 4 bytes) que especifican la visibilidad de los triángulos del TIN. Esto se puede utilizar para ocultar los triángulos dentro de los agujeros del terreno o fuera del terreno (fuera de los límites externos).
El archivo se almacena utilizando las mismas estructuras (encabezado y registros) que un shapefile , pero como solo almacena los valores de visibilidad de los triángulos, se utilizan muchos campos del encabezado.
El encabezado del archivo tiene una longitud fija de 100 bytes y contiene 17 campos; nueve campos enteros de 4 bytes (enteros con signo de 32 bits o int32) seguidos de ocho campos de punto flotante con signo de 8 bytes ( doble ):
El archivo contiene al menos dos registros. Cada registro tiene como prefijo un encabezado de registro de 8 bytes:
Después del encabezado del registro se encuentran los datos reales.
Registro 1: Los datos del registro número 1 tienen una longitud de 2 palabras y contienen solo el tamaño de los datos del registro número 2 en números enteros de 4 bytes, almacenados como un número entero de 4 bytes (big-endian).
Registro 2: Los datos del registro número 2 contienen la siguiente estructura de longitud variable:
El bit 0 (bit menos significativo) del primer entero contiene el indicador de visibilidad (invisible si se establece en 1) del primer triángulo definido en tnod.adf. El bit 1 del primer entero contiene el indicador de visibilidad (invisible si se establece en 1) del segundo triángulo, y así sucesivamente. Se utilizan los 32 bits de los enteros (sin bit de signo).
Registro 0: Los registros con el número de registro 0 deben ignorarse.
El archivo de índice contiene el mismo encabezado de 100 bytes que el tmsk.adfarchivo, seguido de cualquier cantidad de registros de longitud fija de 8 bytes que constan de los siguientes dos campos:
Con este índice, es posible buscar hacia atrás en el tmsk.adfarchivo, primero buscando hacia atrás en el índice (lo cual es posible porque utiliza registros de longitud fija), luego leyendo el desplazamiento del registro y utilizando ese desplazamiento para buscar la posición correcta en el tmsk.adfarchivo. También es posible buscar hacia adelante una cantidad arbitraria de registros utilizando el mismo método.
Dependiendo de la información almacenada en el TIN, se necesitan algunos archivos adicionales.
Contiene el sistema de coordenadas y la información de proyección. El archivo puede tener el formato de representación de texto de sistemas de referencia de coordenadas (WKT) de Esri , una notación simple de valor de palabra clave (Palabra clave: , , , , , , , , ...) o una sola línea , que indica un sistema de coordenadas desconocido.ProjectionDatumSpheroidUnitsZunitsXshiftYshiftZone{B286C06B-0879-11D2-AACA-00C04FA33C20}
Contiene una matriz de 24 bytes de datos grandes, uno para cada etiqueta utilizada. El conjunto de datos contiene la etiqueta y la cantidad de puntos con esa etiqueta. Cada conjunto de datos está estructurado de la siguiente manera:
Contiene una matriz de valores enteros de 4 bytes, uno para cada punto (etiquetado) del TIN. Los valores se almacenan en orden de bytes little-endian. Los superpuntos tienen el valor 0(cero). Los puntos sin etiqueta (por ejemplo, puntos agregados por bordes de ruptura) deben almacenarse al final del TIN y no tienen una entrada en este archivo.
Desde ArcGIS 10 hubo algunos cambios en el formato de archivo TIN. Se conservaron 2 archivos nuevos ( teval.dbfy ) y 1 archivo .tnodinfo.dbf
La estructura del archivo sigue siendo la misma, sólo se utiliza adicionalmente el campo que contiene el número de bordes de ruptura.
Contiene una matriz de valores enteros de 2 bytes. Uno shortpara cada punto. El propósito aún no se conoce públicamente. Hasta ahora parece ser algún tipo de máscara de bits o código que describe el uso del punto. Los valores parecen almacenarse en orden de bytes big-endian.
Contiene una matriz de conjuntos de datos que definen los bordes de ruptura del TIN, dos para cada borde de ruptura (uno para cada dirección). Cada conjunto de datos tiene una longitud de 16 bytes y está estructurado de la siguiente manera:
Desde ArcGIS 10, este archivo ha cambiado un poco. Todavía contiene un conjunto de datos para cada triángulo y las referencias/índices de los bordes regulares no han cambiado, pero la codificación de los bordes de ruptura es diferente. Los bordes de ruptura todavía se marcan con valores negativos, pero el índice ya no apunta a la posición del archivo en tnod.dbfy tedg.dbf, en su lugar, el valor absoluto del valor es el número de la entrada del borde de ruptura en teval.dbf. La codificación de los bordes suaves también se ha trasladado a teval.dbf.
En este artículo, el término "superpunto" se utiliza en varios lugares. En ausencia de una descripción oficial del formato de archivo, se eligió este término para reflejar las propiedades de estos puntos. (También podrían haber sido llamados "metapunto", "extrapunto", "punto infinito" y muchos más). Un superpunto en el contexto del formato de archivo TIN de Esri es un punto adicional agregado por el software ArcGIS durante la triangulación/generación del TIN. ArcGIS generalmente agrega 4 de estos puntos, uno al oeste, norte, este y sur de los puntos TIN regulares, a distancias extremadamente altas. Los superpuntos suelen ser los primeros puntos en los archivos de puntos tnxy.adfy tnz.adf. Los triángulos que se construyen con estos puntos generalmente están enmascarados (se vuelven invisibles) en el tmsk.adfarchivo.