GIS Interface

From Gcube Wiki
Revision as of 18:16, 18 March 2013 by Fabio.sinibaldi (Talk | contribs) (Get Instance)

Jump to: navigation, search

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.

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);
 }

Write GeoNetwork metadata

GIS-Interface module

Accessing GeoServer

GeoServer Get Methods

GeoServer Put Methods