TINs in ArcGIS aus dreieckigen Elementen erstellen?


8

Ich arbeite mit FEM- Modellen (Finite-Elemente-Methode) mit dreieckigen Elementen und möchte die Ergebnisse als TIN-Flächen in ArcGIS (und in ArcScene) anzeigen. In meiner externen Quelle habe ich Knoten (mit X-, Y-, Z-Koordinaten) und Elemente (die aus drei Knoten ein Dreieck bilden), die die Grundlagen einer TIN bilden. Wie kann ich diese in ArcGIS zusammenführen, um meine dreieckigen Elemente in eine neue TIN-Oberfläche zu konvertieren? Dies sollte idealerweise eine 1: 1-Konvertierung sein, aber die Dokumentation hilft mir nicht.

Hier ist ein illustriertes Beispiel für die Daten, die ich habe:

Einfache 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

Ich verwende derzeit ArcGIS 9.3 mit der 3D Analyst-Erweiterung (unter anderem) und möchte einige Hinweise für eine Lösung für Python oder VBA.


Alternativer Ansatz : Die Rohdaten -> Esri TIN-Konvertierung sieht nicht sehr einfach aus, und ich kann die API für 3D Analyst nicht auf den Kopf stellen, daher halte ich die Python / VBA-Lösung zurück.

Ich habe die gleichen Daten in einem Shapefile dargestellt, in dem alle Features dreieckige PolygonZM-Formen sind und die Eckpunkte das Höhenfeld haben. (Wenn Sie fragen, wurde dieses Shapefile mit OGR über Python aus dem ursprünglichen Datensatz erstellt, der ähnlich wie oben aufgebaut ist.) Das Anzeigen dieser Datei in ArcScene ist sehr, sehr langsam, da das Shapefile ~ 100.000 dreieckige Polygone enthält. Dieses PolygonZM-Shapefile sollte idealerweise Dreieck für Dreieck in einen TIN-Datensatz konvertieren. Ich habe die Daten, daher ist eine Interpretation oder Interpolation nicht erwünscht!

Wie kann ich dieses PolygonZM-Shapefile (siehe Abbildung unten) in eine TIN konvertieren? In ArcScene gibt es im Menü "3D Analyst" das Tool "TIN aus Features erstellen", aber ich verstehe die Sprache "Softclip" usw. nicht. Der Dialog bietet keine Hilfe.

ArcScene: TIN aus Features erstellen


LandXML

Es stellt sich heraus, dass LandXML das beste Format ist, dank der entsprechenden Antworten unten. Im obigen Beispiel sieht die Datei folgendermaßen aus (Hinweis: Die Koordinatenreihenfolge ist 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>

Verwenden Sie dann das LandXMLToTin_3d-Tool, um das Ergebnis in eine Esri-TIN-Datei zu verarbeiten:

Resultierende TIN

Antworten:


3

Die einzige Möglichkeit, ein Dreiecksnetz mit der vorhandenen Topologie in ArcGIS zu erhalten, war die Verwendung der arcpy.LandXMLToTin_3dFunktion. Es ist ein bisschen verrückt, eine LandXML-Datei schreiben zu müssen, um Ihre TIN in Arc zu bekommen, aber es funktioniert. Hier ist eine Python Toolbox für ArcGIS10.1, die über ein Ozeanmodell auf Daten in einem Dreiecksnetz zugreift und diese als TIN in ArcGIS einbringt. https://github.com/rsignell-usgs/dap2arc/blob/master/dap2tin.pyt Wir haben ESRI darüber informiert, dass eine große Verbesserung darin besteht, eine TIN direkt mit arcpy instanziieren zu können.


3

Wenn Features zu einem TIN hinzugefügt werden, muss es eine Möglichkeit geben, zu definieren, woher ihre Höhen stammen. Wenn Sie 3D-Features eingeben, können Sie das Feld Form als Höhenquelle angeben. Dies zeigt an, dass die Z-Werte direkt aus der Feature-Geometrie übernommen werden. Beim Hinzufügen von 2D-Features können Sie auf ein numerisches Feld verweisen. Sie können auch Keine angeben. In diesem Fall werden die Höhen der Features zuerst aus der TIN interpoliert, bevor sie hinzugefügt werden. Dies erfordert, dass einige Funktionen zum TIN ohne die Option Keine hinzugefügt werden, sodass einige Höhen zum Interpolieren verfügbar sind.

Abgrenzung des TIN-Datenbereichs (3D-Analyst) http://help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#/Delineate_TIN_Data_Area/00q900000087000000/

Methode (optional) Die Methode, die bei der Verarbeitung von Dreiecken verwendet wird. PERIMETER_ONLY durchläuft Dreiecke von der äußeren Ausdehnung der TIN nach innen und stoppt, wenn die aktuelle Iteration der Grenzdreieckskanten die maximale Kantenlänge nicht überschreitet . ALL klassifiziert die gesamte Sammlung von TIN-Dreiecken nach Kantenlänge. Der Standardwert ist PERIMETER_ONLY.


"TIN-Datenbereich abgrenzen" erfordert eine TIN ... Ich habe keine TIN
Mike T

1

Ich habe genau dieses Problem bezüglich der Unfähigkeit, TIN-Informationen direkt zu importieren, festgestellt. Soweit ich das beurteilen kann, ist der LandXML-Ansatz die einzige native Importfunktion, die die vorhandene Dreieckskonnektivität beibehält. Glücklicherweise ist das LandXML-Schema für die meisten Probleme nicht zu kompliziert. Leider wird das LandXML-Projekt nicht mehr unterstützt und die Website ist nicht mehr verfügbar. Es gibt Beispieldateien, die das LandXML-Format im Web zeigen, aber hoffentlich wird ESRI dies in einem Update beheben.

UPDATE: Ich habe Kontakt mit einem ESRI-Vertreter aufgenommen und er hat ihn die Kette hochgeschickt. Wenn genug Leute sie darüber nerven, wird es vielleicht angesprochen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.