Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am working with FEM models with triangular elements, and I'd like to view the results as TIN surfaces in ArcGIS (and in ArcScene). In my external source, I have nodes (with X,Y,Z coords) and elements (forming a triangle from three nodes), which are the fundamentals of a TIN. How can I bring these together in ArcGIS to convert my triangular elements into a new TIN surface? This should ideally be a 1:1 conversion, but the documentation isn't helping me.

Here is an illustrated example of the data I have:

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

I'm currently using ArcGIS 9.3 with the 3D Analyst Extension (among others), and would like some hints for a solution targeted for either Python or VBA.


Alternative approach: The raw data -> Esri TIN conversion doesn't look very easy, and I can't make heads or tails of the API for 3D Analyst, so I'll hold the Python/VBA solution off.

I have the same data represented in a Shapefile where all features are triangular PolygonZM shapes and the vertices have the height-field. (If you ask, this Shapefile was made using OGR via Python from the original dataset structured similarly as above). Viewing this file in ArcScene is really really slow, as I have ~100k triangular polygons in the Shapefile. This PolygonZM Shapefile should ideally convert triangle-by-triangle to a TIN dataset. I have the data, so interpretation or interpolation is not wanted!

So, how can I convert this PolygonZM Shapefile (pictured below) into a TIN? In ArcScene, in the "3D Analyst" menu, there is a "Create TIN From Features" tool, but I don't understand the language "soft clip" etc. The dialog provides no help.

ArcScene: Create TIN From Features


LandXML

It turns out the best format is LandXML, thanks to the related answers below. For the example above, the file looks like this (note: the coordinate order is Y X Z):

<?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>

Then use the LandXMLToTin_3d tool to process the result to an Esri TIN file:

Resulting TIN

share|improve this question

3 Answers 3

up vote 2 down vote accepted

The only way we found to get a triangular mesh with existing topology into ArcGIS was to use the arcpy.LandXMLToTin_3d function. It's a bit crazy to have to write out a LandXML file just to get your TIN into Arc, but it works. Here is a Python Toolbox for ArcGIS10.1 that accesses data on a triangular mesh from an ocean model, and brings it into ArcGIS as a TIN. https://github.com/rsignell-usgs/dap2arc/blob/master/dap2tin.pyt We've let ESRI know that a great enhancement would be to be able to instantiate a TIN directly using arcpy.

share|improve this answer
    
This round-about method works perfectly, thanks! –  Mike T Apr 23 '13 at 4:25

When features are added to a TIN, there needs to be some way to define where their heights come from. If you are inputting 3D features, you can specify the Shape field as the height source. This indicates the z-values will be taken directly from the feature geometry. When adding 2D features, you can reference a numeric field. You can also specify None, in which case the features will first have their heights interpolated from the TIN before being added to it. This requires that some features be added to the TIN without the None option, so there will be some heights available to interpolate from.

Delineate TIN Data Area (3D Analyst) http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Delineate_TIN_Data_Area/00q900000087000000/

Method (optional) The method used when processing triangles. PERIMETER_ONLY will iterate through triangles from the TIN's outer extent inward and will stop when the current iteration of boundary triangle edges don't exceed the Maximum Edge Length. ALL will classify the entire collection of TIN triangles by edge length. The default is PERIMETER_ONLY.

share|improve this answer
    
"Delineate TIN Data Area" requires a TIN ... I don't have a TIN –  Mike T May 26 '11 at 4:32

I have encountered this exact issue regarding the inability to import TIN information directly. As far as I can tell the LandXML approach is the only native import function that will preserve existing triangle connectivity. Fortunately, the LandXML schema is not too complicated for most problems. Unfortunately, the LandXML project is no longer being supported and the website is defunct. There are example files showing LandXML format on the web, but hopefully ESRI will address this in an update.

UPDATE: I have been in contact with an ESRI representative and he has sent it up the chain. If enough people bug them about this, perhaps it will get addressed.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.