Criando TINs no ArcGIS a partir de elementos triangulares?

8

Estou trabalhando com modelos de método de elementos finitos (FEM) com elementos triangulares e gostaria de ver os resultados como superfícies TIN no ArcGIS (e no ArcScene). Na minha fonte externa, tenho nós (com cordas X, Y, Z) e elementos (formando um triângulo a partir de três nós), que são os fundamentos de um NIF. Como reuni-los no ArcGIS para converter meus elementos triangulares em uma nova superfície TIN? Idealmente, isso deve ser uma conversão de 1: 1, mas a documentação não está me ajudando.

Aqui está um exemplo ilustrado dos dados que tenho:

Simple TIN

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

Atualmente, estou usando o ArcGIS 9.3 com a extensão 3D Analyst (entre outros) e gostaria de algumas dicas para uma solução direcionada para Python ou VBA.


Abordagem alternativa : a conversão de dados brutos -> Esri TIN não parece muito fácil, e eu não consigo entender a API do 3D Analyst, por isso vou segurar a solução Python / VBA.

Eu tenho os mesmos dados representados em um Shapefile, onde todos os recursos são formas triangulares PolygonZM e os vértices têm o campo de altura. (Se você perguntar, este Shapefile foi criado usando OGR via Python a partir do conjunto de dados original estruturado da mesma forma que acima). A visualização desse arquivo no ArcScene é realmente muito lenta, pois tenho ~ 100k polígonos triangulares no Shapefile. Idealmente, este Shapefile do PolygonZM deve converter triângulo a triângulo em um conjunto de dados TIN. Eu tenho os dados, então não é necessária interpretação ou interpolação!

Então, como posso converter esse arquivo de forma do PolygonZM (foto abaixo) em um TIN? No ArcScene, no menu "3D Analyst", existe a ferramenta "Create TIN From Features", mas eu não entendo o idioma "soft clip" etc. A caixa de diálogo não fornece ajuda.

ArcScene: Criar TIN a partir de Recursos


LandXML

Acontece que o melhor formato é o LandXML, graças às respostas relacionadas abaixo. Para o exemplo acima, o arquivo se parece com isso (nota: a ordem das coordenadas é 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>

Em seguida, use a ferramenta LandXMLToTin_3d para processar o resultado em um arquivo Esri TIN:

NIF resultante

Mike T
fonte

Respostas:

3

A única maneira de encontrar uma malha triangular com a topologia existente no ArcGIS era usar a arcpy.LandXMLToTin_3dfunção É um pouco louco ter que escrever um arquivo LandXML apenas para colocar seu TIN no Arc, mas funciona. Aqui está uma Python Toolbox for ArcGIS10.1 que acessa dados em uma malha triangular a partir de um modelo oceânico e os traz para o ArcGIS como um NIF. https://github.com/rsignell-usgs/dap2arc/blob/master/dap2tin.pyt Informamos à ESRI que um grande aprimoramento seria a capacidade de instanciar um TIN diretamente usando o arcpy.

Rich Signell
fonte
3

Quando os recursos são adicionados a um NIF, é necessário que haja uma maneira de definir de onde vêm suas alturas. Se você estiver inserindo recursos 3D, poderá especificar o campo Forma como a origem da altura. Isso indica que os valores z serão obtidos diretamente da geometria do recurso. Ao adicionar recursos 2D, você pode fazer referência a um campo numérico. Você também pode especificar Nenhum. Nesse caso, os recursos primeiro terão suas alturas interpoladas do TIN antes de serem adicionados a ele. Isso requer que alguns recursos sejam adicionados ao TIN sem a opção Nenhum, portanto haverá algumas alturas disponíveis para interpolar.

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

Método (opcional) O método usado ao processar triângulos. PERIMETER_ONLY iterará através dos triângulos da extensão externa do TIN para dentro e parará quando a iteração atual das arestas do triângulo limite não exceder o comprimento máximo da aresta . A ALL classificará toda a coleção de triângulos TIN pelo comprimento da borda. O padrão é PERIMETER_ONLY.

Mapperz
fonte
"Delinear TIN Área de dados" requer um TIN ... Eu não tenho um TIN
Mike T
1

Eu encontrei esse problema exato em relação à incapacidade de importar informações TIN diretamente. Tanto quanto posso dizer, a abordagem LandXML é a única função de importação nativa que preservará a conectividade existente do triângulo. Felizmente, o esquema LandXML não é muito complicado para a maioria dos problemas. Infelizmente, o projeto LandXML não está mais sendo suportado e o site está desativado. Existem exemplos de arquivos mostrando o formato LandXML na Web, mas esperamos que a ESRI resolva isso em uma atualização.

ATUALIZAÇÃO: Estive em contato com um representante da ESRI e ele a enviou para a cadeia. Se um número suficiente de pessoas os incomodar com isso, talvez isso seja resolvido.

DWAHL
fonte