GIS Interface
The GIS-Interface is a java library which exposes methods to access / modify spatial data and related metadata. The library is designed to rely on GeoNetwork and GeoServer registered in the infrastructure.
The implementation is based on functionalities exposed by geoserver-manager and geonetwork-manager. These libraries are both developped by GeoSolutions under MIT License.
Contents
Modules
The library is distributed in 2 separate modules :
- org.gcube.spatial-data.geonetwork
- exposes functionalities to access / write metadata on GeoNetwork. Most applications which need basic functionalities like search and access to metadata should rely only on this component.
- org.gcube.spatial-data.gis-interface
- used to manage spatial data to/from GeoServer instances. Applications which generate/publish spatial data in the infrastructure should exploit its functionalities.
GeoNetwork module
In order to use org.gcube.spatial-data.geonetwork in your Maven project, you need to add this dependecy in your pom.xml file
<dependency> <groupId>org.gcube.spatial.data</groupId> <artifactId>geonetwork</artifactId> <version>...</version> </dependency>
please, remind to follow guidelines declared in Developing gCube Maven Components.
ISO 19115:2003 metadata compliance
Metadata objects used by the libraries implement GeoAPI interfaces, which are fully compliant to ISO 19115:2003/19139. Current implementation is based on GeoToolkit Metadata module.
Read GeoNetwork metadata
Read Methods exposed by the library are the ones declared by the interface org.gcube.spatial.data.geonetwork.GeoNetworkReader.
Here are some snippets
Get Instance
Please note that the library uses the current scope in order to determine which geonetwork it should rely on.
ScopeProvider.instance.set(...); GeoNetworkReader gn=GeoNetwork.get();
When you test your application, you might don't want to rely on current scope or connect to the gcube infrastructure. You can bypass this behaviour by setting your own configuration like in this snippet.
ConfigurationManager.setConfiguration(new Configuration(){ @Override public String getGeoNetworkEndpoint() { return "http://localhost:9999/geonetwork"; } @Override public String getGeoNetworkUser() { return "admin"; } @Override public String getGeoNetworkPassword() { return "admin"; } }); GeoNetworkReader localGN=GeoNetwork.get();
Query for metadata
// Form query object GNSearchRequest req=new GNSearchRequest(); req.addParam(GNSearchRequest.Param.any, "aquamaps"); // Get Response Object GNSearchResponse resp=gn.query(req); if(resp.getCount()!=0) // Some metadata found for(GNSearchResponse.GNMetadata metadata:resp){ long id=metadata.getId(); // id to the actual metadata Metadata meta=gn.getById(metadata.getUUID()); System.out.println(meta); }