¿Crear TIN en ArcGIS a partir de elementos triangulares?

8

Estoy trabajando con modelos del Método de elementos finitos (FEM) con elementos triangulares, y me gustaría ver los resultados como superficies TIN en ArcGIS (y en ArcScene). En mi fuente externa, tengo nodos (con coordenadas X, Y, Z) y elementos (formando un triángulo a partir de tres nodos), que son los fundamentos de un TIN. ¿Cómo puedo unirlos en ArcGIS para convertir mis elementos triangulares en una nueva superficie TIN? Idealmente, esto debería ser una conversión 1: 1, pero la documentación no me está ayudando.

Aquí hay un ejemplo ilustrado de los datos que tengo:

TIN simple

Nodes: n, X, Y, Z
1, 51.06, 84.98, -7.46
2, 30.45, 80.67, -7.47
3, 44.83, 72.70, 19.46
4, 64.99, 69.91, 61.48
5, 30.33, 63.40, 71.31
6, 46.95, 61.96, 48.44
7, 62.04, 51.97, 82.51
Elements: n1, n2, n3
6, 7, 4
4, 3, 6
3, 5, 6
5, 3, 2
1, 3, 4
2, 3, 1

Actualmente estoy usando ArcGIS 9.3 con la Extensión 3D Analyst (entre otras), y me gustaría obtener algunas sugerencias para una solución dirigida a Python o VBA.


Enfoque alternativo : la conversión de datos en bruto -> Esri TIN no parece muy fácil, y no puedo hacer cara o cruz de la API para 3D Analyst, por lo que mantendré apagada la solución Python / VBA.

Tengo los mismos datos representados en un Shapefile donde todas las entidades son formas triangulares de PolygonZM y los vértices tienen el campo de altura. (Si lo solicita, este Shapefile se creó utilizando OGR a través de Python a partir del conjunto de datos original estructurado de manera similar a la anterior). Ver este archivo en ArcScene es realmente muy lento, ya que tengo ~ 100k polígonos triangulares en el Shapefile. Este archivo de forma PolygonZM idealmente debería convertir triángulo por triángulo en un conjunto de datos TIN. Tengo los datos, por lo que no se necesita interpretación o interpolación.

Entonces, ¿cómo puedo convertir este archivo de forma PolygonZM (en la foto a continuación) en un TIN? En ArcScene, en el menú "3D Analyst", hay una herramienta "Crear TIN a partir de entidades", pero no entiendo el lenguaje "clip suave", etc. El diálogo no proporciona ayuda.

ArcScene: Crear TIN a partir de entidades


LandXML

Resulta que el mejor formato es LandXML, gracias a las respuestas relacionadas a continuación. Para el ejemplo anterior, el archivo se ve así (nota: el orden de coordenadas es YXZ):

<?xml version="1.0" ?>
<LandXML version="1.2" xmlns="http://www.landxml.org/schema/LandXML-1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.landxml.org/schema/LandXML-1.2 http://www.landxml.org/schema/LandXML-1.2/LandXML-1.2.xsd">
  <Surfaces>
    <Surface name="My TIN">
      <Definition surfType="TIN">
        <Pnts>
          <P id="1">84.98 51.06 -7.46</P>
          <P id="2">80.67 30.45 -7.47</P>
          <P id="3">72.70 44.83 19.46</P>
          <P id="4">69.91 64.99 61.48</P>
          <P id="5">63.40 30.33 71.31</P>
          <P id="6">61.96 46.95 48.44</P>
          <P id="7">51.97 62.04 82.51</P>
        </Pnts>
        <Faces>
          <F id="1">6 7 4</F>
          <F id="2">4 3 6</F>
          <F id="3">3 5 6</F>
          <F id="4">5 3 2</F>
          <F id="5">1 3 4</F>
          <F id="6">2 3 1</F>
        </Faces>
      </Definition>
    </Surface>
  </Surfaces>
</LandXML>

Luego use la herramienta LandXMLToTin_3d para procesar el resultado en un archivo TIN de Esri:

TIN resultante

Mike T
fuente

Respuestas:

3

La única forma en que encontramos una malla triangular con topología existente en ArcGIS fue usando la arcpy.LandXMLToTin_3dfunción. Es un poco loco tener que escribir un archivo LandXML solo para obtener su TIN en Arc, pero funciona. Aquí hay una caja de herramientas de Python para ArcGIS10.1 que accede a datos en una malla triangular desde un modelo oceánico y los trae a ArcGIS como un TIN. https://github.com/rsignell-usgs/dap2arc/blob/master/dap2tin.pyt Hemos informado a ESRI que una gran mejora sería poder crear una instancia de TIN directamente utilizando arcpy.

Rich Signell
fuente
3

Cuando se agregan características a un TIN, debe haber alguna forma de definir de dónde provienen sus alturas. Si está ingresando entidades 3D, puede especificar el campo Forma como fuente de altura. Esto indica que los valores z se tomarán directamente de la geometría de la entidad. Al agregar entidades 2D, puede hacer referencia a un campo numérico. También puede especificar Ninguno, en cuyo caso las características tendrán sus alturas interpoladas desde el TIN antes de agregarse a él. Esto requiere que se agreguen algunas características al TIN sin la opción Ninguna, por lo que habrá algunas alturas disponibles para interpolar.

Delinear el área de datos TIN (3D Analyst) http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Delineate_TIN_Data_Area/00q900000087000000/

Método (opcional) El método utilizado al procesar triángulos. PERIMETER_ONLY iterará a través de triángulos desde la extensión externa del TIN hacia adentro y se detendrá cuando la iteración actual de los bordes del triángulo límite no exceda la Longitud máxima del borde . ALL clasificará toda la colección de triángulos TIN por longitud de borde. El valor predeterminado es PERIMETER_ONLY.

Mapperz
fuente
"Delinear área de datos TIN" requiere un TIN ... No tengo un TIN
Mike T
1

He encontrado este problema exacto con respecto a la imposibilidad de importar información TIN directamente. Por lo que puedo decir, el enfoque LandXML es la única función de importación nativa que preservará la conectividad triangular existente. Afortunadamente, el esquema LandXML no es demasiado complicado para la mayoría de los problemas. Desafortunadamente, el proyecto LandXML ya no es compatible y el sitio web no funciona. Hay archivos de ejemplo que muestran el formato LandXML en la web, pero con suerte ESRI lo abordará en una actualización.

ACTUALIZACIÓN: He estado en contacto con un representante de ESRI y él lo ha enviado a la cadena. Si suficientes personas les molestan sobre esto, tal vez se abordará.

DWAHL
fuente