Transformation von DXF Dateien

Fragen, Hinweise und Verbesserungsvorschläge
Benutzeravatar
steffen
Site Admin
Beiträge: 35
Registriert: 22. Mai 2014, 12:36
Kontaktdaten:

Transformation von DXF Dateien

Beitrag von steffen » 21. Januar 2017, 21:11

Es stehen in KooTransSN, KooTransBY, KooTransBW und GeoTKF zwei unterschiedliche Programmmodule für die Konvertierung einer DXF-Datei zur Verfügung.
(1) DXF-Zeichnung (Standard)
(2) DXF Zeichnung (per GDAL)
Die erste Variante ist dabei die zu bevorzugende Variante. Hier werden ausschließlich die Koordinaten verändert, alle anderen Strukturen der DXF bleiben unverändert. Leider gibt es selten verwendete DXF-Strukturen (relative Blöcke), welche bei einer einfachen Koordinatenumwandlung nicht korrekt übernommen werden können.
Extrem verkleinerte Symbolblöcke führen ebenfalls zu Warnungen bzw. zur Empfehlung der 2. Variante sind aber letztendlich auch mit der Standardvariante sauber umsetzbar.

Die GDAL-Variante schreibt die DXF-Datei komplett um und kann somit auch komplexe Strukturen umsetzen. Hier kommt es unter Umstände aber zu Veränderungen der Struktur und der Darstellungsattribute.

Erfahrungen haben gezeigt, dass die erste Variante in 98% der Fälle ein perfektes Ergebnis liefert. Die 2.Variante ist somit nur für die wenigen Fälle in den Variante 1 scheitert zu empfehlen.

Gruß Steffen
Benutzeravatar
steffen
Site Admin
Beiträge: 35
Registriert: 22. Mai 2014, 12:36
Kontaktdaten:

Re: Transformation von DXF Dateien

Beitrag von steffen » 15. April 2019, 19:09

Noch ein paar Hintergrundinfos zum Thema.

Wer hat mal versucht hat ein größeres Rechteck oder Quadrat von GK nach UTM zu konvertieren (z.B. 500m x 500m)?
Dieses ist anschließend ein Trapez und wenn der Mittelmeridian wechselt auch noch verdreht.

Das muss so sein und ist auch korrekt. Für die Transformation selbst ist das aber kein Problem. Jeder Eckpunkt wird konvertiert und alles ist korrekt.

Anders sieht es z.B. bei einem Kreisbogen aus. Dieser wird definiert über einen Kreismittelpunkt und dem Anfangswinkel -Endwinkel. Der Kreismittelpunkt kann dabei bei sehr flachen Bögen schon mal 1000km außerhalb der eigentlichen Karte liegen.
Hier ergibt sich nun ein Problem: Dieser Kreismittelpunkt liegt dann weit außerhalb des Definizionsbereiches der NTv2.

Das ist nur eines der Probleme die auftreten. Ähnlich verhält es sich mit den "lokal verankerten Blöcken". Das können z.B. Schraffuren oder Punktsymbole sein, welche auf 0,0 definiert sind und in der DXF über einen Offset zur richtigen Position verschoben werden.

An einer Schraffur kann man das Problem recht einfach erkennen:
Ein Haus (mit seiner Schraffur) steht genau genordet (im 5. GK-Streifen). Wird dieses Haus nach UTM32 konvertiert ändert sich der Mittelmeridian und damit der Norden. Für die Gebäudeumgrenzung kein Problem, denn jeder Punkt wird separat transformiert. Die Schraffur behält ihren Winkel und wird nur über den Offset verschoben. Damit passt die Schraffur nicht mehr ins Haus.

So und nun zu GDAL:
GDAL hat mit den oben genannten Strukturen kein Problem, denn GDAL hat (nmK.) ein andere Arbeitsweise.

GDAL konvertiert die verschiedensten Vektorformate. Nehmen wir z.B. DXF, Shape und NAS.

Normalerweise müsste man jetzt folgende Konverter programmieren:

DXF nach Shape, Shape nach DXF, DXF nach NAS, NAS nach DXF, Shape nach NAS, NAS nach Shape, DXF nach DXF, NAS nach NAS, Shape nach Shape ......

Das tut sich so keiner an (vor allem wenn es 10-20 Formate sind). Also "erfindet" man ein neutrales Zwischenformat ich nenn es mal "XXX".

Nun brauche ich einen Konverter DXF nach XXX, Shape nach XXX, NAS nach XXX, XXX nach DXF, XXX nach Shape und XXX nach NAS.

Man hat also jetzt den Vorteil, dass man für jedes Format nur eine (bzw. zwei) Schnittstelle braucht.

Der Nachteil (und Vorteil) ist aber das man DXF nach DXF so aufbaut:
DXF --> XXX (transformieren) XXX --> DXF. Damit werden die Kreisbögen, Schraffuren und Blöcke aufgelöst und es gibt kein Transformationsproblem.

So kann dann bei einer Schraffur jede Linie einzeln transformiert werden, das sieht gut aus, aber die Schraffur ist nicht mehr als Ganzes greifbar. Oder aus der Schraffur wird einfach eine Fläche erzeugt. Allerdings sind aber auch die Strukturen zerstört, dh. Symbole (Blöcke) sind u.U. in Einzelteile zerlegt.

Auch muss dieses Zwischenformat alles beherrschen, was auch die DXF beherrscht sonst gehen Daten und Strukturen verloren.

Unser DXF Konverter transformiert nur die Koordinaten und lässt die Strukturen unangetastet. Das hat den Vorteil, dass die Strukturen nach der Transformation absolut identisch sind, aber den Nachteil, dass u.U. Ungenauigkeiten auftreten können.

unsere Programme berechnen vor der eigentlichen Konvertierung den möglichen Fehler der vorgefundenen Strukturen und entscheidet sich dann für die eigene oder die GDAL-Transformation.

Wie das aussieht können Sie an den Testdaten von "Lurchingen" gut sehen (https://www.ldbv.bayern.de/file/zip/137 ... _25832.zip)

UTM32 nach Streifen 3: Keine Drehung die interne DXF-Konvertierung wird genutzt.
UTM32 nach Streifen 4: "...kommt es zu Verschiebungen von bis zu 0.08m ..."
Nutzt man hier die interne Konvertierung können also teilweise Verschiebungen von bis zu 8 cm in Blöcken auftreten: Allerdings in Abhängigkeit vom Blockmaßstab ein "können".

Wählen man an der Stelle die GDAL-Variante kann man in der ZielDXF dann normalerweise Strukturveränderungen wahrnehmen.


Also ein gaaaanz weites Feld :-). Wenn ich also mit AutoCAD arbeite sollte ich möglichst auch mit AutoCAD transformieren.

Habe ich aber kein AutoCAD (oder fehlt mir das Transformationsmodul), dann ist unser Programm genau richtig :) .
Antworten