Wir haben in einem früheren Artikel den innovativen Ansatz von Baremaps Studio vorgestellt. Nehmen wir nun einen konkreten Anwendungsfall, um die Leistungsfähigkeit des Studios zu demonstrieren.

Wir werden relevante Karten auf der Grundlage des Datensatzes “tödlicher Verkehrsunfälle” in der Bretagne erstellen.

 

Importieren eines Datensatzes in Ihre Karte

Es gibt viele frei verfügbare Datensätze, die sehr einfach zu beschaffen sind. Für diesen Showcase werden wir einfach einen Unfalldatensatz von Geobretagne herunterladen.

Die ersten Schritte sind recht einfach und selbsterklärend:

  1. Besorgen Sie sich Ihren Datensatz
  2. Übertragen Sie ihn in Baremaps Studio
  3. Erstellen Sie eine neue Karte
  4. Importieren Sie Ihren Datensatz in Ihre Karte
  5. Boom
Add map to Baremaps | © Camptocamp SA
Baremaps code snippet | © Camptocamp SA

Was geschieht hier?

Beim Hinzufügen eines Datensatzes zu Ihrer Karte aktualisiert Baremaps intern seine Tileset-Definition. Es fügt ein neues vectorLayers-Objekt hinzu und legt eine Standard-SQL-Abfrage für alle Zoomstufen fest, die grundsätzlich alle Objekte aus dem Datensatz auswählt. 

Diese Tileset-Konfiguration beschreibt den Inhalt der Vektorkacheln. Mit dieser Konfiguration stellt Baremaps einen MVT-Stream für dieses Tileset zur Verfügung, der Punkte für Unfallorte und alle im Datensatz enthaltenen Attribute enthält.

Beachten Sie, dass Sie mehrere Abfragen für einen Datensatz angeben können, was bedeutet, dass Sie die Darstellung Ihres Datensatzes in Abhängigkeit von der Zoomstufe steuern können.

Beachten Sie auch, dass Sie mehrere Datensätze innerhalb desselben Tilesets haben können, was bedeutet, dass der Client nur einen Vektor-Kachel-Stream in Ihre Karte laden muss.

Geben Sie Ihrem Datensatz einen Sinn

Die Studio-UI bietet die Werkzeuge, um das Rendering Ihres Datensatzes anzupassen und ihn “zum Sprechen” zu bringen. Diese Funktion stützt sich lediglich auf die Mapbox Style-Spezifikation, um den Datensatz anhand seines Attributinhalts darzustellen.

Wie wir bereits gesehen haben, wird die Abfrage in SQL definiert. Das bedeutet, dass nun das gesamte Potenzial von PostGIS für die Darstellung Ihrer Datensätze genutzt werden kann. Schauen wir uns das also genauer an.

Baremaps - data driven styling | © Camptocamp SA
Baremaps data table | © Camptocamp SA

1. Attribute join

Schauen wir uns den Inhalt unseres Datensatzes an. Hier können wir die verschiedenen Attribute sehen.

Wir sehen, dass es einen Code für das Departement gibt. Wir wollen also eine räumliche Darstellung des Unfallgeschehens über die Departements haben, indem wir den Datensatz über den Departement-Code mit einem entsprechenden Geometriedatensatz verbinden.

Dank der Baremaps-OSM-Importpipeline können wir die Department-Ebene aus OSM-Daten erstellen, die sich bereits im Speicher befinden.

In der Ebenendarstellung wählen wir nun anstelle der einfachen Punktdarstellung die Aggregation nach Attributen. Zielen Sie auf den anderen Datensatz (Departemente) und wählen Sie die Verbindungsspalte.

 

Das Studio konfiguriert nun die Tileset-SQL-Abfrage wie folgt:

select d.id                                                                                                 as id,
      hstore(ARRAY ['count', count(*)::text, 'code', a.tags -> 'departement', 'nom', d.tags -> 'NOM_DEP']) as tags,
      d.geom                                                                                               as geom
from "d7208ede-6397-44c6-b646-f4b09fca35e3" as a
      LEFT JOIN "11994650-42fc-4727-9727-443cc4143e92" as d
                ON d.tags -> 'INSEE_DEP' = a.tags -> 'departement'
group by d.id, d.geom, a.tags -> 'departement', d.tags -> 'NOM_DEP')
Baremaps - attribute join | © Camptocamp SA

Beim Zusammenstellen der Kachel holt Baremaps die Aggregation anstelle des Inhalts der Unfalltabelle wie zuvor.

Durch Hinzufügen eines datengesteuerten Stils (basierend auf einem Ausdruck) können Sie leicht eine schöne Choroplethen-Karte mit der Verteilung der Unfälle pro Departement erstellen.

Das Bild rechts zeigt die Verteilung pro Departement via Attribute Join.

2. Spatial join

Was ist, wenn man die Verteilung über kleinere Verwaltungseinheiten wie französische EPCIs haben möchte? Im Datensatz ist kein EPCI-Code vorhanden. Das Studio kann sich auf die Leistung von PostGIS verlassen, um räumliche Verknüpfungen durchzuführen.

Suchen Sie wie zuvor den EPCI-Datensatz und fügen Sie ihn zu Ihrem Speicher hinzu, um ihn in der Tileset-Definition verwenden zu können.

Ändern Sie anschliessend die Darstellung der Unfall-Ebene, um die räumliche Aggregation zu wählen, und wählen Sie den richtigen Datensatz für die Verwaltungseinheit. Die SQL-Abfrage wird nun ganz einfach wie folgt geändert:

 

SELECT row_number() OVER ()                      AS id,
      hstore('count', count(accident.id)::text) as tags,
      epci.geom
FROM "d3853343-cf82-4e22-9aee-89e597d41357" as epci
      JOIN "d7208ede-6397-44c6-b646-f4b09fca35e3" as accident
           ON st_contains(epci.geom, accident.geom)
GROUP BY epci.geom

Und schon habe wir’s! Baremaps liefert einen Stream von Vektor-Kacheln mit EPCI-Geometrien und einem Zählattribut, das die Anzahl der Unfälle innerhalb jeder Geometrie berechnet, und man erhält eine feinere Choroplethe-Darstellung auf der Grundlage kleinerer Einheiten.

Baremaps - spatial join | © Camptocamp SA

3. HexBin representation

Wir können sogar noch weiter gehen als bei klassischen Joins. Nehmen wir an, man möchte eine HexBin-Verteilung eines Datensatzes. Dazu kann man ganz einfach die Hexbin-Darstellung wählen, die Hex-Grösse auswählen und das Studio wird die richtige Abfrage erstellen und den Inhalt des Vektor-Tile-Streams aktualisieren.

SELECT row_number() OVER () AS id, hstore('count', count(a.id)::text), hexes.geom
FROM
 ST_HexagonGrid(
     20000,
     ST_SetSRID(ST_EstimatedExtent('d7208ede-6397-44c6-b646-f4b09fca35e3', 'geom'), 3857)
   ) AS hexes
   INNER JOIN
 "d7208ede-6397-44c6-b646-f4b09fca35e3" as a
 ON ST_Intersects(ST_SetSRID(a.geom, '3857'), hexes.geom)
GROUP BY hexes.geom;
Baremaps - hexabin representation | © Camptocamp SA

Hexbin-Darstellung von Autounfällen

Beachten Sie, dass nichts auf der Client-Seite gemacht wird, alle HexBin-Geometrien und Merkmale stammen von den Vektor-Kacheln.

Passen Sie Ihre Kacheln nach Belieben an

Die vorangegangenen Beispiele veranschaulichen die Leistungsfähigkeit von Baremaps Studio anhand eines konkreten Anwendungsfalls. Natürlich können Sie, wie bereits erwähnt, den Inhalt Ihrer Vektorkacheln so anpassen, wie Sie es wünschen:

  • So viele Ebenen wie Sie wollen
  • Beliebig viele Unterabfragen (pro Zoombereich)
  • Beliebig viele komplexe SQL-Abfragen (Puffer, räumliche Verknüpfung, Funktionen usw.)

Die Ausgabe von Baremaps, unabhängig von der Komplexität Ihrer Tileset-Konfiguration, wird nur ein MVT-Endpunkt sein.

Vergessen Sie nicht, dass Baremaps auch über eingebettete OSM-Daten verfügt. Sie können also problemlos OSM- und benutzerdefinierte Daten im selben MVT-Stream kombinieren.

Baremaps - OSM data and accidents | © Camptocamp SA

Mischung aus OSM-Daten (Gebäude, Strassen, Naturgebiete...) und Unfällen (oranger Kreis).

 

Teilen und dekorieren Sie Ihre Karten

Sobald Sie Ihr Tileset, Ihren Ebeneninhalt und Ihr Styling definiert haben, erstellen Sie eine thematische Karte. Baremaps stellt den Backend-Service zur Verfügung, die experimentelle Studio-UI bietet dem Nutzer das Backoffice für die Kartenerstellung, aber die Endnutzung ist das Ergebnis dieser Arbeit, die öffentliche Karte. Der Benutzer kann vom Studio aus entscheiden, ob er die Karte mit dem aktuellen Tileset und Styling über eine öffentliche Frontoffice-Seite veröffentlichen möchte, die dann mit anderen geteilt oder in Websites von Dritten eingebettet werden kann. Dies ist eigentlich das Hauptziel dieser Architektur.

 

Schlussfolgerung

Baremaps bietet eine neue Art der Nutzung, des Austauschs und der Vermarktung von Geodaten.

  • Nutzung der die Kapazitäten des Vektorformats für eine hervorragende Visualisierung,
  • stützt sich auf OGC API Standards
  • hält sich an das Mapbox Kachel-Ökosystem
  • nutzt die Leistungsfähigkeit von PostGIS für die Datenverarbeitung und -analyse
  • bietet eine UI zum einfachen Erstellen und Veröffentlichen Ihrer eigenen Karten

Was in diesem Artikel gezeigt wird, zeigt eine mögliche UI für die MVT-Nutzung, aber es werden noch viele weitere Funktionen kommen, um Karten noch aussagekräftiger und zuverlässiger zu machen (Legende, Popup, synchronisierte Widgets, Dataviz etc...).

Möchten Sie mehr erfahren?

Nutzen Sie ganz einfach dieses Formular zur Kontaktaufnahme!

WIE SIND SIE AUF UNS AUFMERKSAM GEWORDEN? *
Mit dem Absenden dieses Formulars akzeptiere ich, dass die eingegebenen Informationen für die in der Datenschutzrichtlinie beschriebenen Zwecke verwendet werden.

Karriere

Sie sind daran interessiert, in einer inspirierenden Umgebung zu arbeiten und sich unseren motivierten und multikulturellen Teams anzuschliessen?