Ist es möglich, 3D-DXF mit OGR zu erstellen?

8

Weiß jemand, ob es möglich ist, mit OGR einen 3D-DXF zu erstellen? Ich möchte den Konturlinien einen Z-Wert zuweisen und sie dann für einige CAD-Arbeiten nach dxf exportieren.

PS. Ich weiß, dass FME dies kann, möchte jedoch versuchen, eine kostenlose Lösung zu finden, und dies nach Möglichkeit in QGIS.

Nathan W.
quelle
Autocad map3d macht das einfach.
Brad Nesom
2
Ja, aber die Autocad-Karte ist nicht wirklich kostenlos
Nathan W

Antworten:

9

Einfacher als ich dachte (danke an BenjaminGolder für den Tipp):

ogr2ogr -f "DXF" Contours.dxf Contours.TAB -zfield Height

Contours.TAB ist die eingegebene MapInfo-Registerkarte.

Nathan W.
quelle
1
Soweit ich das beurteilen kann, funktioniert dies für Konturlinien, jedoch nicht für echte 3D-Linien, die für jeden Punkt eine (x, y, z) -Koordinate und nicht für jeden Punkt der Linie einen z-Wert haben
johanvdw
Ich habe dies in FWTools (2.4.7) ohne Glück versucht. Hat jemand Glück gehabt? Ich bin nicht sicher, ob mir etwas in meiner GDAL fehlt?
Ryan Garnett
3

Der Vollständigkeit halber.

Ich glaube, dies sollte ein Kommentar zur Antwort von Regan sein. Aber da ich nicht genug Ruf habe, lasse ich es als Antwort.

Der DXF-Writer unterstützt 2,5D-Ebenen und sollte bei einer Zeileneingabe einen 3D-Linienstring auf dxf ausgeben.

Bei der Eingabe von POLYGONS müssen Sie vorsichtiger sein, da der Treiber standardmäßig einen dxf HATCH mit einer Polylinie generiert . Und gemäß Formatspezifikation unterstützt diese Linie keine Z-Koordinaten, nur X, Y.

Wenn Sie Polygone eingeben, kann ogr dxf mit 3D-Linestrings exportieren, die diese Polygone darstellen. Dazu müssen Sie die Konfigurationsoption DXF_WRITE_HATCH auf NO setzen.

//Bash
export DXF_WRITE_HATCH=NO
ogr2ogr -f "DXF" Contours.dxf Contours.TAB

//Windows
set NEWVAR=SOMETHING
ogr2ogr -f "DXF" Contours.dxf Contours.TAB

Soweit mir bekannt ist, wird dies nirgendwo dokumentiert oder erklärt, es wurde in Revision 24991 hinzugefügt

kxtells
quelle
1

Ich habe es nie versucht, aber es sollte möglich sein. Der Quellcode für den DXF-Treiber schreibt Z-Werte in dxf, wenn die Geometrie 2,5 D beträgt. Dies entspricht (gemäß der Quelle für den Shapefile-Reader ), wenn die Eingabeform Z-Werte aufweist.

Regan Sarwas
quelle
Das klingt gut. Nächste Frage: Wie erstellen Sie ein Shapefile mit Z-Werten? Angenommen, ich habe eine Spalte mit dem Namen "Höhe". Gibt es eine einfache Möglichkeit, dies als Z-Wert festzulegen?
Nathan W
Vorausgesetzt, das Shapefile ist Z-fähig, können Sie mit ArcGIS einen Codeblock im Feldrechner verwenden. Ich weiß nicht, wie du es in Qgis machen würdest.
Regan Sarwas
1
In der ogr2ogr-Dokumentation scheint es, dass Sie mit dem -zfieldArgument ein 3D-Shapefile erstellen und dann einen Feldnamen angeben können , der z-Werte enthält. gdal.org/ogr2ogr.html
BenjaminGolder
@BenjaminGolder Das hört sich gut an. Ich werde es versuchen.
Nathan W
1

Haben Sie in GRASS den Befehl v.out.dxf ausprobiert? http://grass.osgeo.org/grass64/manuals/html64_user/v.out.dxf.html

markusN
quelle
Ich habe es noch nicht ausprobiert, ich werde es versuchen. Ich hatte auch auf eine QGIS-Option gehofft, aber ich könnte ein Skript erstellen, um es in GRASS zu automatisieren, um es einfacher zu machen.
Nathan W