Workshop Zürich - 14. März 2025







Let’s start …

Was machen wir heute?

–v–

Dave Signer

BSc in IT(SE) @ ZHAW

Software Engineer and Architect

Teacher and Storyteller

–v–

Wer seid ihr?

  • Woher bin ich?
  • Was arbeite ich hauptsächlich?
  • Ich bin Model Baker … :
    • A. … Zero: Was ist Model Baker?
    • B. … User: Hab ich schon mal Projekte erstellt
    • C. … Hero: Schon mit Baskets / Validierung etc. gearbeitet

–v–

Ziele des Workshops

  • INTERLIS Modelle in der Datenbank abbilden und Daten importieren / exportieren / validieren
  • In QGIS mit Behältern und OIDs arbeiten können
  • Wissen was Metaattribute und Vererbungsstrategien etc. sind

–v–

Programm (1)

Zeit Inhalt
09.00 Einführung und Umgebung 🧑‍🏫
10.00 Modell Import 👪
10.30 Metaattribute 🧑‍🏫 💻
11.00 Pause
11.15 Vererbungen und Abbildung 🧑‍🏫 💻
12.00 Zmittag

–v–

Programm (2)

Zeit Inhalt
13.00 Daten Import und Export 👪
Behälter und Datasets 🧑‍🏫 💻
13.45 Erfassung und Validierung 👪 💻
15.15 Pause
15.30 UsabILIty Hub 🧑‍🏫 👪 💻
16.30 Übersetzungsmodelle 🧑‍🏫
16.45 Abschluss, Fragen und Anregungen

–v–

Kurze Einführung…

Was ist Model Baker?

–v–

Ein QGIS Projektgenerator

Schnelles Erstellen eines QGIS-Projekts aus einem physischen Datenmodell.

Analysiert die vorhandene Struktur und konfiguriert ein QGIS-Projekt mit allen verfügbaren Informationen.

–v–

Ein für INTERLIS optimierter QGIS Projektgenerator

In INTERLIS definierte Modelle bieten zusätzliche Metainformationen wie Domänen, Einheiten von Attributen oder objektorientierte Definitionen von Tabellen.

Diese können genutzt werden, um die Projektkonfiguration weiter zu optimieren.

–v–

Eine ili2db Kontrollstation

java -jar /home/dave/dev/opengisch/QgisModelBaker/QgisModelBaker/libili2db/bin/ili2pg-4.6.1/ili2pg-4.6.1.jar --schemaimport --dbhost localhost --dbport 5432 
--dbusr postgres --dbpwd ****** --dbdatabase bakery --dbschema adsfdsaf2 --setupPgExt --coalesceCatalogueRef --createEnumTabs --createNumChecks --createUnique 
--createFk --createFkIdx --coalesceMultiSurface --coalesceMultiLine --coalesceMultiPoint --coalesceArray --beautifyEnumDispName --createGeomIdx --createMetaInfo 
--expandMultilingual --createTypeConstraint --createEnumTabsWithId --createTidCol --importTid --smart2Inheritance --strokeArcs --defaultSrsCode 2056 
--models Wildruhezonen_LV95_V2_1

–v–

Und es ist eine Library

Kann als Framework genutzt werden. So wie Asistente LADM-COL es tut.

… und ist auch als Python Package verfügbar:

pip install modelbaker

Wo finde ich was?

–v–

Code Repositories

QGIS Plugin

https://github.com/opengisch/QgisModelBaker

Code Repository Backend Library

https://github.com/opengisch/QgisModelBakerLibrary

–v–

Bug Reports und Feature Requests

https://github.com/opengisch/QgisModelBaker/issues

  • Nachschauen
  • Erfassen
    • Beschreibung des Problems
    • Zusätzliche Infos
  • Warten oder finanzieren 😉

–v–

Dokumentation

qr-docu

modelbaker.ch

opengisch.github.io/QgisModelBaker

Was wir alles brauchen…

Umgebung

–v–

INTERNET 🛜

Name:

Code: SDS1570

Pad: https://pad.opengis.ch

–v–

QGIS und Datenbanken

  • QGIS 3.34 oder höher
  • PostgreSQL + PostGIS
  • Geopackage möglich

–v–

Extensions mit PgAdmin

  • Extension hinzufügen:
    • postgis
    • uuid-ossp

extensions

–v–

Extensions mit PSQL-Client

$ psql -Upostgres -hlocalhost -dbakery

postgres=# CREATE DATABASE databasename;
 
postgres=# \connect databasename;

databasename=# CREATE EXTENSION postgis;
databasename=# CREATE EXTENSION uuid-ossp;

–v–

Falls es nicht schon installiert ist…

PostGIS Installation

Windows

https://postgis.net/install/

Dort je nach PostgreSQL Verision postgis-bundle-pg14x64-setup-3.3.2-2.exe finden, downloaden und installieren.

Mac

Vorzugsweise posgres.app nutzen (dort ist PostGIS bereits drin) https://postgresapp.com/de/downloads.html

Linux

sudo apt install postgis

–v–

OPENGIS.ch PostgreSQL

Host modelbaker-workshop-exoscale-d9c1bf3f-51a3-4ab8-afac-6cb37d8a8f.e.aivencloud.com
Port 21699
User testbaker
Passwort testbaker
DB bakery

(nur heute aktiv)

Verwende für die Schemas immer als Prefix deinen Namenskürzel:

sigdav_ (für David Signer)

–v–

Java

Habe ich Java installiert?

java --version

… kommt etwas, dann gut ist ☕

Download für Windows / Mac

Hier https://adoptium.net/de/  

Oder in Linux (openJDK)
sudo apt-get install openjdk-18-jre 

or

sudo apt install default-jre

–v–

Demodaten Download

Link: urli.info/WjWu

–v–

Nutzdaten

https://geodienste.ch/

  • Kataster der belasteten Standorte
  • Spezifikation
  • Version 1.5
  • AtomFeed + OpenSearch Download-Dienst
  • Download von SH und TG

–v–

QGIS Model Baker

  • Installiere Model Baker
  • Installiere Swiss Locator

–v–

Ready to go 🚀

Lasst uns beginnen…

Exkurse

… lasst uns abschweifen

–v–

Exkurs 1: Metaattribute

–v–

Was sind Metaattribute?

Metaattribute erlauben eine Ergänzung der INTERLIS-Modelle mit zusätzlichen Angaben, die in der aktuellen Spezifikation von INTERLIS nicht vorgesehen sind.

Siehe eCH-0117 Meta-Attribute für INTERLIS-Modelle

–v–

Beispiel mit Model Baker (1)

Spezifische Display Expression für die Tabelle der Klasse ZustaendigkeitsKataster.

metaattr-dispexp

–v–

Syntax im INTERLIS Modell

!!@<name>=<value>

Gefolgt vom referenzierten Element (MODEL, TOPIC, CLASS etc.)

–v–

Metaattribute vs. Kommentar

Ein Kommentar startet mit !! und endet mit einem Zeilenende.

Ein Metaattribut startet ebenso mit !! aber gefolgt von @

–v–

Beispiel mit Model Baker (2)

Model Baker spezifisches Metaattribut:

!!@qgis.modelbaker.dispExpression='<QGIS Expression>'

–v–

Beispiel mit Model Baker (3)

Definition in Modell KbS_V1_5

MODEL KbS_V1_5 (de) =

  TOPIC Belastete_Standorte =

    !!@qgis.modelbaker.dispExpression = "'Nr: '|| uid ||' / '|| katastername"
    CLASS ZustaendigkeitKataster =
      [...]

metaattr-dispexp

–v–

Listen von Metaattributen

(unvollständig) Siehe auch https://interlis.discourse.group/t/uebersicht-interlis-meta-attribute/70

–v–

Metaattribute im Modell sind toll

Aber wir können doch nicht einfach am Modell rumbasteln!

–v–

Extra Meta Attribute File

… a.k.a. “Konfigfile”, “Metaattributefile”, “INI-File”, “TOML-File”…

Eigentlich im Format INI aber wird meistens als .toml gespeichert.

Nicht zu verwechseln mit Meta-Konfigurationsdatei um ili2db zu “steuern” (auch im Zusammenhang mit UsabILIty Hub).

–v–

Beispiel mit Model Baker

Definition in Konfigurationsdatei für KbS_V1_5

["KbS_V1_5.Belastete_Standorte.ZustaendigketKataster"]

qgis.modelbaker.dispExpression = "'Nr: '|| uid ||' / '||katastername"

metaattr_dispexp

–v–

Validierungen steuern mit Metaattributen

Nur zur Info…

["KbS_V1_5.Standorte.Belasteter_Standort.Nr"]
# disable mandatory constraint of Katasternummer
multiplicity="off"

["KbS_V1_5.Standorte.Belasteter_Standort.Constraint1"]
msg = "Mind. eine Untersuchungsmassnahme erfassen."

–v–

Was brauchen wir für KbS_V1_5?

  • Multigeometrie konstruiert aus STRUCTURE MultiPolygon

  • “Plattgewalzte Mehrsprachigkeit” auf STRUCTURE MultilingualUri

–v–

Das Mapping-Attribut

ili2db.mapping

  • Auf Klasse oder Struktur

    Strukturen werden anstatt mit Beziehungen mit Spalten abgebildet (zBs. Multi-Geometrie).

  • Auf Attribut

    Strukturattribute (BAG OF/LIST OF) werden anstatt mit Beziehungen mit einem Datentyp abgebildet.

–v–

Definition im INTERLIS Modell

!!@ili2db.mapping=MultiSurface
STRUCTURE MultiPolygon =
  Polygones: BAG {1..*} OF PolygonStructure;
END MultiPolygon;

!!@ili2db.mapping=Multilingual
STRUCTURE MultilingualUri =
  LocalisedText : BAG {1..*} OF LocalisedUri;
  UNIQUE (LOCAL) LocalisedText: Language;
    END MultilingualUri;

–v–

Definition im Extra Meta Attribute File

[KbS_V1_5.Belastete_Standorte.MultiPolygon]
ili2db.mapping = "MultiSurface"

[KbS_V1_5.Belastete_Standorte.MultilingualUri]
ili2db.mapping = "Multilingual"

–v–

Ready für Übung 1 🚀

–v–

Exkurs 2.1: Vererbungen in INTERLIS

–v–

Use Case: Arbeiten mit KbS_V1_5

–v–

Use Case: Arbeiten mit Erweiterung

–v–

Einfacheres Beispiel Gebaeudeinventar_V1

MODEL Gebaeudeinventar_V1 (de)
AT "mailto:signedav@localhost"
VERSION "2023-01-19" =
  IMPORTS GeometryCHLV95_V1;

  TOPIC Gebaeude = 

    CLASS Gebaeude =
        EGID : MANDATORY TEXT*16;
        Koordinaten : MANDATORY GeometryCHLV95_V1.Coord2;
    END Gebaeude;

    CLASS Adresse =
        Strasse : TEXT*200;
        Ort : MANDATORY TEXT*200;
    END Adresse;

    ASSOCIATION AdresseGebaeude =
        GebaeudeAdresse -- {1..*} Adresse;
        Gebaeude -- {1} Gebaeude;
    END AdresseGebaeude;

  END Gebaeude;

END Gebaeudeinventar_V1.

–v–

Wir brauchen “mehr”

Müssen für ein Öko-Projekt ein weiteres Attribut verwenden: EntsprichtStandard

Möchten aber dennoch die Daten als Gebaeudeinventar_V1 zurückliefern.

–v–

Use Case: Öko-Projekt

–v–

Wie “vererben” wir?

Erweitern einer Klasse (Basisklasse) in eine “verbesserte” Ableitung.

Eine erweiterte Klasse (Ableitung) hat alle Eigenschaften der Basisklasse + “mehr”.

“mehr” heisst zusätzliche Attribute und Beschränkungen.

–v–

Aus Gebaeude wird ein besseres Gebaeude

inherit-base

–v–

Die Ableitung in INTERLIS (1)

…mit EXTENDED

CLASS Gebaeude =
  EGID : MANDATORY TEXT*16;
  Koordinaten : MANDATORY GeometryCHLV95_V1.Coord2;
END Gebaeude;

 

CLASS Gebaeude (EXTENDED) =
  EntsprichtStandard: BOOLEAN;
END Gebaeude;

–v–

Und schon haben wir es!

–v–

Check it out!

–v–

Doch es gibt aber noch mehr

Wollen wir nun mehrere Arten von Gebäude erfassen:

  • Wohngebäude (mit Anzahl_Wohnungen)
  • Gewerbegebäude (mit Anzahl_Firmen)
  • Öffentliche Gewerbegebäude (mit Anzahl_Firmen und Zweck)

… und dennoch alle schlussendlich als Gebaeude zurückliefern.

–v–

Die Ableitung in INTERLIS (Teil 2)

…mit EXTENDS

CLASS Gebaeude =
  EGID : MANDATORY TEXT*16;
  Koordinaten : MANDATORY GeometryCHLV95_V1.Coord2;
END Gebaeude;

CLASS Gewerbegebaeude
EXTENDS Gebaeude =
  Anzahl_Firmen : MANDATORY 1 .. 100;
END Gewerbegebaeude;

–v–

Beispielmodell MultiGebaeudeinventar_V1

–v–

Die Klassen in INTERLIS

MODEL Gebaeudeinventar_V1 (de) =

  TOPIC Gebaeude = 

    CLASS Gebaeude =
      EGID : MANDATORY TEXT*16;
      Koordinaten : MANDATORY GeometryCHLV95_V1.Coord2;
    END Gebaeude;

    CLASS Adresse =
      Strasse : TEXT*200;
      Ort : MANDATORY TEXT*200;
    END Adresse;

    ASSOCIATION AdresseGebaeude =
      GebaeudeAdresse -- {1..*} Adresse;
      Gebaeude -- {1} Gebaeude;
    END AdresseGebaeude;

  END Gebaeude;

END Gebaeudeinventar_V1.

MODEL MultiGebaeudeinventar_V1 (de) =
  IMPORTS Gebaeudeinventar_V1;

  TOPIC Gebaeude EXTENDS Gebaeudeinventar_V1.Gebaeude= 

    !! First inheritance
    CLASS Wohngebaeude
    EXTENDS Gebaeude =
      Anzahl_Wohnungen : MANDATORY 1 .. 1000;
    END Wohngebaeude;

    !! Second inheritance
    CLASS Gewerbegebaeude
    EXTENDS Gebaeude =
      Anzahl_Firmen : MANDATORY 1 .. 100;
    END Gewerbegebaeude;

    !! Inheritance of first inheritance
    CLASS Oeffentliches_GewerbeGebaude
    EXTENDS Gewerbegebaeude =
      Zweck : MANDATORY TEXT*255;
    END Oeffentliches_GewerbeGebaude;
  END Gebaeude;

END MultiGebaeudeinventar_V1.

–v–

Ready für Übung 2 🚀

–v–

Exkurs 2.2: Physische Abbildung von Vererbungen

–v–

Mal vornweg

Versuchs mal mit Smart2 und wenns nicht gut aussieht mit Smart1.

Zitat: Romedi Filli - 2022

–v–

Vererbungsmapping Strategien

  • New Class
  • Super Class
  • Sub Class
  • New+Sub Class

–v–

Beispielmodell

sample-model

–v–

New Class

Gebaeude.t_type: (
    Wohngebaeude,
    Gewerbegebaeude,
    Oeffentliches_
    Gewerbegebaeude
)
  • Erweiterungen sind mit Beziehungen gemappt
  • NOT NULL Bedingung wird eingehalten
  • Mehrere Imports benötigt pro Objekt

new-class-model

–v–

Beispielmodell

sample-model

–v–

Super Class

Gebaeude.t_type: (
    Wohngebaeude,
    Gewerbegebaeude,
    Oeffentliches_
    Gewerbegebaeude
)
  • Weniger Tabellen und Beziehungen (easy to use)
  • NOT NULL Bedingung wird nicht eingehalten

super-class.png

–v–

Beispielmodell

sample-model

–v–

Sub Class

Oeffentliches_
Gewerbegebaeude.t_type: (
    Gewerbegebaeude,
    Oeffentliches_
    Gewerbegebaeude
)
  • NOT NULL Bedingung wird nicht eingehalten

sub-class.png

–v–

Beispielmodell

sample-model

–v–

New + Sub Class

  • Keine types
  • IMO das erwartete Vorgehen
  • NOT NULL Bedingung wird eingehalten

new-sub-class.png

–v–

Smart Mapping in ili2db

–v–

noSmartMapping

  • Alle Klassen werden mit der New Class Strategie gemappt.

–v–

noSmartMapping

Resultiert in was wir sehen in der New Class Grafik.

new-class-model

–v–

smart1Inheritance

  • Abstrakte Klassen ohne Beziehungen -> Sub Class Strategie
  • Abstrakte Klassen mit Beziehungen und keiner konkreten Super Klasse -> New Class Strategie
  • Konkrete Klassen mit keiner konkreten Super Klasse -> New Class Strategie
  • Alle anderen Klassen -> Super Class Strategie

–v–

smart1Inheritance

Heisst also Gebaeude nutzt New Class und alle andern Super Class Strategie.

Resultiert in was wir sehen in der Super Class Grafik.

super-class

–v–

smart2Inheritance

  • Abstrakte Klassen -> Sub Class Strategie
  • Alle konkreten Klassen -> New + Sub Class Strategie

–v–

smart2Inheritance

Heisst also alle nutzen New+Sub Class Strategie.

Resultiert in was wir sehen in der New+Sub Class Grafik.

new-sub-class

–v–

Zusammengefasst

  • smart 1 ↗️
  • smart 2 ↘️

–v–

Zeit für Übung 2.1? 🚀

–v–

Exkurs 2.3: Projektoptimierung mit Smart2

–v–

Erstellen wir ein Projekt ohne Optimierung

no-opt

…probieren wirs aus mit OekoGebaeudeinventar_V1 (oder auch ZG_Nutzungsplanung_V1_1)

–v–

Problematik

Wenn ein Modell bzw. Topic erweiterte Klassen enthält, werden die inklusive Basisklassen in der physischen Datenbank implementiert…

… und folglich Layer in QGIS erstellt.

–v–

Können wir Basisklassen einfach ignorieren?

–v–

Aber welche Layer wollen wir denn sehen?

  • Basisklassen mit gleichnamigen Erweiterungen sind irrelevant
  • Basisklassen mit mehreren Erweiterungen sind irrelevant
  • Ausser wenn die Erweiterung im gleichen Modell ist, sind sie nicht nicht irrelevant

–v–

Strategien

  • Verstecke irrelevante Basisklassen
  • Gruppiere irrelevante Basisklassen
  • Keine: Layer werden so umbenannt, dass sie eindeutig sind

–v–

Check it out!

–v–

Ready for Zmittag 🍲

–v–

Exkurs 3: Behälter und Datasets

–v–

Datasets

  • Datensätze eines bestimmten räumlichen oder thematischen Bereichs
  • Unabhängig des Modells (im Gegensatz zum Topic)
  • Die Daten eines Datasets können unabhängig von den anderen Daten verwaltet, validiert und exportiert werden.

–v–

Baskets (Behälter)

  • Eine kleinere Instanz
  • Währenddem die Datasets meist das ganze Modell umfassen, sind die Behälter meist Teil eines Topics
  • Meistens sind sie die Schnittmenge von Topic und Dataset

–v–

baskets-datasets-nodatasets

–v–

baskets-datasets

–v–

baskets-datasets

–v–

baskets-datasets

–v–

baskets-datasets

–v–

baskets-datasets

–v–

Ready to go 🚀

–v–

Exkurs 4: Was sind OIDs?

–v–

OIDs

Objekt-IDs (OID) sind systemübergreifend eindeutige Zeichenketten, die ein INTERLIS Objekt identifizieren.

Um Objekte konfiliktlos über verschiedene Stellen austauschen und updaten.

–v–

TIDs

In der Transferdatei ist die OID unter TID einsehbar.

<City_V1.Constructions.Buildings TID="chMBAKER00000100">
  <Street>Rue des Fleures</Street><Number>1</Number>
</City_V1.Constructions.Buildings>

–v–

Weshalb TID und nicht OID?

  • Eine OID ist im XTF eine TID

  • Eine TID im XTF ist aber nicht immer eine OID

    Denn man muss nicht unbedingt mit OIDs arbeiten. Eine XTF Datei braucht aber TIDs für Referenzen etc.

    Wenn man keine OIDs benutzt, sind die TIDs einfach irgendwelche Nummern oder Zeichen (keine systemübergreifende Stabilität garantiert!)

–v–

Und im physischen Datenbankschema?

phyiscal

–v–

t_id vs. t_ili_tid

  • Die t_ili_tid entspricht der TID im XTF und somit der OID (sofern OIDs verwendet werden)
  • Die t_id ist nur eine systeminterne Sequenz-Nummer

–v–

Wann wird die t_id zur TID und die TID zur t_ili_tid?

  • die t_ili_tid leer bleibt, dann wird bei einem Export die t_id in die TID geschrieben.
  • beim Import wird dann die TID in die t_ili_tid geschrieben.

–v–

tid-to-tilitid

–v–

Wann muss/soll ich OIDs verwenden?

  • Sobald mehr als eine Stelle Daten sammelt und verwaltet
  • Wenn es das Modell voraussetzt:
    [...]
    TOPIC Constructions =
      BASKET OID AS INTERLIS.UUIDOID;
      OID AS INTERLIS.STANDARDOID;
    [...]
    

💡 Tipp: OIDS immer verwenden: kein Mehraufwand, kann bei Datenverlust helfen und erleichtert die Nachvollziehbarkeit von Änderungen.

–v–

Arten von OIDs

  • UUIDOID
  • I32OID
  • STANDARDOID
  • ANYOID
  • Benutzerdefinierte OID

–v–

UUIDOID

  • OID TEXT*36
  • Universally Unique IDentifier

 

Standardwert Model Baker
uuid('WithoutBraces')

–v–

I32OID

  • OID 0 ... 2147483647

 

Standardwert Model Baker
t_id

–v–

STANDARDOID

  • OID TEXT*16

  • Präfix (2 + 6 Zeichen)

    Länderkennung + ein globaler Identifikationsteil.

  • Postfix (8 Zeichen)

    Sequenz (numerisch oder alphanumerisch) des Systems als lokaler Identifikationsteil.

 

Standardwert Model Baker
'%change%' || lpad( T_Id, 8, 0 )

–v–

ANYOID

Definiert kein Format für die OID, sondern nur, dass eine OID in allen erweiterten Modellen definiert werden muss.

–v–

Nicht definierte OIDs

Es gelten Regeln des XML-ID-Typs (www.w3.org/TR/REC-xml)

  • erstes Zeichen muss ein Buchstabe oder Unterstrich sein
  • gefolgt von Buchstaben, Zahlen, Punkten, Minuszeichen, Unterstrichen - sonst nix.

 

Standardwert im Model Baker
'_' || uuid('WithoutBraces')

Gleiches gilt für benutzerdefinierte OIDs.

–v–

OID Manager

Datenbank > Model Baker > OID Manager

oidmanager

–v–

Check it out!

–v–

Exkurs 5: UsabILIty Hub

–v–

Wofür ist UsabILIty Hub?

  • Erhalten von Zusatzinformationen zu INTERLIS Modellen und ihre (QGIS) Projekte automatisch übers Web.

  • Zusätzliche Konfigurationen einmalig gemacht und mehrfach verwendet.

–v–

Wie funktioniert UsabILIty Hub?

–v–

1. Anwender:in wählt Modell

  • Repositorien-übergreifende Suche nach Metakonfigurationsfiles.

  • Finden der Metakonfigurationsfiles in den ilidata.xml auf UsabILItyHub (https://models.opengis.ch) oder eigenen Repositories.

–v–

2. Metakonfigurationsfile wird geparst

Dort sind Konfigurationen für ili2db, Model Baker und andere Tools definiert.

Ebenso auch Links (Ids) zu:

  • Katalogen
  • Extra Meta Attribute File
  • Toppingfiles

–v–

3. Konfigurationen werden gesetzt

  • ili2db: Smart-Mapping, Basket-Handling etc.

–v–

4. Links werden aufgelöst

  • Repositorien-übergreifende Suche der Kataloge, Extra Meta Attribut File und Toppingfiles

    Toppingfiles enthalten Informationen zu:

    • Symbologien und Formularkonfigurationen
    • Legendenlayout und Layer-Reihenfolge
    • Map Themes, Print Layouts
    • etc.

–v–

5. Nutzen der Informationen

  • Führe ili2db aus anhand der Konfigurationen und Extra Meta Attribut File
  • Importiere die gefundenen Kataloge
  • Generiere das Projekt anhand der Toppingfiles

–v–

Ablauf

uml

–v–

Dokumentation

Siehe https://usabilityhub.opengis.ch/

Oder die Model Baker Dokumentation

–v–

Ready to go 🚀

–v–

Exkurs 6: Übersetzungsmodelle

–v–

Was sind Übersetzungsmodelle?

Übersetzungsmodelle sind übersetzte Modelle, die sich von der Struktur her vom Originalmodell nicht unterscheiden.

–v–

Beispiel Gebaeudeinventar_V1

compare

–v–

Ready to go 🚀

Beispiel Plans d’affectation

Fr: https://models.geo.admin.ch/ARE/PlansDAffectation_V1_2.ili

De: https://models.geo.admin.ch/ARE/Nutzungsplanung_V1_2.ili

–v–

Ready to go 🚀

Übungen

… machen Meister:innen

–v–

Übung 1: Erstellen eines benutzbaren Projektes

  • Erstellt ein Projekt für KbS_V1_5 inklusive Extra Meta Attribut File
  • Fügt eine Hintergrundkarte hinzu
  • Speichert das Projekt ab.

–v–

Übung 2: Smart Inheritance Mapping

  • Importiere das Modell MultiGebaeudeinventar_V1 mit Smart1Inheritance
  • Umbenennen der Layer zu <layername>_Smart1
  • Importiere das Modell MultiGebaeudeinventar_V1 mit Smart2Inheritance

Nutze dabei keine Optimierung: no-opt

–v–

Übung 2.1: Optimierung des Projekts

  • Importiere das Modell OekoGebaeudeinventar_V1 mit Smart2Inheritance
  • Importiere das Modell ZG_Nutzungsplanung_V1_1 mit Smart2Inheritance

Nutze dabei keine Optimierung: no-opt

–v–

Übung 3: Erfassen in Datasets

  • Erstelle das Projekt mit Datasets für TG und SH (sofern noch nicht gemacht)
  • Füge ein Gebiet in Stein am Rhein TG zu.
  • Erfasse ein Gebiet in SH
  • Erstelle ein neuer Dataset für ZH
  • Erfasse ein Gebiet in ZH

–v–

Übung 4: Export

  • Exportiere alle Daten in eine Transferdatei (inkl. Codelists)
  • Exportiere nur die Nutzdaten von SH in eine Transferdatei

 

Zusatzaufgabe

  • Erstelle ein Projekt für OekoGebaeudeinventar_V1 mit Smart2 und Hide-Optimierung
  • Erfasse ein Objekt
  • Exportiere für OekoGebaeudeinventar_V1 und für Gebaeudeinventar_V1

–v–

Übung 5: UsabILItyHub

  • Konfiguriere ein beliebiges Projekt
  • Exportiere die Toppings
  • Importiere das Model zusammen mit den Toppings vom lokalen Repo

PAUSE

Eine Gruppe verschiedener Interessenten…

Model Baker Group

–v–

Projektteam

in Order of Appearance

  • Romedi Filli, Kanton SH (Leitung)
  • Manuel Kaufmann, Agroscope
  • David Signer, OPENGIS.ch
  • Pascal Megert, Kanton AI
  • Marleen Schulze, Kanton SZ
  • Adrian Weber, Kanton SO

–v–

Finanzierung

–v–

Jährlicher Beitrag mit Abstufungen

(ab Förderer mit Supportstunden inklusive):

  • Visionär
  • Förderer
  • Unterstützer
  • Gönner

–v–

Projektbezogen

projektbezogen

Fragen?

opengis.ch/de/kursbewertung

Das wars…

Web: www.opengis.ch

Email: david@opengis.ch

Github: github.com/opengisch / github.com/signedav

Mastodon: @opengisch@fosstodon.org / @signedav@fosstodon.org