1 of 39

GeoNode Einführung

GeoNode & GeoServer Workshop – GFZ – 9.7.2025

2 of 39

Agenda

  • GeoNode Übersicht
  • User Guide (UI and admin)
  • Deployment Optionen
  • GeoNode-Blueprint-Docker
  • Tooling (documentation and examples)
  • (Development)
  • Outlook v5

2 -- 2025-07-09 GeoServer und GeoNode

3 of 39

GeoNode Übersicht

3

Title Image

3 -- 2025-07-09 GeoServer und GeoNode

4 of 39

Was ist GeoNode ?

  • CMS für räumliche Daten
  • Gesamtsystem bestehend aus:
    • Django-Anwendung (geonode)
    • Celery (task-queue)
    • GeoServer (geodata)
    • rabbitmq (broker)
    • PostGIS DB (database)
    • nginx (web server)
    • memcache (web cache)
  • OGC Schnittstellen des GeoServers plus �Katalogschnittstelle (OGC CSW)
  • Verwaltungsschnittstelle über REST-API

4 -- 2025-07-09 GeoServer und GeoNode

5 of 39

Kurzer Steckbrief

  • Besteht seit 2009/2010
  • Aktuelle Version: v4.4.4
  • Nächste Version: v5.0.0 (diesen Monat)
  • Haupt-Contributor: GeoSolutions
  • Open Source: GPL-3.0 Lizenz
  • OSGeo:
    • Project Steering Committee
    • GeoSolutions (x2), GeoBeyond, �CSGIS, Thünen Institute

https://www.geosolutionsgroup.com/

https://github.com/geosolutions-it

5 -- 2025-07-09 GeoServer und GeoNode

6 of 39

52n und GeoNode

  • Seit 2020 verstärkter Fokus auf FDI
  • Produktentwicklung → Infrastrukturen und Off-the-Shelf-Software
  • GeoNode als einzige (zumindest aber eines der wenigen) OSS Software,�die eine GDI als Gesamtpaket mitbringt
    • Backend für Spatial Data
    • User Management (AuthN und AuthZ)
    • Maps, Dashboards, Metadaten Management
  • Austausch mit Kunden aus Forschungsinstituten (z.B. Thünen)
  • Suche nach Maintenance Strategien für vorh. Deployments: v3 → v4
  • 52n als technischer Sparringspartner zwischen Upstream und Nutzer

6 -- 2025-07-09 GeoServer und GeoNode

7 of 39

GeoNode Anwendergruppe

  • Deutsche Anwendergruppe (aus dem Forschungsbereich)
    • Thünen, ZALF, IGB, 52n, ..
    • weitere: IStG, (DFKI)
    • GFZ?
  • Seit 2022 auf GitHub: https://github.com/GeoNodeUserGroup-DE
  • Slack-Channel: geonode-scientific-de
  • Regelm. Meetings
    • Remote: 3x im Jahr, plus
    • Birds-of-a-Feather FOSSGIS
  • Austausch und Synergie-Effekte
  • Gemeinsame Stimme bilden
  • Hilfe bei Problemen

7 -- 2025-07-09 GeoServer und GeoNode

8 of 39

GeoNode Anwendergruppe

  • Achievements so far
    • Deployment: Docker Blueprint und K8S via Helm
    • APP: externalapplications (Ext. Web Applikation als GeoNode Ressource)
    • APP: Atlas (Kuratieren von Inhalten), siehe Thünen Atlas
    • APP: Tabular Data (aka non-spatial data via tabular data resources)
    • Thünen-Atlas (Docker Blueprint)
      • Cutting-Edge Upstream Integration
      • GDI-DE Compliance
      • Aufbauen einer Blaupause für Entwicklungen und Maintenance
    • Tooling: geonodectl
  • Upstream Contributions (bugfixes, discussions, contributions)

8 -- 2025-07-09 GeoServer und GeoNode

9 of 39

GeoNode Features

  • Unterstützt eine Vielzahl von Vektor-/Rasterdaten
    • Shape files, GeoTIFF, GeoJSON, …
  • Daneben: Hochladen von Dokumenten
  • Management von standardisierten Metadaten für Datensätze
    • ISO 19115, aber auch z.B. Dublin Core
  • Einbindung von externen Daten/Diensten (WMS, MapServer)
  • User/Group Management mit feinen Einstellungen für den Zugriff auf Datensätzen

9 -- 2025-07-09 GeoServer und GeoNode

10 of 39

GeoNode Features

  • Karten (Räumliche Komposition und Styling von Datensätzen)
  • GeoStories (Mix aus Stories, Dokumenten und Karten)
  • Dashboards (Zusammenstellung von Widgets und Karten)
  • Einfaches Web GIS
    • Subsetting
    • Feature editing
    • Style editing
    • Diagrams

10 -- 2025-07-09 GeoServer und GeoNode

11 of 39

“GeoNode” Features

  • GeoServer: Zugriff auf räuml. Daten (Open Standards)
    • OGC WMS
    • OGC WFS
    • OGC WCS
  • pyCSW: Data Discovery (Open Standards)
    • OGC CSW
    • OpenSearch
  • GeoNode: Eigene REST API

11 -- 2025-07-09 GeoServer und GeoNode

12 of 39

GeoNode als Gesamtsystem

12 -- 2025-07-09 GeoServer und GeoNode

13 of 39

geonode/geoserver

  • Vorkonfigurierter GeoServer
    • eigenes DataDir
    • notwendige Plugins
  • GeoNode ist der Driver
    • Upload von Daten
    • Konfiguriert die Metadata (Title, Abstract, Attribute, ..)
    • Kümmert sich selbst um Styling, Zugriffseinschränkungen, etc.
  • Upload von Datensätzen erfolgt intern via gdal
  • GeoNode kann aber mit dem GeoServer synchronisiert werden
    • siehe GeoNode CLI (Tooling)

13 -- 2025-07-09 GeoServer und GeoNode

14 of 39

GeoNode Benutzeroberfläche

14

Title Image

14 -- 2025-07-09 GeoServer und GeoNode

15 of 39

15 -- 2025-07-09 GeoServer und GeoNode

16 of 39

16 -- 2025-07-09 GeoServer und GeoNode

17 of 39

17 -- 2025-07-09 GeoServer und GeoNode

18 of 39

18 -- 2025-07-09 GeoServer und GeoNode

19 of 39

19 -- 2025-07-09 GeoServer und GeoNode

20 of 39

20 -- 2025-07-09 GeoServer und GeoNode

21 of 39

21 -- 2025-07-09 GeoServer und GeoNode

22 of 39

Django Admin

  • Groups and Users
  • Permissions
  • Datasets, Maps, ...
  • Subsites
  • Harvesting Tasks
  • Keywords
  • Thesaurus
  • Site Config
    • OAuth
    • Announcements
    • Menus
    • Themes

22 -- 2025-07-09 GeoServer und GeoNode

23 of 39

23 -- 2025-07-09 GeoServer und GeoNode

24 of 39

GeoNode Deployment Optionen

24

Title Image

24 -- 2025-07-09 GeoServer und GeoNode

25 of 39

Standard Installations

  • Vanilla Deployment
    • Docker Compose direkt aus dem Upstream Repo
    • Möglicherweise bald nicht mehr supported
  • geonode-project
    • Detaching vom Upstream Repo
    • Track Changes :(
    • Buildzeiten :(
  • GeoNode Docker Blueprint (aka thuenen_atlas)
    • Best of both worlds?
    • See discussion: https://github.com/GeoNode/geonode/discussions/12008
    • Goal: Verfolgen von Upstream und Downstream Changes via Git

25 -- 2025-07-09 GeoServer und GeoNode

26 of 39

Kubernetes

26 -- 2025-07-09 GeoServer und GeoNode

27 of 39

Advanced Installation

  • Einzelinstallationen aller Komponenten
  • Keine Erfahrungen hierzu bisher
  • → nicht empfohlen

  • Empfohlen: geonode-blueprint-docker (folgt)

27 -- 2025-07-09 GeoServer und GeoNode

28 of 39

Configuration and Settings

  • `.env` → Umgebungsvariablen
  • `settings.py` → Auslesen der Env und Erstellen der Settings (Django)

  • Pitfall!
    • Namen der Variablen matchen�nicht immer!
    • Siehe Dokumentation

28 -- 2025-07-09 GeoServer und GeoNode

29 of 39

Theme, Design, UI anpassen

  • Django Anpassungen
    • Admin Schnittstelle nutzen
    • Template-Overwrite: Bekannte Mini-Snippets (header, footer, ..)
    • CSS-Variablen über `custom_theme.html` setzen: Theme-Generator
  • UI Anpassungen

29 -- 2025-07-09 GeoServer und GeoNode

30 of 39

GeoNode Blueprint Docker

30

Title Image

30 -- 2025-07-09 GeoServer und GeoNode

31 of 39

GeoNode Blueprint

  • GeoNode Downstream Template
  • Ziel: Maintenance
    • Template Changes nachverfolgen
    • Eigene Changes versionieren
    • Upstream Changes nachverfolgen
  • Genese und Dokumentation:

https://github.com/GeoNodeUserGroup-DE/geonode-blueprint-docker

31 -- 2025-07-09 GeoServer und GeoNode

32 of 39

GeoNode Tooling

32

Title Image

32 -- 2025-07-09 GeoServer und GeoNode

33 of 39

Werkzeuge

  • Django
    • `python manage.py <command>`
    • migrations, loaddata, backup/restore, importlayers, ..
    • Django Admin
  • geonodectl
    • Commandline Tool für die REST API
    • https://github.com/GeoNodeUserGroup-DE/geonodectl
    • Kann zum scripten verwendet werden
    • Beispiel: Data Pipeline
  • Dokumentation REST API:

33 -- 2025-07-09 GeoServer und GeoNode

34 of 39

Beispiele mit curl

  • Upload eines ZIP-Archivs mit Shapefiles:�

$ curl -F "base_file=@Admin_Boundary_level1_Divisions.zip" \

-F "zip_file=@Admin_Boundary_level1_Divisions.zip" \

-u admin:admin \

-F 'data={"overwrite_existing_layer": true }' \

-X POST http://172.18.0.1:8001/api/v2/uploads/upload

Warum “doppelt”? → Importer Code verlangt zwingend `base_file` (Bug?)

34 -- 2025-07-09 GeoServer und GeoNode

35 of 39

Beispiele mit curl

  • Verlinken von Ressourcen��$ curl -H "Content-Type: application/json" \

-u admin:admin \

--data-raw '{"target": [ 1 ]}' \

-X POST http://172.18.0.1:8001/api/v2/resources/2/linked_resources

35 -- 2025-07-09 GeoServer und GeoNode

36 of 39

GeoNode Development

36

Title Image

36 -- 2025-07-09 GeoServer und GeoNode

37 of 39

Repositories

37 -- 2025-07-09 GeoServer und GeoNode

38 of 39

GeoNode v5

38

Title Image

38 -- 2025-07-09 GeoServer und GeoNode

39 of 39

Coming Soon

39 -- 2025-07-09 GeoServer und GeoNode