pitFM Add-on - ALKIS (pitFM_ALKIS.dll)
Es wird ALKIS bis zur Version 7.1.2 unterstützt. Gilt ab Version Add-on-Version 1.1. Ältere Add-on-Versionen unterstützen ausschließlich Version 6.0.x.
Dieses Add-on kann ALKIS-XML-Daten im NAS-Format einlesen und erzeugt daraus für pit benötigte CSV-Dateien.
Für die Konvertierung der Alkis-Daten in CSV-Dateien über die Konsole steht eine Konsolenanwendung zur Verfügung. Diese heißt pitFM_AlkisApp.exe und wird als separate ZIP-Datei zur Verfügung gestellt.
pit Projekte welche dieses Add-on nutzen
- Landesbetrieb Bau- und Liegenschaftsmanagement Sachsen-Anhalt (BLSA)
Technisches
Code-Respository: https://dev.azure.com/pit-cup/pitFM_Addons/_git/pitFM_Alkis
Releaseverzeichnis: X:\FM\AddOns\ALKIS
Zum CSV Format
Als Standard-Separator für die Werte wird das Semikolon ";" verwendet.
Gleitkommazahlen werden immer im englischen Format, eigentlich Sprachunabhängig, in das CSV exportiert. Trenner für 1'000 und größere Zahlen werden nicht exportiert.
Bsp.: 33.99 3344.99 1000000.1
Das Datum wird immer im deutschen Format exportiert. Dabei wird immer das Datum wie auch die Zeit mit führender 0 exportiert.
Bsp.: 21.12.2024 13:10:55
Hinweise
Es kann Probleme mit zu großen ALKIS-XML-Dateien geben. Es konnte bisher mangels großer Testdaten nicht verifiziert werden wie groß die XML-Datei sein darf. Jedoch könnte es sein, dass ab einer Dateigröße von 1GB Abstürze des Add-ons auftreten.
Falls beim Konvertieren von mehreren ALKIS-XML-Dateien Referenzen über verschiedene XMLs existieren, werden diese Referenzen aktuell nicht aufgelöst. XML-Dateien mit solchen Referenzen werden aktuell nicht unterstützt. Das Cachen und Ermitteln der Referenzen ist dafür vorbereitet jedoch werden Querverweise noch nicht unterstützt.
Release Notes
Version 1.2.0 - (ALKIS 6.0.1 - 7.1.2)
- Konsolen Applikation implementiert.
- Fix für den Import mehrerer ALKIS-XMLs erstellt.
Version 1.1.0 - (ALKIS 6.0.1 - 7.1.2)
- ALKIS wird jetzt bis zu Version 7.1.2 unterstützt.
- Auflösen der ALKIS-Referenzen über den XML-DOM wurde durch Caching ersetzt.
- Verwendung von globalen XML-Namespaces wurde entfernt.
- Das Lesen, der ALKIS-XML, ist jetzt Thread-safe.
- Tests für ALKIS 7 hinzugefügt
- Abrufen der XML-Werte wurde mit Extensions vereinfacht.
- Fix für das Schreiben der HTNutzungsarten.csv. Mapping von Flurstück zu TatsächlicheNutzung.
- Performance-Update für N+1-Problem beim Ermitteln der Schnittmenge zwischen Flurstücke und TatsächlichenNutzung. Vortest mit BoundingBoxen statt vollständigem Pfad.
Version 1.0.2 - (ALKIS 6.0.1)
- Tests hinzugefügt
- Code-Refactoring
- Code dem aktuellen Add-on Standard angepasst. (PitFmInterface-Klasse)
- Alkis-Ids werden nicht mehr verändert
- Gleitkommazahlen werden immer im englischen Format in das CSV exportiert. -> 3344.9
- Datum wird immer im deutschen Format in das CSV exportiert. -> 21.12.2024 13:10:55
Version 1.0.0.1 - (ALKIS 6.0.1)
- Überführung des Quellcodes in das Repository. Dies ist die originale Version, welche für das BLSA Projekt erstellt wurde.
Funktionen
Add-on
Es stehen zwei Funktionen zum Einlesen der ALKIS-XML-Dateien bereit. Für Details siehe Summarys.
/// <summary>
/// Liest die übergebene ALKIS-XML-Datei ein und erstellt die CSV Dateien.
/// </summary>
/// <param name="alkisXmlFilePath">Dateipfad zu der ALKIS-Datei.</param>
/// <param name="csvTargetPath">Pfad zum Verzeichnis, in welches die CSV-Dateien geschrieben werden sollen.</param>
public static void AlkisCreateCsvFromXmlFile(string alkisXmlFilePath, string csvTargetPath);
/// <summary>
/// Liest die übergebenen ALKIS-XML-Dateien ein und erstellt die CSV Dateien.
/// </summary>
/// <param name="alkisXmlFilePaths">Separate Dateipfade, zu den ALKIS-Dateien.</param>
/// <param name="csvTargetPath">Pfad zum Verzeichnis, in welches die CSV-Dateien geschrieben werden sollen.</param>
public static void AlkisCreateCsvFromXmlFiles(string[] alkisXmlFilePaths, string csvTargetPath);
Konsolen Applikation
Wenn man die Konsolen-Applikation ohne Parameter startet, wird eine Hilfe angezeigt. Die Konsolen-Applikation unterstützt 2 Eingabeparameter.
Nach dem Parameter -f wird eine oder mehrere Dateien erwartet. Falls die Datei nicht in dem Verzeichnis liegt, muss der Pfad zu der Datei mit angegeben werden.
Nach dem Parameter -t wird das Zielverzeichnis für die erzeugten CSV-Dateien erwartet. Das Zielverzeichnis muss bereits existierten, sonst wird ein Fehler angezeigt.
Nachfolgend ein paar Ausführungsbeispiele:
pitFM_AlkisApp.exe -t Zielverzeichnis -f ALKIS-XML-Dateinamen
pitFM_AlkisApp.exe -t c:\temp\ALKIS-CSV -f alkisFile1.xml
pitFM_AlkisApp.exe -t c:\temp\ALKIS-CSV -f alkisFile1.xml alkisFile2.xml
pitFM_AlkisApp.exe -t ..\ALKIS-CSV -f alkisFile1.xml alkisFile2.xml alkisFile3.xml
Es können auch alle Alkis-Dateien in dem aktuellen Verzeichnis mit der Wildcard *.xml übergeben werden. Wenn diese Wildcard angegeben wird, sucht die Applikation alle xml-Dateien in dem Arbeitsverzeichnis und verwendet diese als Eingabe.
// Zu beachten ist, dass nur *.xml als Eingabe unterstützt wird.
pitFM_AlkisApp.exe -f *.xml -t c:\temp
// NICHT unterstützt wird die Wildcard mit einer Pfadangabe.
pitFM_AlkisApp.exe -f ../*.xml -t c:\temp
pitFM_AlkisApp.exe -f c:\temp\*.xml -t c:\temp