Difference between revisions of "GCube-SDI-Suite"
(→Design) |
|||
Line 25: | Line 25: | ||
* Isolating complexity of GIS resources management and infrastructure integration | * Isolating complexity of GIS resources management and infrastructure integration | ||
* Allowing for easy extension of behaviour | * Allowing for easy extension of behaviour | ||
+ | |||
+ | '''NB''' The suite has been recently developped and not yet integrated. Check [#Legacy Components] section to look for previous implementations. | ||
+ | |||
===Components=== | ===Components=== | ||
Line 40: | Line 43: | ||
* '''gCube-GeoNetwork-Client''' [[SDI_Library#Dynamic Clients | Dynamic Clients]] towards '''GeoNetwork REST API'''; | * '''gCube-GeoNetwork-Client''' [[SDI_Library#Dynamic Clients | Dynamic Clients]] towards '''GeoNetwork REST API'''; | ||
* '''gcube-GeoServer-Connector''' internal library used to authenticate gCube calls towards Geoserver; | * '''gcube-GeoServer-Connector''' internal library used to authenticate gCube calls towards Geoserver; | ||
+ | |||
+ | ====Legacy Components==== | ||
+ | The suite aims to provide a common layer for the interaction with gCube SDI, presenting a generic behaviour where possible. Previous attempts to implement a wrapping layer over SDI has been done with the following components : | ||
+ | |||
+ | * '''GIS-Interface''' : common publishing behaviour, dealing with both data and metadata. Built on top of GeoNetwork library. See [https://wiki.gcube-system.org/gcube/GIS_Interface|wiki] and [https://code-repo.d4science.org/gCubeSystem/gis-interface|code]. | ||
+ | * '''GeoNetwork''' : library for the interaction with GeoNetwork service, dealing with both credentials management and metadata publication. See [https://wiki.gcube-system.org/gcube/GeoNetwork_library|wiki] and [https://code-repo.d4science.org/gCubeSystem/geonetwork|code] | ||
==Use cases== | ==Use cases== |
Revision as of 15:26, 2 February 2023
gCube-SDI-Suite is a set of gCube java components that allows for the management of GIS resources (i.e. GeoSpatial DataSets, Metadata, Services..) in D4Science Spatial Data e-Infrastructure. It provides Java implementations of both client-side and service-side features, and it is built on top of OGC standards implementations. It is powered by gCube Features, fully integrating with the infrastructure.
Contents
Design
gCube-SDI-Suite is designed as a modular set of components, each of which can be used as dependency by another application. It fully relies on gCube for infrastructure integration.
The suite code can be found at [[1]], and it is distributed as the following maven artifact in gCube repositories :
<dependency> <groupId>org.gcube.spatial.data</groupId> <artifactId>gcube-sdi-suite</artifactId> <type>pom</type> </dependency>
Philosophy
gCube-SDI-Suite aim is to to simplify developpers' life in managing GIS resources by
- Offering easy ways to perform common tasks
- Encouraging reuse of code by modularization of feature and reduction of dependency tree
- Isolating complexity of GIS resources management and infrastructure integration
- Allowing for easy extension of behaviour
NB The suite has been recently developped and not yet integrated. Check [#Legacy Components] section to look for previous implementations.
Components
gCube-SDI-Suite main components are :
- SDI-Service the main service managing the SDI resources;
- SDI_Library the main library for clients;
Following components are also part of the suite :
- SDI-Interface java library with common classes definition;
- SDI-Test-Commons common library for test purposes;
- SDI-Generic-Client common library for Dynamic Clients;
- gCube-GeoServer-Client Dynamic Clients towards GeoServer REST API;
- gCube-GeoNetwork-Client Dynamic Clients towards GeoNetwork REST API;
- gcube-GeoServer-Connector internal library used to authenticate gCube calls towards Geoserver;
Legacy Components
The suite aims to provide a common layer for the interaction with gCube SDI, presenting a generic behaviour where possible. Previous attempts to implement a wrapping layer over SDI has been done with the following components :
- GIS-Interface : common publishing behaviour, dealing with both data and metadata. Built on top of GeoNetwork library. See [2] and [3].
- GeoNetwork : library for the interaction with GeoNetwork service, dealing with both credentials management and metadata publication. See [4] and [5]
Use cases
Common use cases can be achieved as described in this section.
Using java clients
The best way to interact with the SDI is by using a provided java client described from SDI_Library.
Following clients can be selectively used to support publication and access :
- Metadata client: allows for common ISO Metadata publication use cases in the gCube SDI;
- gCube GeoNetwork client: offers a java client towards GeoNetwork REST API, fully integrated with gCube Infrastructure;
- Datasets client: allows for common GIS Dataset publication use cases in the gCube SDI;
- gCube GeoServer client : offers a java client towards GeoServer REST API, fully integrated with gCube Infrastructure;
Furthermore, the gCube GeoNetwork can be used to :
- Manage SDI subsystems in the VRE (i.e. GeoNetwork, GeoServer, Thredds..)
- Manage metadata templates
- Manage Application profiles
- Manage Credentials and configurations
Managing configurations
Configuration are managed as resources in the SDI. The best way to achieve context configuration is to interact with SDI-Service either by exploiting its REST interface or the provided java client.
HTTP Interfaces
The SDI is composed by various instances of web servers, exposing various HTTP APIs.
- SDI-Service exposes a REST api documented here;
- Subsystems (i.e. GeoNetwork, GeoServer, Thredds..) exposed interfaces may vary by implementation and versions. Instances endpoints and connection parameters should be retrieved by exploiting SDI-Service's REST interface. Moreover, their interface is usually managed by gCube Features offering gCube authentication support.