Commençons …
–v–
–v–
–v–
–v–
| Temps | Contenu |
|---|---|
| 09.00 | Introduction et environnement 🧑🏫 |
| 10.00 | Importation de modèles 👪 |
| 10.30 | Méta-attributs 🧑🏫 💻 |
| 11.00 | Pause |
| 11.15 | Héritages et cartographie 🧑🏫 💻 |
| 12.00 | Dîner |
–v–
| Temps | Contenu |
|---|---|
| 13.00 | Importation et exportation de données 👪 Conteneurs et ensembles de données 🧑🏫 💻 |
| 13.45 | Saisie et validation 👪 💻 |
| 15.15 | Pause |
| 15.30 | UsabILIty Hub 🧑🏫 👪 💻 |
| 16.30 | modèles de traduction 🧑🏫 |
| 16.45 | Conclusion, questions et suggestions |
–v–
Courte introduction…
–v–
Création rapide d’un projet QGIS à partir d’un modèle de données physique.
Analyse la structure existante et configure un projet QGIS avec toutes les informations disponibles.
–v–
Les modèles définis dans INTERLIS fournissent des méta-informations supplémentaires telles que les domaines, les unités d’attributs ou les définitions orientées objet des tables.
Celles-ci peuvent être utilisées pour optimiser davantage la configuration du projet.
–v–
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–
Peut être utilisé comme un cadre. Comme le fait Asistente LADM-COL.
Ou TEKSI Script TEKSI wastewater
… et est également disponible en tant que package Python :
pip install modelbaker
–v–
Plugin QGIS
https://github.com/opengisch/QgisModelBaker
Dépôt de code Bibliothèque Backend
https://github.com/opengisch/QgisModelBakerLibrary
–v–
https://github.com/opengisch/QgisModelBaker/issues
–v–

De quoi avons-nous besoin…
–v–
A compléter
–v–
–v–
postgisuuid-ossp
–v–
$ psql -Upostgres -hlocalhost -dbakery
postgres=# CREATE DATABASE databasename;
postgres=# \connect databasename;
databasename=# CREATE EXTENSION postgis;
databasename=# CREATE EXTENSION uuid-ossp;
–v–
Si ce n’est pas déjà installé…
Là, selon la version de PostgreSQL, trouver postgis-bundle-pg14x64-setup-3.3.2-2.exe, le télécharger et l’installer.
Utiliser de préférence posgres.app (PostGIS y est déjà inclus) https://postgresapp.com/de/downloads.html
sudo apt install postgis
–v–
| Hôte | modelbaker-workshop-exoscale-d9c1bf3f-51a3-4ab8-afac-6cb37d8a8f.a.aivencloud.com |
| Port | 21699 |
| Utilisateur | testbaker |
| Mot de passe | superbaker |
| BD | gis |
(actif uniquement aujourd’hui)
Utilisez toujours votre abréviation de nom comme préfixe pour les schémas :
sigdav_ (pour David Signer)
–v–
Avez-vous Java installé?
java --version
… il y a une réponse, alors c’est bien 🙂
sudo apt-get install openjdk-18-jre
ou
sudo apt install default-jre
–v–
–v–
–v–
–v–
Commençons…
… laissons-nous divaguer
–v–
–v–
Les méta-attributs permettent de compléter les modèles INTERLIS avec des informations supplémentaires qui ne sont pas prévues dans la spécification actuelle d’INTERLIS.
Voir eCH-0117 Méta-attributs pour les modèles INTERLIS
–v–
Expression d’affichage spécifique pour la table de la classe ZustaendigkeitsKataster.

–v–
!!@<name>=<value>
Suivi de l’élément référencé (MODEL, TOPIC, CLASS, etc.)
–v–
Un commentaire commence par !! et se termine par une fin de ligne.
Un méta-attribut commence également par !! mais suivi de @
–v–
Méta-attribut spécifique de Model Baker :
!!@qgis.modelbaker.dispExpression='<QGIS Expression>'
–v–
Définition dans le modèle KbS_V1_5
MODEL KbS_V1_5 (de) =
TOPIC Belastete_Standorte =
!!@qgis.modelbaker.dispExpression = "'Nr: '|| uid ||' / '|| katastername"
CLASS ZustaendigkeitKataster =
[...]

–v–
(incomplet) Voir aussi https://interlis.discourse.group/t/uebersicht-interlis-meta-attribute/70
–v–
Mais nous ne pouvons pas simplement bricoler le modèle !
–v–
… connu comme “fichier de configuration”, “fichier de méta-attributs”, “fichier INI”, “fichier TOML”…
En réalité au format INI, mais généralement enregistré sous .toml.
À ne pas confondre avec le fichier de méta-configuration pour “contrôler” ili2db (également en relation avec UsabILIty Hub).
–v–
Définition dans le fichier de configuration pour KbS_V1_5
["KbS_V1_5.Belastete_Standorte.ZustaendigkeitKataster"]
qgis.modelbaker.dispExpression = "'Nr: '|| uid ||' / '||katastername"

–v–
Juste pour information…
["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–
Multi-géométrie construite à partir de STRUCTURE MultiPolygon
“Multilinguisme aplati” sur STRUCTURE MultilingualUri
–v–
ili2db.mapping
Les structures sont mappées avec des colonnes au lieu de relations (par exemple, la multi-géométrie).
Les attributs de structure (BAG OF/LIST OF) sont mappés avec un type de données au lieu de relations.
–v–
!!@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–
[KbS_V1_5.Belastete_Standorte.MultiPolygon]
ili2db.mapping = "MultiSurface"
[KbS_V1_5.Belastete_Standorte.MultilingualUri]
ili2db.mapping = "Multilingual"
–v–
–v–
–v–
–v–
–v–
Gebaeudeinventar_V1MODEL 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–
Nous devons utiliser un attribut supplémentaire pour un projet écologique : EntsprichtStandard
Mais nous souhaitons toujours renvoyer les données sous forme de Gebaeudeinventar_V1.
–v–
–v–
Étendre une classe (classe de base) en une dérivation “améliorée”.
Une classe étendue (dérivation) a toutes les propriétés de la classe de base + “plus”.
“plus” signifie des attributs ou des restrictions supplémentaires.
–v–
Gebaeude devient un meilleur Gebaeude
–v–
… avec EXTENDED
CLASS Gebaeude =
EGID : MANDATORY TEXT*16;
Koordinaten : MANDATORY GeometryCHLV95_V1.Coord2;
END Gebaeude;
CLASS Gebaeude (EXTENDED) =
EntsprichtStandard: BOOLEAN;
END Gebaeude;
–v–
–v–
–v–
Nous voulons maintenant saisir plusieurs types de bâtiments :
Anzahl_Wohnungen)Anzahl_Firmen)Anzahl_Firmen et Zweck)… et tout renvoyer finalement comme Gebaeude.
–v–
… avec 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–
MultiGebaeudeinventar_V1
–v–
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–
–v–
–v–
Essayez avec Smart2 et si ça ne va pas, essayez avec Smart1.
Citation : Romedi Filli - 2022
–v–
–v–

–v–
Gebaeude.t_type : (
Wohngebaeude,
Gewerbegebaeude,
Oeffentliches_
Gewerbegebaeude
)

–v–

–v–
Oeffentliches_
Gewerbegebaeude.t_type: (
Gewerbegebaeude,
Oeffentliches_
Gewerbegebaeude
)

–v–

–v–
Oeffentliches_
Gewerbegebaeude.t_type: (
Gewerbegebaeude,
Oeffentliches_
Gewerbegebaeude
)

–v–

–v–

–v–
–v–
–v–
Résulte en ce que nous voyons dans le graphique New Class.

–v–
–v–
Signifie donc que Gebaeude utilise la stratégie New Class et toutes les autres la stratégie Super class.
Résulte en ce que nous voyons dans le graphique Super class.

–v–
–v–
Signifie donc que toutes utilisent la stratégie New+Sub Class.
Résulte en ce que nous voyons dans le graphique New+Sub Class.

–v–
–v–
–v–
–v–

… essayons avec OekoGebaeudeinventar_V1 (ou aussi ZG_Nutzungsplanung_V1_1)
–v–
Si un modèle ou un topic contient des classes étendues, celles-ci sont implémentées dans la base de données physique, y compris les classes de base…
… et par conséquent, des couches sont créées dans QGIS.
–v–
–v–
–v–
–v–
–v–
–v–
–v–
–v–
–v–

–v–

–v–

–v–

–v–

–v–

–v–
–v–
–v–
Les identifiants d’objet (OID) sont des chaînes de caractères uniques à travers les systèmes qui identifient un objet INTERLIS.
Pour échanger et mettre à jour des objets sans conflit à travers différents endroits.
–v–
Dans le fichier de transfert, l’OID est visible sous TID.
<City_V1.Constructions.Buildings TID="chMBAKER00000100">
<Street>Rue des Fleures</Street><Number>1</Number>
</City_V1.Constructions.Buildings>
–v–
Car il n’est pas obligatoire de travailler avec des OID. Un fichier XTF a besoin de TID pour les références, etc.
Si vous n’utilisez pas d’OID, les TID sont simplement des nombres ou des caractères quelconques (pas de stabilité à travers les systèmes garantie !)
–v–

–v–
t_ili_tid correspond au TID dans le XTF et donc à l’OID (si des OID sont utilisés)t_id n’est qu’un numéro de séquence interne au système–v–
t_ili_tid reste vide, alors lors d’une exportation, le t_id est écrit dans le TID.t_ili_tid.–v–

–v–
[...]
TOPIC Constructions =
BASKET OID AS INTERLIS.UUIDOID;
OID AS INTERLIS.STANDARDOID;
[...]
–v–
–v–
OID TEXT*36
uuid('WithoutBraces')
–v–
OID 0 ... 2147483647
t_id
–v–
OID TEXT*16Identifiant du pays + une partie d’identifications globale.
Séquence (numérique ou alphanumérique) du système comme partie d’identifications locale.
'%change%' || lpad( T_Id, 8, 0 )
–v–
Ne définis pas de format pour l’OID, mais seulement qu’un OID doit être défini dans tous les modèles Symbolisations étendus.
–v–
Les règles du type XML-ID (www.w3.org/TR/REC-xml) s’appliquent
'_' || uuid('WithoutBraces')
La même chose s’applique aux OID définis par l’utilisateur.
–v–
Base de données > Model Baker > Gestionnaire d’OID

–v–
–v–
–v–
Obtenir des informations supplémentaires sur les modèles INTERLIS et leurs projets (QGIS) automatiquement via le web.
Configurations supplémentaires faites une seule fois et utilisées plusieurs fois.
–v–
–v–
Recherche inter-référentiels de fichiers de méta-configuration.
Trouver les fichiers de méta-configuration dans les ilidata.xml sur UsabILItyHub (https://models.opengis.ch) ou les référentiels propres.
–v–
Les configurations pour ili2db, Model Baker et d’autres outils y sont définies.
Également des liens (Ids) vers :
–v–
–v–
Les fichiers de surcouche contiennent des informations sur :
–v–
–v–

–v–
Voir https://usabilityhub.opengis.ch/
Ou la documentation de Model Baker
–v–
–v–
–v–
Les modèles de traduction sont des modèles traduits qui ne diffèrent pas du modèle original en termes de structure.
–v–

–v–
Fr : https://models.geo.admin.ch/ARE/PlansDAffectation_V1_2.ili
De : https://models.geo.admin.ch/ARE/Nutzungsplanung_V1_2.ili
–v–
… la pratique rend parfait
–v–
KbS_V1_5 incluant un fichier de méta-attributs supplémentaire–v–
MultiGebaeudeinventar_V1 avec Smart1Inheritance<nom de la couche>_Smart1MultiGebaeudeinventar_V1 avec Smart2InheritanceNe pas utiliser d’optimisation :

–v–
OekoGebaeudeinventar_V1 avec Smart2InheritanceZG_Nutzungsplanung_V1_1 avec Smart2InheritanceNe pas utiliser d’optimisation :

–v–
–v–
OekoGebaeudeinventar_V1 avec Smart2 et l’optimisation de masquageOekoGebaeudeinventar_V1 et pour Gebaeudeinventar_V1–v–
Un groupe de différents intéressés…
–v–
par ordre d’apparition
–v–
–v–
(à partir du parrain avec heures de support incluses) :
–v–
