Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GeoNode at work. how do I do this, how do I do that? FOSS4GNA 2023

GeoNode at work. how do I do this, how do I do that? FOSS4GNA 2023

GeoNode is a Web Spatial Content Management System based entirely on Open Source tools whose purpose is to promote the sharing of data and their management in a simple environment where even non-expert users of GIS technologies can view, edit, manage, and share spatial data, maps, prints and documents attached.

GeoNode is an open source project initiated in 2010 by the World Bank Global Facility for Disaster Reduction and Recovery group (GFDRR), but from 2011 is entirely run by the developer community that the project has been able to attract. It claims some large organizations among its contributors such as the United Nations, the World Bank and the European Commission as well as many NGOs and private companies. Supported by a vast, diverse and global open source community, GeoNode is an official project of the Open Source Geospatial Foundation (OSGeo).

Using an open source stack based on mature and robust frameworks and software like Django, MapStore, PostGIS, GeoServer and pycsw, an organization can build on top of GeoNode its own SDI or geospatial portal. GeoNode provides a large number of user-friendly capabilities, broad interoperability using Open Geospatial Consortium (OGC) standards, and a powerful authentication/authorization mechanism.

Over the years, GeoSolutions has been involved in a number of projects, ranging from local administrations to global institutions, involving GeoNode deployments, customizations and enhancements. A gallery of projects and use cases will showcase the versatility and effectiveness of GeoNode, both as a standalone application and as a service component, for building secured geodata catalogs and web mapping services, dashboards and geostories. In particular the recent advancements in data ingestion and harvesting workflows will be presented, along with the many ways to expose its secured services to third party clients. Examples of GeoNode's builtin capabilities for extending and customizing its frontend application will be showcased.

Simone Giannecchini

November 29, 2023
Tweet

More Decks by Simone Giannecchini

Other Decks in Technology

Transcript

  1. GeoNode at work!
    how do I do this, how do I do that?
    FOSS4G-NA 2023 - Baltimore
    Alessio Fabiani
    GeoSolutions

    View full-size slide

  2. GeoSolutions

    Offices in Italy & US, clients worldwide

    30+ collaborators, 25+ Engineers

    Our products

    Our Offer
    Enterprise
    Support Services
    Deployment
    Subscription
    Professional
    Training
    Customized
    Solutions
    GeoNode

    View full-size slide

  3. Affiliations
    We strongly support Open
    Source, it Is in our core
    We actively participate in OGC
    working groups and get funded
    to advance new open
    standards
    We support standards critical to
    GEOINT

    View full-size slide

  4. Many GeoNodes

    View full-size slide

  5. Creating Downstream Applications
    • GeoNode cannot address all use cases
    • Avoid reinventing the wheel
    • Avoid implicit/explicit forks
    🡪 Custom GeoNode Applications to the rescue!
    • A proper “GeoNode Project”:
    • Start from a template (geonode-project)
    • Generate a “materialized” Django project
    • It extends the “vanilla” GeoNode
    • It provides a custom Django app
    • It provides a ready to use Docker Compose
    configuration

    View full-size slide

  6. Creating Downstream Applications
    This approach offers several opportunities
    • Customize GeoNode look and feel
    • Define a brand new end user interface
    • Extend its models and services without modifying
    GeoNode Core
    • Extend the client application, including developing
    new MapStore client plugins

    View full-size slide

  7. Creating Downstream Applications
    This approach allows us to make the most out of what
    GeoNode core offers without sacrificing versatility and
    specific project needs
    It’s doable, we did it (or at least we tried to ☺ )

    View full-size slide

  8. Custom themes and layout

    View full-size slide

  9. Minerva Interlligence

    View full-size slide

  10. UNMISS
    UNITED NATIONS MISSION IN SOUTH SUDAN

    View full-size slide

  11. AdbPo - Geoportale Distretto Po

    View full-size slide

  12. AdbPo - Geoportale Distretto Po

    View full-size slide

  13. InfoMapNode (WIP)

    View full-size slide

  14. Theming
    • The React client is wrapped inside standard Django
    templates
    • It integrates with the styling with Django templates
    • A simplified Theming is still available from the Django
    admin but advanced customization can be done with SCSS
    variables and CSS overrides
    • More customization available through Django template
    snippets overrides

    View full-size slide

  15. Theming
    • Template ‘snippets’ are used to break GeoNode templates
    granularly and leverage the full power of the Django
    templating system.
    • The geonode-mapstore-client/snippets/custom_theme.html
    snippet can be used to override the base gn-theme
    {% load static %}
    {% block content %}
    <br/>.msgapi .gn-theme {<br/>--gn-primary: #388AC8;<br/>--gn-primary-contrast: #ffffff;<br/>--gn-link-color: #397AAB;<br/>--gn-link-hover-color: #1b4d74;<br/>--gn-focus-color: rgba(57, 122, 171, 0.4);<br/>--gn-footer-color: #ffffff;<br/>--gn-footer-bg: #034f78;<br/>--gn-footer-link-color: #ffffff;<br/>--gn-footer-link-hover-color: #dddddd;<br/>--gn-loader-primary-contrast-color: #ffffff;<br/>--gn-loader-primary-contrast-fade-color: rgba(255, 255, 255, 0.2);<br/>--gn-loader-primary-color: #388AC8;<br/>--gn-loader-primary-fade-color: rgba(56, 138, 200, 0.2);<br/>(….)<br/>

    View full-size slide

  16. Client configuration
    • The client configuration is composed of a static
    configuration (localConfig.js) plus the configuration coming
    from the GeoNode context
    • The client merges these configurations at runtime into a
    global __GEONODE_CONFIG__ Javascript variable.
    • The geonode-mapstore-client/_geonode_config.html template
    can be overridden to customize and extend the
    configuration

    View full-size slide

  17. Frontend configuration
    • In the following example we configure some translations for
    the specific project
    {% extends 'geonode-mapstore-client/_geonode_config.html' %}
    {% block override_local_config %}
    <br/>window.__GEONODE_CONFIG__.overrideLocalConfig = function(localConfig, _) {<br/>const config = _.mergeWith(localConfig, {<br/>"translationsPath": [<br/>"/static/mapstore/ms-translations",<br/>"/static/mapstore/gn-translations",<br/>"/static/mapstore/translations"<br/>]<br/>}, function(objValue, srcValue, key) {<br/>if (_.isArray(objValue)) {<br/>return srcValue;<br/>}<br/>// supportedLocales is an object so it's merged with the default one<br/>// so to remove the default languages we should take only the supportedLocales from override<br/>if (key === 'supportedLocales') {<br/>return srcValue;<br/>}<br/>});<br/>return config;<br/>};<br/>
    {% endblock %}

    View full-size slide

  18. Theme Generator

    View full-size slide

  19. Custom modules

    View full-size slide

  20. The Future – Custom MS plugins
    Custom MapStore plugin for meteorological data

    View full-size slide

  21. DECATASTROPHIZE – Emergency Management
    • Emergency Management 🡪 coordinate field interventions
    • Use Impact Assessment COP as back-end layers
    • Collaborative Map Annotations Module (front-end and back-end)

    View full-size slide

  22. Minerva Intelligence

    View full-size slide

  23. Custom workflows

    View full-size slide

  24. Data integration and ingestion
    ● Custom ETL pipelines with Airflow
    ○ pre-processing
    ○ optimization
    ○ ingestion and publishing (GeoNode API)

    View full-size slide

  25. Data integration and ingestion
    ● QGIS plugins and processing models

    View full-size slide

  26. Data integration and ingestion
    ● And speaking of QGIS you can of course use,
    integrate and extend its GeoNode plugin

    View full-size slide

  27. Custom deployments

    View full-size slide

  28. AuthN/AuthZ integrations
    GeoNode as an Oauth2/OpenID client
    ● Integration with standard OpenID Connect and
    Oauth2 authentication flows
    ● Custom logic for users mapping to groups and roles
    in GeoNode (JWT fields / claims)
    ● We have experience with:
    ○ Azure AD
    ○ WSO2
    ○ Auth0
    ○ Keycloak
    ○ Google

    View full-size slide

  29. AuthN/AuthZ integrations
    GeoNode as an Oauth2/OpenID provider
    ● GeoNode has an integrated Oauth2 provider
    ● Geoserver with GeoNode is an example where
    GeoNode acts as an authentication provider for
    Geoserver
    ● Use cases
    ○ Authentication for Desktop GIS applications (e.g.
    QGIS)
    ○ GeoNode acts as a provider and as a client
    application. Real use case example:
    QGIS -> GeoNode -> Azure AD

    View full-size slide

  30. Using an existing PostgreSQL?
    ● You’re not forced to use the PostgreSQL
    RDMS shipped with GeoNode’s Docker setup
    ● You can use existing services and clusters.
    You just need to configure things and let
    GeoNode create the required schemas, and
    tables (with migrations)

    View full-size slide

  31. Your own DB tables
    ● Yes, you can register an existing DB table
    inside Geoserver (DB store), publish the
    Geoserver layer and then publish to the
    GeoNode catalogue.
    ● BUT
    ○ Backup and Restore will not manage your
    own DB tables, users, etc.
    ○ Styles you create with GeoNode’s style
    editor will be placed in GeoNode’s own
    Geoserver workspace

    View full-size slide

  32. Using an existing Geoserver?
    ● If you want to use it as the reference
    Geoserver for GeoNode you are in charge of:
    ○ installing and configuring the required
    extensions needed by GeoNode
    (GeoFence, Oauth2, Key Authentication,
    SLD REST Service, WPS, etc.)
    ○ configure Geoserver with the expected
    workspace, store and authentication
    services required by GeoNode

    View full-size slide

  33. Using an existing Geoserver?
    ● If you want to serve existing Geoserver
    services through GeoNode the best solution
    is to use GeoNode Remote Services and the
    Harvesting service.

    View full-size slide

  34. Deployment
    ● If you want to full stack of services the best
    approach is with Docker Compose
    ● The manual setup is best suited for
    ○ multi-machine setups
    ○ integration with existing services
    (Proxy/Gateways, DBs, etc.)
    ○ DB and/or Geoserver clustering

    View full-size slide

  35. That’s all!
    http://www.geosolutionsgroup.com/contacts
    [email protected]

    View full-size slide