Ili2fgdb: Domains und Relationship Classes

Ich habe ein wenig Liebe in ili2fgdb reingesteckt und rausgekommen ist die Unterstützung von Domains und Relationship Classes. Anbei eine beispielhafte FileGeodatabase basierend auf dem Datenmodell SO_AFU_ABBAUSTELLEN_20210630 • INTERLIS Model Finder • Kanton Solothurn Leider habe ich kein ArcGIS Pro o.ä. bei mir. Könnte jemand die FGDB auf Herz und Nieren testen?

abbaustellen.gdb.zip (84,7 KB)

Stefan

Toll. Danke für deinen Effort! Wir haben ArcGIS Pro im Einsatz und ich kann mir (falls dies nicht bereits geschehen ist) die fGDB anschauen.

sehr cool, danke schonmal! Hab die FGDB kurz geprüft, zwei Dinge sind mir aufgefallen:

  • INTERLIS_BOOLEAN hat den FieldType ‘Text’ statt ‘Long’ der von ILI2GDB für BOOLEAN verwendet wird
  • Attribute-Länge bei Typ ‘Text’ und NOT NULL Constraint bei MANDATORY werden nicht übernommen (vermutlich aber nicht durch deine Anpassungen bedingt?)

Weisst du btw was mit:

### Support Datentyp BOOLEAN ![](https://img.shields.io/badge/Prio1-red.svg?style=flat)

geht gar nicht! 
siehe: https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/overview/an-overview-of-attribute-domains.htm

gemeint ist? Siehe Master-Issue auf Github. Boolean-Werte gibt es schon in FGDB aber nicht als Domain? Und was würde mans sich wünschen wie INTERLIS.BOOLEAN abgebildet wird?

Und was würde mans sich wünschen wie INTERLIS.BOOLEAN abgebildet wird?

Würde sagen, typischerweise Integer-Attribut mit Coded Value Domain [0, 1].

Und, jein – FGDB hat keine Boolean-Domains, denn: FGDB hat keinen Boolean field data type: ArcGIS Field Data Types. Vgl. auch https://community.esri.com/t5/data-management-ideas/add-a-boolean-field-type-to-personal-and-file/idc-p/1377935/highlight/true#M2337 (Kommentar Marcelo Marques).

(Hier noch der Link auf den von @edigonzales erwähnten “Master-Issue auf Github” bzw. das Readme, aus dem @edigonzales oben zitiert, falls jemand sucht: ili2fgdb Master-Issue und Readme.MD)

Bei File Geodatabase kenne ich aus der Praxis auch so wie @rsm es beschreibt. Coded Value Domain (Short Integer), 0=False, 1=True. Ich hab sie jeweils mit “BooleanDomain” bezeichnet. Es gibt aber leider keinen offiziellen Standard dafür.

Ein erster Wurf von ili2ofgdb gibt es hier: https://jars.sogeo.services/snapshots/ch/interlis/ili2ofgdb/5.5.2-SNAPSHOT/ili2ofgdb-5.5.2-20260227.145503-10-bindist.zip Es läuft nur mit Java 25.

Fast alle Tests von ili2db laufen durch, wobei ich nicht weiss, ob ich einige dahingehend verändert habe, dass sie nichts Sinnvolles mehr testen. Das muss man sich noch anschauen.

java -jar ili2ofgdb-5.5.2-SNAPSHOT.jar --defaultSrsCode 2056 --createGeomIdx --fgdbXyResolution 0.0001 --fgdbXyTolerance 0.0001 --fgdbCreateDomains --fgdbCreateRelationshipClasses --dbfile npl_2546.gdb --log npl_2546.log --models SO_ARP_Nutzungsplanung_Publikation_20201005 --doSchemaImport --import npl_2546.xtf

Liefert mir die angehängte FileGeodatabase.

npl_2546.gdb.zip (1,7 MB)

npl_2546.xtf.zip (3,0 MB)

Den Schema- und Datenimport habe ich nicht selbst mit dem ili2fgdb-SNAPSHOT geprüft, sondern deine mitgelieferte fGDB angeschaut. Folgendes ist mir aufgefallen:

  • Alle Domänen und die dazugehörigen zulässigen Werte wurden erstellt.
  • ATTRIBUT Rechtsvorschrift : BOOLEAN; wird mit Datentyp 'Long’ und nicht mehr 'Short’ (ili2fgdb-5.5.1) umgesetzt.
  • MANDATORY-Bedingungen werden nicht als NOT NULL abgebildet (mit ili2fgdb-5.5.1 schon).
  • Feldlängen werden nicht übernommen und Standardwerte (?) erstellt. Dies führte dazu, dass bei der Erstellung der Testobjekte Fehlermeldungen bei der Eingabe von Attributwerten mit Domänen (da Feldlänge 0) entstanden.

https://jars.sogeo.services/snapshots/ch/interlis/ili2ofgdb/5.5.2-SNAPSHOT/ili2ofgdb-5.5.2-20260309.141626-14-bindist.zip

npl_2546.gdb.zip (1,7 MB)

Bitte nochmals testen.

Danke!

  • Alle Domänen und die dazugehörigen zulässigen Werte wurden erstellt. :white_check_mark:

  • ATTRIBUT Rechtsvorschrift : BOOLEAN; wird mit Datentyp 'Long’ und nicht mehr 'Short’ (ili2fgdb-5.5.1) umgesetzt. :white_check_mark:

  • Feldlängen werden nicht übernommen und Standardwerte (?) erstellt. Dies führte dazu, dass bei der Erstellung der Testobjekte Fehlermeldungen bei der Eingabe von Attributwerten mit Domänen (da Feldlänge 0) entstanden. :white_check_mark:

  • MANDATORY-Bedingungen werden nicht als NOT NULL abgebildet (mit ili2fgdb-5.5.1 schon).:cross_mark:

ili2fgdb-5.5.1:

Nächster Versuch:

https://jars.interlis.guru/snapshots/ch/interlis/ili2ofgdb/5.5.2-SNAPSHOT/ili2ofgdb-5.5.2-20260507.170237-17-bindist.zip

npl_2546.gdb.zip (1,7 MB)

Merci @edigonzales!

Mein Senf zum Snapshot 2026-05-07 (nur Stichproben, mit DMAV 1.0 Bodenbedeckung getestet):

:white_check_mark: Coded Value Domain (inkl. Boolean)-Mapping auf Short Integer (ist m.E. korrekt so. Short Integer erlaubt 32,768 Einträge, ich hoffe mal ganz naiv dass niemand je in einem INTERLIS-Modell eine längere Codeliste modelliert :wink:). Bei Referenzen auf andere Objekte macht der Long dann wieder aus Robustheitsgründen Sinn. Ist in der vorliegenden Version m.E. richtig so (DMAV Bodenbedeckung 1.0)

:white_check_mark: MANDATORY → NOT NULL-Mapping passt soweit

:white_check_mark: Feldlängen bei Textfeldern werden korrekt übernommen

image

:construction: Range Domain (numerische Wertebereiche) ist im Gegensatz zur Coded Value Domain noch nicht implementiert