{"id":14401,"date":"2024-05-28T06:54:46","date_gmt":"2024-05-28T04:54:46","guid":{"rendered":"https:\/\/www.opengis.ch\/?p=14401"},"modified":"2024-05-28T08:58:52","modified_gmt":"2024-05-28T06:58:52","slug":"the-postgresql-connection-service-file-and-why-we-love-it","status":"publish","type":"post","link":"https:\/\/www.opengis.ch\/de\/2024\/05\/28\/the-postgresql-connection-service-file-and-why-we-love-it\/","title":{"rendered":"Das PostgreSQL Connection Service File und wieso wir es lieben"},"content":{"rendered":"\n<p><strong><em>Das PostgreSQL Connection Service File <code>pg_service.conf<\/code> ist nichts Neues. Es existiert seit einiger Zeit und vermutlich hast du es auch schon verwendet. Aber nicht nur das neue QGIS Plugin <a href=\"https:\/\/github.com\/opengisch\/qgis-pg-service-parser-plugin\">PG service parser<\/a> ist Grund genug, \u00fcber unsere Liebe zu diesem File zu schreiben, auch weil wir generell denken, es ist an der Zeit zu zeigen, wie man es f\u00fcr ziemlich coole Sachen verwenden kann.<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist das Connection Service File?<a href=\"https:\/\/gist.github.com\/signedav\/db434dec4bec1f84f2f280c0635d41b7#was-ist-das-connection-service-file\"><\/a><\/h2>\n\n\n\n<p>Das Connection Service File erlaubt Verbindungsoptionen pro sogenannten &#8222;Service&#8220; lokal abzuspeichern.<\/p>\n\n\n\n<p>Hast du also eine Datenbank namens <code>gis<\/code> auf einem lokalen PostgreSQL mit Port <code>5432<\/code> und Benutzername\/Passwort <code>docker<\/code>\/<code>docker<\/code> kannst du dies als einen Service namens <code>my-local-gis<\/code> abspeichern.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Lokale GIS Datenbank f\u00fcr Testzwecke\n&#91;my-local-gis]\nhost=localhost\nport=5432\ndbname=gis\nuser=docker\npassword=docker<\/code><\/pre>\n\n\n\n<p>Dieses Connection Service File heisst&nbsp;<code>pg_service.conf<\/code>&nbsp;und wird von den Client-Applikationen (wie&nbsp;<a href=\"https:\/\/www.postgresql.org\/docs\/current\/app-psql.html\">psql<\/a> oder <a href=\"https:\/\/qgis.org\/en\/site\/\">QGIS<\/a>) grunds\u00e4tzlich direkt im Benutzerverzeichnis gesucht. Es heisst dann in Windows im Applikationsverzeichnis des Benutzers unter&nbsp;<code>postgresql\\.pg_service.conf<\/code>. In Linux liegt es standardm\u00e4ssig direkt im Verzeichnis des Benutzers&nbsp;<code>~\/.pg_service.conf<\/code>.&nbsp;<\/p>\n\n\n\n<p>Es muss aber nicht zwingend dort liegen. Es kann irgendwo auf dem System (oder einem Netzlaufwerk) liegen, solange du die Umgebungsvariable&nbsp;<code>PGSERVICEFILE<\/code>&nbsp;entsprechend konfigurierst:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export PGSERVICEFILE=\/home\/dave\/connectionfiles\/pg_service.conf&nbsp;<\/code><\/pre>\n\n\n\n<p>Hast du das gemacht, wird von den Client-Applikationen zuerst dort gesucht &#8211; und gefunden.<\/p>\n\n\n\n<p>Ansonsten kann mit&nbsp;<code>PGSYSCONFDIR<\/code> auch ein Ordner definiert werden, wo das File&nbsp;<code>pg_service.conf<\/code>&nbsp;zu finden ist.<\/p>\n\n\n\n<p>Hat man das, kann ein Service der Client-Applikation \u00fcbergeben werden. Das heisst in <a href=\"https:\/\/www.postgresql.org\/docs\/current\/app-psql.html\">psql<\/a> w\u00fcrde das so aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~$ psql service=my-local-gis\npsql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1), server 14.5 (Debian 14.5-1.pgdg110+1))\nSSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)\nType \"help\" for help.\n\ngis=#<\/code><\/pre>\n\n\n\n<p>Und in QGIS so:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"182\" src=\"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/05\/image.png?resize=750%2C182&#038;ssl=1\" alt=\"\" class=\"wp-image-14336\" srcset=\"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/05\/image.png?resize=1024%2C248&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/05\/image.png?resize=300%2C73&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/05\/image.png?resize=768%2C186&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/05\/image.png?w=1279&amp;ssl=1 1279w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p>Wenn du dann in QGIS einen Layer hinzuf\u00fcgst, wird in das Projektfile nur der Name des Services geschrieben. Weder die Verbindungsparameter noch Benutzername\/Passwort sind gespeichert. Das hat neben dem Sicherheitsaspekt verschiedene Vorteile, mehr dazu weiter unten.<\/p>\n\n\n\n<p>Du musst aber nicht alle diese Parameter einem Service \u00fcbergeben. \u00dcbergibst du nur Teile davon (zBs. ohne die Datenbank), dann musst du diese beim Aufruf der Verbindung noch mitgeben:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$psql \"service=my-local-gis dbname=gis\"\npsql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1), server 14.5 (Debian 14.5-1.pgdg110+1))\nSSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)\nType \"help\" for help.\n\ngis=#<\/code><\/pre>\n\n\n\n<p>Du kannst aber auch Parameter \u00fcbersteuern. Wenn du eine Datenbank&nbsp;<code>gis<\/code>&nbsp;im Service konfiguriert hast, aber auf die Datenbank&nbsp;<code>web<\/code>&nbsp;zugreiffen willst, kannst du den Service und die explizite Datenbank angeben:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$psql \"service=my-local-gis dbname=web\"\npsql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1), server 14.5 (Debian 14.5-1.pgdg110+1))\nSSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)\nType \"help\" for help.\n\nweb=#<\/code><\/pre>\n\n\n\n<p>Das Gleiche gilt nat\u00fcrlich auch f\u00fcr QGIS.<\/p>\n\n\n\n<p>Und betreffend den genannten Umgebungsvariablen. Du kannst dir auch einen Standard-Service setzen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export PGSERVICE=my-local-gis<\/code><\/pre>\n\n\n\n<p>Besonders angenehm in der t\u00e4glichen Arbeit mit immer derselben Datenbank.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ psql\npsql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1), server 14.5 (Debian 14.5-1.pgdg110+1))\nSSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)\nType \"help\" for help.\n\ngis=#<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Und weshalb ist es besonders cool?<a href=\"https:\/\/gist.github.com\/signedav\/db434dec4bec1f84f2f280c0635d41b7#und-weshalb-ist-es-besonders-cool\"><\/a><\/h2>\n\n\n\n<p>Es gibt verschiedene Gr\u00fcnde, weshalb ein solches File n\u00fctzlich ist:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sicherheit: Man muss die Verbindungsparameter nirgendwo in den Client Files (sBs. QGIS Projektfiles) abspeichern. Beachte aber, dass es noch immer plaintext im Service File steht.<\/li>\n\n\n\n<li>Abkopplung: Man kann die Verbindungsparameter \u00e4ndern, ohne die Settings in Client Files (sBs. QGIS Projektfiles) \u00e4ndern zu m\u00fcssen<\/li>\n\n\n\n<li>Multi-User: Man kann das File auf einem Netzlaufwerk abspeichern. Solange die Umgebungsvariable der lokalen Systeme auf dieses File zeigt, k\u00f6nnen alle Benutzer mit den gleichen Logins darauf zugreiffen.<\/li>\n\n\n\n<li>Diversit\u00e4t: Man kann mit demselben Projektfile auf verschiedene Datenbanken mit gleicher Struktur zugreiffen, wenn lediglich der Name des Services gleich bleibt.<\/li>\n<\/ul>\n\n\n\n<p>Zum letzten Grund hier drei Use Cases.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Support-Case<\/strong><\/h3>\n\n\n\n<p>Jemand meldet uns ein Problem in QGIS bei einem spezifischen Fall mit ihrer Datenbank. Da das Problem nicht zu reproduzieren ist, schicken sie uns einen DB-Dump eines Schemas und ein QGIS Projektfile. Die Layer im QGIS Projektfile sind einem Service verkn\u00fcpft. Nun k\u00f6nnen wir den Dump auf unserer lokalen Datenbank wiederherstellen und mit unserem eigenen, gleichnamigen Service darauf zugreiffen. Das Problem kann so reproduziert werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>INTERLIS<\/strong><\/h3>\n\n\n\n<p>Mit INTERLIS wird die Struktur eines Datenbankschemas genau spezifiziert. Wenn nun der Kanton dieses Modell bei sich erstellt hat und ein QGIS Projekt dazu konfiguriert, kann er das Projektfile einer Firma weitergeben, ohne auch die Datenbankstruktur mitzugeben. Die Firma kann auf ihrer eigenen PostgreSQL Datenbank das Schema aufgrund des INTERLIS Modells aufbauen und anhand ihres eigenen, gleichnamigen Services darauf zugreiffen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Test\/Prod Switching<\/strong><\/h3>\n\n\n\n<p>Du kannst mit demselben QGIS Projekt auf eine Test und eine Produktivdatenbank zugreiffen, wenn du pro<a href=\"https:\/\/docs.qgis.org\/3.34\/de\/docs\/user_manual\/introduction\/qgis_configuration.html#user-profiles\"> QGIS Profil<\/a>&nbsp;die Umgebungsvariable f\u00fcr das Connection Service File anders setzst.<\/p>\n\n\n\n<p>Du erstellst zwei Connection Service Files.<\/p>\n\n\n\n<p>Das zur Testdatenbank in <code>\/home\/dave\/connectionfiles\/test\/pg_service.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;my-local-gis]\nhost=localhost\nport=54322\ndbname=gis-test<\/code><\/pre>\n\n\n\n<p>Und das f\u00fcr die Produktivdatenbank in <code>\/home\/dave\/connectionfiles\/prod\/pg_service.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;my-local-gis]\nhost=localhost\nport=54322\ndbname=gis-productive<\/code><\/pre>\n\n\n\n<p>In QGIS erstellst du zwei Profile &#8222;Test&#8220; und &#8222;Prod&#8220;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/P5tG5kloX-sTGLtJjItVhTwQzGjhMugMEhgkUTfUfO4jblPxurVHGRdRcMkH2BGLyMrAPNZtOdaRO5OzeMvxR4CUC38gY23c9uGjXPn_65qSRRddeohzlDU4bQdPlbg5q9yGozwMjzuz9GeP-CTCPN8\" alt=\"\"\/><\/figure>\n\n\n\n<p>Und pro Profil setzst du die Umgebungsvariable&nbsp;<code>PGSERVICEFILE<\/code>&nbsp;die verwendet werden soll (im Menu&nbsp;<em>Settings &gt; Options&#8230;<\/em>&nbsp;und dort unter&nbsp;<em>System<\/em>&nbsp;herunterscrollen bis&nbsp;<em>Environment<\/em>).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/BZQzdWMsz1dbNf43syK1wkViu_uiOjitDu3a2wnJw7NElQ-OyvVwc26BR2y9rIW7ol_ocLGPOeRhfsjliIj9yWhUYqColQnwIpGfwVcMX2kPtFebDymTlFJjmbxDehH9QJ2MshLFu5TaULQfgOW-VZk\" alt=\"image\"\/><\/figure>\n\n\n\n<p>bzw.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/1KSjiGIKgFBxD13G7FYB_6wz6BRt2XbYmNJVdsgoCzptjN9K6PoR-Q5Ttxxnf6XAKXLYjWFL6PacuroU6klaW0EZJZtPDGVkLHPYQYUA1kACMMmJz7TZkQpGp-yvRaAaqN0j3sYJsZTXT2EXQACtdIc\" alt=\"image\"\/><\/figure>\n\n\n\n<p>Wenn du nun in QGIS den Service&nbsp;<code>my-local-gis<\/code>&nbsp;nutzst, verbindet es im Profil &#8222;Prod&#8220; mit der Datenbank&nbsp;<code>prod<\/code>&nbsp;und im Profil &#8222;Test&#8220; mit der Datenbank&nbsp;<code>test<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Die Authentifizierungskonfiguration<\/strong><\/h2>\n\n\n\n<p>Nun noch zur Authentifizierung. Hat man das Connection Service File auf einem Netzlaufwerk und stellt es mehreren Usern zur Verf\u00fcgung, m\u00f6chte man ja vielleicht eher nicht, dass alle mit demselben Login zugreiffen. Oder man m\u00f6chte generell keine Benutzerinformation in diesem File drin haben. Das l\u00e4sst sich in QGIS elegant mit der Authentifizierungskonfiguration kombinieren.<\/p>\n\n\n\n<p>M\u00f6chtest du eine QGIS Projektfile mehreren Usern zur Verf\u00fcgung stellen, erstellst du die Layer mit einem Service. Dieser Service enth\u00e4lt alle Verbindungsparameter, bis auf die Login-Information.<\/p>\n\n\n\n<p>Diese Login-Information \u00fcbergibt man mit einer QGIS Authentifizierung.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/RGByDYJr2czDGs4XKQD6SzCbsgiM318UdYav1m0z9fzX9_vQcFNjnZ5zqqg2X5hQ6HnJhwNGuszKYPpVSE5L53mxrpSTlLhGw5J8TAOB43IhTXFJlfII3ICPmX9ztbEOlR-TpJrlW5jfOy42-Dbx_Os\" alt=\"image\"\/><\/figure>\n\n\n\n<p>Diese Authentifizierung konfigurierst du ebenfalls pro obengenanntem QGIS-Profil. Dieses wird \u00fcber Menu&nbsp;<em>Settings &gt; Options&#8230;<\/em>&nbsp;und dort unter&nbsp;<em>Authetification<\/em>&nbsp;mit dem&nbsp;<em>+<\/em>&nbsp;erstellt:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/nnQe3fm9iMDFxG5QCxV_kpeBKjiUUefXx5B0dcNvMF7v0ObW_5051hXBBldC_CKSTrNPblJzwDo0zK2aQBKyz9ZM_27wIPtOY1i7srhpJLMr84VHWevuy4F1hj93ZjzJXbAKlt80gw0HuHtHaqcuigQ\" alt=\"image\"\/><\/figure>\n\n\n\n<p>(oder auch direkt dort, wo man die PostgreSQL Verbindung erstellt)<\/p>\n\n\n\n<p>Wenn du so einen Layer hinzuf\u00fcgst, werden im QGIS Projektfile einerseits der Service wie auch die Id der Authentifizierungskonfiguration gespeichert. Diese ist in diesem Fall&nbsp;<code>mylogin<\/code>&nbsp;und muss nat\u00fcrlich den anderen Usern mitgeteilt werden, damit auch sie f\u00fcr ihr Login die Id&nbsp;<code>mylogin<\/code>&nbsp;konfigurieren.<\/p>\n\n\n\n<p>Pro Profil kann man nat\u00fcrlich mehrere Authetifizierungkonfigurationen verwenden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>QGIS Plugin<\/strong><\/h2>\n\n\n\n<p>\u00dcbrigens gibt es neu ein tolles Plugin, um diese Services direkt in QGIS zu konfigurieren. So musst du dich nicht mehr mit Textbasierten INI-Files herumschlagen. Es heisst&nbsp; <a href=\"https:\/\/github.com\/opengisch\/qgis-pg-service-parser-plugin\">PG service parser<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/3JNSq_fmD2g33fLls2FGklpoCRo-M4Pyuts7z4dP56wKK7_tRj3hGyakJSQHTHBxWyQNkBfJQggaPl_InrOdY58b-6GN8eGBH9oOgJYLkq6XMApgGBrboR_FQ5dZwJZFiBpZZ4_oBg2_BTNUAGiuPkk\" alt=\"image\"\/><\/figure>\n\n\n\n<p>Es findet das Connection Service File anhand den erw\u00e4hnten Umgebungsvariabeln <code>PGSERVICEFILE<\/code> or <code>PGSYSCONFDIR<\/code> oder in den Standardverzeichnissen.<\/p>\n\n\n\n<p>Ebenso ist es supereasy neue Services zu erstellen, indem man bestehende dupliziert und bearbeitet.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/FvLhRVplNNN5EGo8OYmED9L786WKZOxxBZy98wVnJq6vywqo_Ny2wHQaKUbcMMaiyEVTD8BNKAeD0kAY_4HgmJ39NvEF9z20PPlbwPNIgVFRXwNQTYn5KgGOzJ8iUGJ4PnY7l1y0rNzOTrdOqMtbcNY\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Und f\u00fcr die Devs<\/h3>\n\n\n\n<p>Was w\u00e4re ein Blogpost ohne Geek-Futter? Das backend des Plugins ist in <a href=\"https:\/\/pypi.org\/project\/pgserviceparser\/\">PYPI<\/a> publiziert und kann einfach mit <code>pip install pgserviceparser <\/code>installiert und in Python genutzt werden.<\/p>\n\n\n\n<p>Zum Beispiel um die Services aufzulisten.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; import pgserviceparser\n&gt;&gt;&gt; pgserviceparser.service_names()\n&#91;'my-local-gis', 'another-local-gis', 'opengisch-demo-pg']<\/code><\/pre>\n\n\n\n<p>Optional kann auch das Servicefile \u00fcbergeben werden. Ansonsten wird es mit dem erw\u00e4hnten Mechanismus gefunden.<\/p>\n\n\n\n<p>Oder um die Konfiguration eines bestimmten Services in einem Dict zu kriegen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; pgserviceparser.service_config('my-local-gis')\n{'host': 'localhost', 'port': '54322', 'dbname': 'gis', 'user': 'docker', 'password': 'docker'}<\/code><\/pre>\n\n\n\n<p>Da gibt es aber noch mehr Funktionen. Finde sie auf <a href=\"https:\/\/github.com\/opengisch\/pgserviceparser\">GitHub<\/a> oder in der <a href=\"https:\/\/opengisch.github.io\/pgserviceparser\/\">Dokumentation<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nun dann<\/h2>\n\n\n\n<p>Wir hoffen du Teilst &#8211; zumindest nach diesem Blogpost &#8211; unser Enthusiasmus f\u00fcr dieses tolle File. Und falls nicht, dann sag uns doch weshalb in den Kommentaren \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das PostgreSQL Connection Service File pg_service.conf ist nichts Neues. Es existiert seit einiger Zeit und vermutlich hast du es auch schon verwendet. Aber nicht nur das neue QGIS Plugin PG service parser ist Grund genug, \u00fcber unsere Liebe zu diesem File zu schreiben, auch weil wir generell denken, es ist [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":14354,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"jetpack_post_was_ever_published":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":""},"categories":[235,198],"tags":[184],"class_list":["post-14401","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-interlis-de","category-qgis-de","tag-qgis-org-de"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/05\/pgserviceparser-1.png?fit=1600%2C1000&ssl=1","jetpack-related-posts":[{"id":17793,"url":"https:\/\/www.opengis.ch\/de\/2025\/09\/16\/future-proof-mit-model-baker-8\/","url_meta":{"origin":14401,"position":0},"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":[]},{"id":12398,"url":"https:\/\/www.opengis.ch\/de\/2021\/12\/07\/model-baker-6-7-noch-nie-wars-so-einfach\/","url_meta":{"origin":14401,"position":1},"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":14045,"url":"https:\/\/www.opengis.ch\/de\/2023\/11\/24\/python-bindings-fuer-interlis\/","url_meta":{"origin":14401,"position":2},"title":"Python Bindings f\u00fcr INTERLIS","author":"Dave Signer","date":"24. November 2023","format":false,"excerpt":"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\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\/2023\/11\/pythonbindings.png?fit=1200%2C414&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2023\/11\/pythonbindings.png?fit=1200%2C414&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2023\/11\/pythonbindings.png?fit=1200%2C414&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2023\/11\/pythonbindings.png?fit=1200%2C414&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2023\/11\/pythonbindings.png?fit=1200%2C414&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":14556,"url":"https:\/\/www.opengis.ch\/de\/2024\/06\/20\/qgis-anwendertag-schweiz-2024-ein-bericht-aus-sicht-opengis-ch\/","url_meta":{"origin":14401,"position":3},"title":"QGIS Anwendertreffen Schweiz 2024 &#8211; ein Bericht aus Sicht OPENGIS.ch","author":"Marco Bernasocchi","date":"20. Juni 2024","format":false,"excerpt":"Wir freuen uns, unsere Leidenschaft f\u00fcr #QGIS am Schweizer Anwendertreffen zu teilen! Mit der Pr\u00e4sentation von #DXF-Verbesserungen, dem SwissLocator 3.0 mit swissalti3d und Vector-Tiles-Integration, \u00fcber Fortschritten bei der Handhabung von Kreisb\u00f6gen und Next Generation Fachschalen bis zu Projekten wie Federal Office for the Environment FOEN SAM und #Kablo sind wir\u2026","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\/2024\/06\/1000050805.jpg?fit=1200%2C900&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/06\/1000050805.jpg?fit=1200%2C900&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/06\/1000050805.jpg?fit=1200%2C900&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/06\/1000050805.jpg?fit=1200%2C900&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2024\/06\/1000050805.jpg?fit=1200%2C900&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":14401,"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":15076,"url":"https:\/\/www.opengis.ch\/de\/2024\/11\/12\/uebersetzungsmodelle-in-qgis-model-baker\/","url_meta":{"origin":14401,"position":5},"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":[]}],"jetpack_shortlink":"https:\/\/wp.me\/pbdBtI-3Kh","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/14401","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=14401"}],"version-history":[{"count":2,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/14401\/revisions"}],"predecessor-version":[{"id":14413,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/posts\/14401\/revisions\/14413"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/media\/14354"}],"wp:attachment":[{"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/media?parent=14401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/categories?post=14401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opengis.ch\/de\/wp-json\/wp\/v2\/tags?post=14401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}