# Tool um mehrere xtf (mit gleichem Model) in eine xtf Datei zu mergen?

**URL:** <https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268>\
**Category:** INTERLIS Werkzeuge\
**Created:** [17. April 2024 um 07:03 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268 "2024-04-17T07:03:23Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![gritibaenz](https://avatars.discourse-cdn.com/v4/letter/g/8797f3/32.png) [@gritibaenz](https://interlis.discourse.group/u/gritibaenz)\
**Post date:** [17. April 2024 um 07:03 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/1 "2024-04-17T07:03:23Z")

</div>

Guten Tag,

ich bin auf der Suche nach einem Tool, mit dem sich mehrere xtf Dateien (gleiches Interlis Modell) in eine gemeinsame xtf Datei zusammenfassen lassen.

- bei infogrips gibt es **itfcopy**. dies scheint jedoch lediglich mit .itf Dateien zu funktionieren
- Eine Suche ergab noch Hinweise auf ein „Interlis Toolbox Paket“ mit dem Programm **ilmerge**. Nur leider kann ich dieses Programm auch nach weiterer Suche nicht finden.

Anwendungsfall LKMap Zürich, eine Versorgung/Unternehmung beauftragt in Ihrem Versorgungsgebiet mehrere Unternehmungen ein Medium nachzuführen. Die Abgabe an den Kanton muss jedoch (nach meinem derzeitigen Wissenstand) in **einer** Datei (pro Medium) erfolgen.

Danke für Hinweise!  
Adrian

---

<div class="post-metadata">

**Author:** ![ThomasMarti](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/thomasmarti/32/73_2.png) [@ThomasMarti](https://interlis.discourse.group/u/ThomasMarti)\
**Post date:** [17. April 2024 um 08:16 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/2 "2024-04-17T08:16:16Z")

</div>

Ich habe für diesen Zweck alle xtf in eine Datenbank geschrieben und dann von der DB wieder in eine XTF.  
Dazu kannst du die Interlis-Tools verwenden (z.b. ili2gpkg) und mittels Batch alle xtf aus einem Verzeichnis automatisiert einlesen und anschliessend exportieren.

Tools: [Index of / (interlis.ch)](https://downloads.interlis.ch/)

Wichtig dabei ist aber, dass sich die Datenlieferanten an die eindeutigen IDs halten. Dies war bei mir leider nicht immer der Fall.

---

<div class="post-metadata">

**Author:** ![gritibaenz](https://avatars.discourse-cdn.com/v4/letter/g/8797f3/32.png) [@gritibaenz](https://interlis.discourse.group/u/gritibaenz)\
**Post date:** [17. April 2024 um 12:54 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/3 "2024-04-17T12:54:23Z")

</div>

Vielen Dank für den Lösungsvorschlag!

Offenbar gibt es eine noch einfachere Lösung:

`WSL bash: /mnt/c/temp/iltemp$ cat che*.xtf >> file_merged.xtf`

Nach ersten Tests mit ilivalidator scheint dies zu funktionieren …

---

<div class="post-metadata">

**Author:** ![ThomasMarti](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/thomasmarti/32/73_2.png) [@ThomasMarti](https://interlis.discourse.group/u/ThomasMarti)\
**Post date:** [17. April 2024 um 14:03 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/4 "2024-04-17T14:03:39Z")

</div>

Es erstaunt mich, dass dies funktioniert. Dabei werden doch die Inhalte der Dateien in eine neue Datei kopiert, also inklusive dem Header. Aber der Header sollte doch in einer Interlis-Datei nur einmal vorkommen.

Naja, wenn es klappt, dann ist es ja gut.

Dasselbe gibt es übrigens auch in DOS:

```auto
copy *.xtf alleDateien.xtf

```

---

<div class="post-metadata">

**Author:** ![gritibaenz](https://avatars.discourse-cdn.com/v4/letter/g/8797f3/32.png) [@gritibaenz](https://interlis.discourse.group/u/gritibaenz)\
**Post date:** [17. April 2024 um 16:38 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/6 "2024-04-17T16:38:32Z")

</div>

Das schlichte mergen von xtf-Dateien scheint doch nicht richtig zu funktionieren (aufgrund der resultierenden Anzahl Elemente).  
👉 der Ansatz von Thomas Marti via ili2gpkg erscheint doch erfolgversprechender.

---

<div class="post-metadata">

**Author:** ![Peter2](https://avatars.discourse-cdn.com/v4/letter/p/d2c977/32.png) [@Peter2](https://interlis.discourse.group/u/Peter2)\
**Post date:** [29. April 2024 um 10:08 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/7 "2024-04-29T10:08:23Z")

</div>

Ich möchte das Thema nochmals aufgreifen; vielleicht ergibt sich hier eine Art „best-practice“.

Ich habe jetzt ein paar Kombinationen der LKMap-Dateien A und B ausprobiert, eindeutig sinnlose und fehlleitende und (anscheinend) richtige, geprüft mit ilivalidator. Erstellt mit Copy&Paste in UltraEdit; Ziel ist natürlich XSLT …

a) vollständiges mergen (Datei a plus Datei b):  
Ergibt zwei vollständige Dateien mit zwei XML-Deklarationen in einer; ilival prüft nur die erste und ist zufrieden.

b) vollständiges mergen, aber händisches Löschen der zweiten Deklaration:  
Validierung wie a)

c) Inhalt der Datasection A mit Inhalt der Datasection B ergänzen:  
Alles wird geprüft; die Basket-ID ist gleich und die Validierung scheitert.

d) Inhalt der Datasection A mit Inhalt der Datasection B ergänzen und eine Basket-ID ändern  
Alles wird geprüft; die Validierung zeigt zwei Baskets und ist erfolgreich.

e) Inhalt des Basket A mit Inhalt des Basket B ergänzen  
Alles wird geprüft; die Validierung ist erfolgreich.

Somit scheiden a) und b) aus, weil die (falsche) Datenstruktur den Ilivalidator täuscht.  
c) ergibt falsches Ergebnis, d) erfordert Handarbeit …

Bleibt Lösung e)

Bleibt die Frage: Ist das auch zulässig - technisch und formell? Oder produziert man da Datenmüll der Extraklasse?

---

<div class="post-metadata">

**Author:** ![beistehen](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/beistehen/32/7_2.png) [@beistehen](https://interlis.discourse.group/u/beistehen)\
**Post date:** [29. April 2024 um 10:57 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/8 "2024-04-29T10:57:27Z")

</div>

Gemäss Referenzhandbuch (für INTERLIS 2.3, worum es hier vermutlich geht), besteht eine Transferdatei aus einer HeaderSection und einer DataSection:

 ![grafik](https://global.discourse-cdn.com/free1/uploads/interlis/original/1X/bc002f8b018923e1da7c7dcdebd8fa098c469cec.png)

Die DataSection kann keinen, einen oder mehrere Behälter (Basket) enthalten:

![grafik](https://global.discourse-cdn.com/free1/uploads/interlis/original/1X/eeb6fd3571edef50ee7607e95a08eb15b2a6f573.png)

Es ist also nicht vorgesehen, mehrere DataSections in 1 Datei unterzubringen. Alle zusätzlichen DataSections werden von ilivalidator zurecht ignoriert, wie deine Tests zeigen.

Was hingegen möglich ist, ist, mehrere Behälter in der DataSection unterzubringen (wie oben in Kapitel 3.3.5 beschrieben). In Behältern werden die Inhalte von TOPICs transferiert.

Damit man sich nicht mit der Thematik des Transferformates herumschlagen muss, würde ich aber wärmstens die von @ThomasMarti propagierte Methode empfehlen: Nämlich das Einlesen der einzelnen Transferdatensätze in eine Datenbank oder ein Datenbankformat (mit ili2db) und anschliessend die Zusammenführung in der Datenbank. Das hat den Vorteil, dass die Daten vor dem Export noch in der DB validiert werden können. Und der Export liefert auf jeden Fall ein gültiges Transferformat; auch mit mehreren Baskes, falls gewünscht.

Damit kann man sich auch die Einarbeitung in XSLT sparen (und die gewonnene Zeit für die Einarbeitung in ili2db und SQL nutzen… 😉)

---

<div class="post-metadata">

**Author:** ![edigonzales](https://yyz2.discourse-cdn.com/free1/user_avatar/interlis.discourse.group/edigonzales/32/4_2.png) [@edigonzales](https://interlis.discourse.group/u/edigonzales)\
**Post date:** [29. April 2024 um 11:47 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/9 "2024-04-29T11:47:00Z")

</div>

e) Löst das Problem auch nicht immer. Du musst dich auch um die Eindeutigkeit der TID im Transfer kümmern? Oder gilt die nur für Baskets? @beistehen

Bisschen schade ist, dass das Importieren und Exportieren in eine DB die relativ teure Geometriebildung beinhaltet (also von XTF nach Simplefeature) inkl. Overlapbereinigung. Es ist also mehr als bloss ein Mergen.

---

<div class="post-metadata">

**Author:** ![ceis](https://avatars.discourse-cdn.com/v4/letter/c/57b2e6/32.png) [@ceis](https://interlis.discourse.group/u/ceis)\
**Post date:** [8. Mai 2024 um 09:51 UTC](https://interlis.discourse.group/t/tool-um-mehrere-xtf-mit-gleichem-model-in-eine-xtf-datei-zu-mergen/268/10 "2024-05-08T09:51:46Z")

</div>

Das mit der Eindeutigkeit der TIDs sollte via ili2db kein Problem sein.

Entweder sind sie gem. Modell schon global eindeutig (=OID bei allen Klassen und Topics).

Oder sie sind transient (kein OID bei Klasse und/oder Topic). Dann werden sie beim import durch ili2db eindeutig gemacht (in dem für jedes Objekt eine neue id generiert wird (Spalte t\_id)), die beim export dann als TID verwendet wird.
