{"id":14045,"date":"2023-11-24T22:08:52","date_gmt":"2023-11-24T21:08:52","guid":{"rendered":"https:\/\/www.opengis.ch\/?p=14045"},"modified":"2023-11-24T22:30:16","modified_gmt":"2023-11-24T21:30:16","slug":"python-bindings-fuer-interlis","status":"publish","type":"post","link":"https:\/\/www.opengis.ch\/de\/2023\/11\/24\/python-bindings-fuer-interlis\/","title":{"rendered":"Python Bindings f\u00fcr INTERLIS"},"content":{"rendered":"\n<p><strong>Seit einiger Zeit existiert die Idee von Python Bindings, erzeugt durch einen INTERLIS Compiler, welche die Modellinformationen f\u00fcr eine breite Entwicklerbasis zug\u00e4nglich macht, was einen schnelleren Innovationszyklus erm\u00f6glicht und damit die Grundlage f\u00fcr neue Plattformen, Werkzeuge und Integrationen schafft.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How comes<\/h2>\n\n\n\n<p>M\u00f6chte man den Inhalt einer XTF Datei im QGIS visualisieren, muss man heutzutage die folgenden Schritte ausf\u00fchren.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Mit ili2db das physische Schema mit allen n\u00f6tigen Parametern in einer relationalen Datenbank erstellen<\/li>\n\n\n\n<li>Mit ili2db die Daten in die relationale Datenbank importieren<\/li>\n\n\n\n<li>Durch<em> <\/em>Model Baker die Meta-Tabellen analysieren und das QGIS-Projekt erstellen<\/li>\n\n\n\n<li>Und trotzdem sind oft manuelle Nacharbeiten n\u00f6tig, um im Modell enthaltene Informationen auf die Layer und Formulare im QGIS zu \u00fcbertragen<\/li>\n\n\n\n<li>Am Ende muss wieder ein Export aus der relationalen Datenbank erfolgen, um zur\u00fcck zum XTF zu kommen<\/li>\n<\/ol>\n\n\n\n<p>Und jetzt stelle man sich mal vor, dass w\u00fcrde in einem Schritt gemacht werden k\u00f6nnen. Mit Drag&#8217;n&#8217;drop das XTF ins QGIS ziehen, die Formulare w\u00fcrden erstellt und die Daten visualisiert &#8211; ganz ohne Databank.<\/p>\n\n\n\n<p>Nat\u00fcrlich ist f\u00fcr die Datenbearbeitung dann eine Datenbank noch immer sinnvoll (schon nur wegen der Performance), dies schliesst sich aber gegenseitig nicht aus.<\/p>\n\n\n\n<p>Aber besonders n\u00fctzlich w\u00e4re der Ansatz f\u00fcr die allt\u00e4glichen kleinen Arbeiten rund um INTERLIS.<\/p>\n\n\n\n<p>Nur mal schnell \u2026<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2026 das XTF angucken<\/li>\n\n\n\n<li>\u2026 den Fehler lokalisieren<\/li>\n\n\n\n<li>\u2026 eine kleine Korrektur vornehmen<\/li>\n\n\n\n<li>\u2026<\/li>\n<\/ul>\n\n\n\n<p>Beinahe nebenbei erschliessen sich dann ganz neue M\u00f6glichkeiten.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Erzeugen einer objektorientierten Abbildung des Klassenmodelles in Python Code (Insbesondere interessant als Grundlage f\u00fcr komplexere Fachapplikationen)<\/li>\n\n\n\n<li>Automatisierte Erzeugung einer Modelldokumentation aus den INTERLIS Definitionen als HTML, Markdown, Word oder PDF.<\/li>\n\n\n\n<li>Oder auch eines Modelldiagrammes<\/li>\n\n\n\n<li>&#8230;<\/li>\n<\/ul>\n\n\n\n<p>Solche Anforderungen sind mit dem aktuell verf\u00fcgbaren Ansatz via ili2db bedingt l\u00f6sbar auf Datenbankebene. Das zugrunde liegende Datenmodell wird abstrahiert und als \u201cBlackbox\u201d betrachtet. Dazwischen steht ili2c, welches die n\u00f6tige Introspektion der Modelle \u00fcbernimmt. Dies limitiert die M\u00f6glichkeiten bei der Entwicklung von Fachapplikationen basierend auf INTERLIS Datenmodellen und unterst\u00fctzenden Werkzeugen.<\/p>\n\n\n\n<p>Die Konsequenz davon ist, dass f\u00fcr Applikationen, welche darauf aufsetzen, anstelle der kompletten Modellinformationen nur noch ein relationales Abbild oder anderweitig vereinfachte Informationen davon zur Verf\u00fcgung steht. Das erfordert einerseits, dass schwer wartbarer Code in SQL geschrieben wird. Dies ist langfristig ineffizient und fehleranf\u00e4llig. Andererseits k\u00f6nnen gewisse Anforderungen wie rollenbasierte Zugriffsrechte nicht in der Datenbank, sondern nur auf Ebene Webservice umgesetzt werden, was dazu f\u00fchrt, dass Code an zwei Stellen nachgef\u00fchrt werden soll und bei Modell\u00e4nderungen von Hand nachgef\u00fchrt werden muss.<\/p>\n\n\n\n<p>Und ja, wir wissen um die Existenz des <a href=\"https:\/\/gdal.org\/drivers\/vector\/ili.html\">GDAL\/OGR Treibers<\/a>. Doch dieser beh\u00e4lt die Object-Relational-Mapping Denkweise bei und dient mehrheitlich dazu daten von einem <em>Tabellenformat<\/em> in ein anderes zu transformieren. Das ist nicht unser Ziel.<\/p>\n\n\n\n<p>F\u00fcr die effiziente Programmierung von Fachapplikationen w\u00fcnscht man sich, dass Entwickler ein INTERLIS-Modell direkt in ihrem Framework zur Verf\u00fcgung haben, um alle diese Anforderungen entsprechend moderner IT-Entwicklungsans\u00e4tze benutzen und zeitgem\u00e4sse Anwendungen programmieren zu k\u00f6nnen. Stabil und effizient. Unter Ber\u00fccksichtigung der Modells aber mit dem Hauptfokus auf die Anwendungsf\u00e4lle der Nutzer. Immer mit der M\u00f6glichkeit den unvermeidlichen Modell\u00e4nderungen folgen zu k\u00f6nnen, da die Interfaces ja einfach abgeleitet werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ans\u00e4tze<\/h2>\n\n\n\n<p>Es sind einige grunds\u00e4tzlich unterschiedliche Ans\u00e4tze f\u00fcr die Umsetzung denkbar. Dabei ist es wichtig, dass dies in die Strategie Geoinformation Schweiz eingepasst ist und sich gut ins \u00d6kosystem integriert.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Benutzen des bestehenden ili2c XML (XSD) Interfaces womit man Python Bindings generiert<\/li>\n\n\n\n<li>Erstellen der Python Bindings auf der Basis eines <a href=\"https:\/\/www.interlis.ch\/modelle\/metamodell\">Metamodells<\/a><\/li>\n\n\n\n<li>Aufbau einer API auf dem bestehenden ili2c um die Python Bindings zu generieren (aka Java2Python)<\/li>\n\n\n\n<li>Implementierung einer direkten Python Basierten L\u00f6sung um die Zwischenschritte zu verhindern (INTERLIS Python Compiler)<\/li>\n<\/ol>\n\n\n\n<p>Nach eingehender Auseinandersetzung mit dem Thema kann der Weg via ili2c XSD ausgeschlossen werden, da wichtige Informationen nicht transparent \u00fcbermittelt werden (z.B. Constraints). <\/p>\n\n\n\n<p>Die Entwicklung einer auf IOX\/ili2c basierten Java-Komponente um damit Python Code und damit die erw\u00fcnschten Bindings erstellen zu k\u00f6nnen, erscheint m\u00f6glich aber nicht erstrebenswert. <\/p>\n\n\n\n<p>Die Entwicklung eines eigenen Compilers sehen wir als kritisch. Es bestehen bereits 2 Projekte und wir sehen nicht ein, warum ein Werkzeug mit identischem Funktionsumfang und L\u00f6sungsansatz (ANTLR als Parser\/Lexer) nur in einer anderen Programmiersprache einen Mehrwert bieten sollte.<\/p>\n\n\n\n<p>Den gr\u00f6ssten Mehrwert sehen wir bei der Nutzung des Metamodells. Einem XML, welches eigens zu dem angestrebten Zwecke geschaffen wurde. So verfolgen wir bisher den Ansatz, \u00fcber ili2c (oder alternativem Compiler) das Metamodell (IMD16) zu erstellen und daraus die Python-Bindings zu erzeugen. Die logische Konsequenz ist dann aus diesen Bindings auch generisch Reader abzuleiten welche in der Lage sind die zum Modell geh\u00f6renden XTF zu lesen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/user-images.githubusercontent.com\/28384354\/285478925-d75356fc-ce90-4d64-b607-f06e591d061a.png?w=750&#038;ssl=1\" alt=\"image\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Vorgehen<\/h2>\n\n\n\n<p>Erarbeiten eines Proof of Concepts, um die technologischen Grundlageentscheide zu validieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ziele des PoCs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Parsen des Metamodells<\/li>\n\n\n\n<li>Generieren der Python Bindings (ILI=&gt;Python-Klassen)<\/li>\n\n\n\n<li>Ableitung generischer Reader (XTF=&gt;Python-Objekte)<\/li>\n\n\n\n<li>QGIS Integration Prototyp (Drag&#8217;n&#8217;Drop ILI oder XTF) zu Demonstrationszwecken<\/li>\n<\/ul>\n\n\n\n<p>Voraussichtlich ist es m\u00f6glich, mit einem Subset an Funktionalit\u00e4ten der breiten Palette von INTERLIS-Konstrukten zu starten (Vererbung und Topics oder Integration von Repositorien sind von h\u00f6herer Priorit\u00e4t als Constraints oder Views. Die genaue Priorisierung ist noch zu pr\u00fcfen).<\/p>\n\n\n\n<p>Die Resultate werden als open source Bibliotheken zur Verf\u00fcgung gestellt, dokumentiert und getestet.<\/p>\n\n\n\n<p>Dieses Projekt setzt eine erfolgreiche Einbettung in die bestehende Werkzeuglandschaft und eine enge Zusammenarbeit mit den Schl\u00fcsselpersonen im INTERLIS Umfeld voraus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Produkte<\/h3>\n\n\n\n<p>Implementierung von Produkten, welche einen tats\u00e4chlichen Mehrwert bieten f\u00fcr eine breitere Anwenderbasis. Hier seien zwei Beispiele vorgestellt.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Python Klassengenerator<\/h4>\n\n\n\n<p>Ein Generator f\u00fcr Python-Klassen, der ein Python-Datenmodell \u00e4quivalent zum INTERLIS-Datenmodell erzeugt. Dies ist als erster Schritt in Richtung einer langfristigen Basis f\u00fcr Fachapplikationen zu betrachten. Denkbar ist eine Webapplikation zur Modellkonformen Datenerfassung<br>auf Basis von z.B. Django:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>generate_django_models.py --model &#91;modelname] --output my_source\/generated_classes\/<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Modelldokumentation<\/h4>\n\n\n\n<p>Ein Generator f\u00fcr eine Modelldokumentation, als Markdown (erm\u00f6glicht HTML, PDF, DOCX, \u2026). Ausserdem besteht die Option, das Klassendiagramm grafisch als UML abzubilden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>generate_ili_doc.py --model &#91;modelname] # Online lookup\ngenerate_ili_doc.py --model &#91;filename].ili # Local file<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Visionen<\/h2>\n\n\n\n<p>Bei Fachapplikationen f\u00fcr komplizierten Datenmodelle oder mit komplexen Workflows soll es m\u00f6glich sein, eine durchg\u00e4ngige Entwicklung vom Modell bis zur fertigen Applikation zu erm\u00f6glichen. Das Modell soll sich dabei nahtlos als Basis f\u00fcr Fachapplikationen nutzen lassen.<\/p>\n\n\n\n<p>Frameworks wie beispielsweise Django verf\u00fcgen \u00fcber M\u00f6glichkeiten, um (Web-)applikationen effizient zu entwickeln. Dabei werden Werkzeuge zur Verf\u00fcgung gestellt, um Anforderungen zu l\u00f6sen wie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rollenbasierte Zugriffsrechte:<\/strong> Es ist m\u00f6glich, pro User und Rolle zu definieren, wer, was, unter welchen Umst\u00e4nden lesen und bearbeiten darf<\/li>\n\n\n\n<li><strong>Nebeneffekte bei Bearbeitungsschritten:<\/strong> Es ist m\u00f6glich, sicherzustellen, dass bei gewissen Ver\u00e4nderungen auch Anpassungen in damit verwandten Daten nachgef\u00fchrt werden<\/li>\n\n\n\n<li><strong>Logging von Zugriffen:<\/strong> Es ist m\u00f6glich, Mutationen und Zugriffe sauber zu protokollieren<\/li>\n\n\n\n<li><strong>Migrationen zwischen Versionen von Datenmodellen:<\/strong> Bei einer Anpassung der Datenmodellversion k\u00f6nnen die daf\u00fcr notwendigen Migrationsschritte kontrolliert durchgef\u00fchrt werden (Bindings m\u00fcssen lediglich neu generiert werden).<\/li>\n\n\n\n<li><strong>Ansichten:<\/strong> Es ist m\u00f6glich, den Anwendern eine kontextbasierte Ansicht auf die Daten zu erm\u00f6glichen, welche aus Anwenderperspektive sinnvoll ist.<\/li>\n\n\n\n<li><strong>Erweiterungen:<\/strong> Verschiedene Erweiterungen werden \u00fcber eine grosse Community gepflegt welche sich auch ausserhalb der Geo-Szene befindet. Beispielsweise die M\u00f6glichkeit, Ansichten als OGC API Features zur Verf\u00fcgung zu stellen, inklusive der oben genannten rollenbasierten Zugriffsrechte, Logging etc.<\/li>\n\n\n\n<li><strong>Modularisierung:<\/strong> Saubere Trennung von Datenmodell und darauf aufbauenden Anwendungsf\u00e4llen. Applikationsrelevante Zusatzinformationen wie tempor\u00e4re Stati oder Caches k\u00f6nnen im Applikationscode verwaltet werden.<\/li>\n\n\n\n<li><strong>Testing:<\/strong> Applikationen k\u00f6nnen automatisiert getestet werden<\/li>\n\n\n\n<li><strong>Nahtlos vom Modell zur dokumentierten Python Library:<\/strong> Bereitstellung von Interface-Bibliotheken f\u00fcr Anwendungshersteller, welche die<br>Modelldokumentation bereits als Python-Docstring enthalten.<\/li>\n\n\n\n<li><strong>Kompromissloser Einsatz von Automatisierung:<\/strong> Inwertsetzung des sich ergebenden Potentials in Verbindung mit CI\/CD. Also vom publizierten Modell zur Python-Bibliothek, der Dokumentation in belibigen Formaten oder dem Klassendiagramm ohne manuelle Unterbr\u00fcche.<\/li>\n\n\n\n<li><strong>Verbreitung:<\/strong> Die Schaffung eines <em>\u00d6kosystems<\/em> rund um INERLIS wie beschrieben, f\u00fchrt zwangsl\u00e4ufig zur Verbreitung (Erfassungsapplikationen).<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seit einiger Zeit existiert die Idee von Python Bindings, erzeugt durch einen INTERLIS Compiler, welche die Modellinformationen f\u00fcr eine breite Entwicklerbasis zug\u00e4nglich macht, was einen schnelleren Innovationszyklus erm\u00f6glicht und damit die Grundlage f\u00fcr neue Plattformen, Werkzeuge und Integrationen schafft. How comes M\u00f6chte man den Inhalt einer XTF Datei im QGIS [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":14049,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[6,7,12,14,198,109],"tags":[213,186,214,212],"class_list":["post-14045","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","category-interlis","category-programming","category-python","category-qgis-de","category-unkategorisiert","tag-compiler","tag-interlis","tag-metamodell","tag-pythonbindings"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2023\/11\/pythonbindings.png?fit=1814%2C626&ssl=1","jetpack-related-posts":[{"id":12398,"url":"https:\/\/www.opengis.ch\/de\/2021\/12\/07\/model-baker-6-7-noch-nie-wars-so-einfach\/","url_meta":{"origin":14045,"position":0},"title":"Model Baker 6.7 &#8211; Noch nie war&#8217;s so einfach","author":"Dave Signer","date":"7. Dezember 2021","format":false,"excerpt":"Den QGIS Model Baker gibt's ja schon lange. Vor mehr als vier Jahren kam die Version 1.0.0 heraus - damals noch unter dem Namen QGIS Project Generator. Seither ist viel geschehen. Und speziell in diesem Jahr ist viel betreffend Benutzbarkeit gegangen. Der UsabILIty Hub ist integriert, Baskets und Datasets werden\u2026","rel":"","context":"In &quot;GIS&quot;","block_context":{"text":"GIS","link":"https:\/\/www.opengis.ch\/de\/category\/gis\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2021\/11\/modelbaker_schema_configuration.png?fit=842%2C767&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2021\/11\/modelbaker_schema_configuration.png?fit=842%2C767&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2021\/11\/modelbaker_schema_configuration.png?fit=842%2C767&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2021\/11\/modelbaker_schema_configuration.png?fit=842%2C767&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":13203,"url":"https:\/\/www.opengis.ch\/de\/2022\/10\/07\/model-baker-7-2-ist-draussen\/","url_meta":{"origin":14045,"position":1},"title":"Model Baker 7.2 ist draussen","author":"Dave Signer","date":"7. Oktober 2022","format":false,"excerpt":"Der neue Release vom QGIS Model Baker Plugin ist draussen, mit weiteren Verbesserungen des Import\/Export Wizards, mehr M\u00f6glichkeiten in der INTERLIS Validierung der Daten und einem super-komfortablen Exporter f\u00fcr UsabILIty Hub Toppingfiles. Was ist Model Baker? Dieser erste Abschnitt kann wohl von den meisten Leser:innen \u00fcbersprungen werden. Trotzdem hier eine\u2026","rel":"","context":"In &quot;GIS&quot;","block_context":{"text":"GIS","link":"https:\/\/www.opengis.ch\/de\/category\/gis\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/10\/exporter.png?fit=1200%2C782&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/10\/exporter.png?fit=1200%2C782&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/10\/exporter.png?fit=1200%2C782&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/10\/exporter.png?fit=1200%2C782&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/10\/exporter.png?fit=1200%2C782&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":15076,"url":"https:\/\/www.opengis.ch\/de\/2024\/11\/12\/uebersetzungsmodelle-in-qgis-model-baker\/","url_meta":{"origin":14045,"position":2},"title":"\u00dcbersetzungsmodelle in QGIS Model Baker","author":"Dave Signer","date":"12. November 2024","format":false,"excerpt":"Letzte Woche konnten die Teilnehmer:innen des INTERLIS Tages in Yverdon-les-Bains die brandneue Experimental Version des QGIS Model Bakers mit der Version 7.10 testen. Und damit auch die Implementierung zur Handhabung von \u00dcbersetzungsmodellen. Eine Freude f\u00fcr alle Sprachregionen der Schweiz. Die Schweiz ist viersprachig und das ist wundersch\u00f6n. Wenn ich als\u2026","rel":"","context":"In &quot;Interlis&quot;","block_context":{"text":"Interlis","link":"https:\/\/www.opengis.ch\/de\/category\/interlis-de\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/11\/Screenshot-from-2024-11-12-12-16-41-1.jpg?fit=1200%2C778&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/11\/Screenshot-from-2024-11-12-12-16-41-1.jpg?fit=1200%2C778&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/11\/Screenshot-from-2024-11-12-12-16-41-1.jpg?fit=1200%2C778&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/11\/Screenshot-from-2024-11-12-12-16-41-1.jpg?fit=1200%2C778&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/11\/Screenshot-from-2024-11-12-12-16-41-1.jpg?fit=1200%2C778&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":12927,"url":"https:\/\/www.opengis.ch\/de\/2022\/06\/27\/swiss-qgis-user-group-meeting-bern-2022\/","url_meta":{"origin":14045,"position":3},"title":"Swiss QGIS user group Meeting Bern 2022","author":"Fabian Binder","date":"27. Juni 2022","format":false,"excerpt":"What a blast it was! The first QField user day in Bern with around 40 participants from Switzerland and neighbouring countries was packed with use case presentations and interesting discussions.","rel":"","context":"In &quot;Events&quot;","block_context":{"text":"Events","link":"https:\/\/www.opengis.ch\/de\/category\/events-de\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/06\/P6153915-scaled.jpg?fit=1200%2C896&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/06\/P6153915-scaled.jpg?fit=1200%2C896&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/06\/P6153915-scaled.jpg?fit=1200%2C896&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/06\/P6153915-scaled.jpg?fit=1200%2C896&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/06\/P6153915-scaled.jpg?fit=1200%2C896&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":13415,"url":"https:\/\/www.opengis.ch\/de\/2022\/11\/15\/model-baker-interlis-daten-validator\/","url_meta":{"origin":14045,"position":4},"title":"Model Baker INTERLIS Daten Validator","author":"Dave Signer","date":"15. November 2022","format":false,"excerpt":"Der voll integrierte Daten Validator, mit dem du deine Daten direkt im QGIS gegen das INTERLIS Modell pr\u00fcfen kannst, existiert nun seit fast einem Jahr. Nach vielen Benutzerfeedbacks und\u00a0 einigen Investitionen ist er nun toller denn je. Zeit f\u00fcr ein Update und eine kleine Schritt-f\u00fcr-Schritt Anleitung. Why is it so\u2026","rel":"","context":"In &quot;Interlis&quot;","block_context":{"text":"Interlis","link":"https:\/\/www.opengis.ch\/de\/category\/interlis-de\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/11\/8.png?fit=971%2C581&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/11\/8.png?fit=971%2C581&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/11\/8.png?fit=971%2C581&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2022\/11\/8.png?fit=971%2C581&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":17793,"url":"https:\/\/www.opengis.ch\/de\/2025\/09\/16\/future-proof-mit-model-baker-8\/","url_meta":{"origin":14045,"position":5},"title":"Future-Proof mit Model Baker 8","author":"Dave Signer","date":"16. September 2025","format":false,"excerpt":"Eine neue Major Version? Genau. Das ist Model Baker 8. Und der Grund f\u00fcr die Erh\u00f6hung der Version sind nicht etwa all die fancy neuen Features, sondern die Unterst\u00fctzung von Qt6. Okay, nat\u00fcrlich auch die fancy neuen Features. Aber prim\u00e4r Qt6. Und weshalb das relevant ist, liest du unten. Fit\u2026","rel":"","context":"In &quot;Interlis&quot;","block_context":{"text":"Interlis","link":"https:\/\/www.opengis.ch\/de\/category\/interlis-de\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/09\/delorean.jpg?fit=759%2C432&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/09\/delorean.jpg?fit=759%2C432&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/09\/delorean.jpg?fit=759%2C432&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/09\/delorean.jpg?fit=759%2C432&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_shortlink":"https:\/\/wp.me\/pbdBtI-3Ex","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/14045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/comments?post=14045"}],"version-history":[{"count":6,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/14045\/revisions"}],"predecessor-version":[{"id":14053,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/14045\/revisions\/14053"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/media\/14049"}],"wp:attachment":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/media?parent=14045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/categories?post=14045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/tags?post=14045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}