Merge
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/spatial-data/sdi-library@181731 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
5c3010d4a1
commit
e08dab963e
14
pom.xml
14
pom.xml
|
@ -3,11 +3,11 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.gcube.tools</groupId>
|
<groupId>org.gcube.tools</groupId>
|
||||||
<artifactId>maven-parent</artifactId>
|
<artifactId>maven-parent</artifactId>
|
||||||
<version>LATEST</version>
|
<version>1.1.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>org.gcube.spatial.data</groupId>
|
<groupId>org.gcube.spatial.data</groupId>
|
||||||
<artifactId>sdi-library</artifactId>
|
<artifactId>sdi-library</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.1.2-SNAPSHOT</version>
|
||||||
<name>SDI Library</name>
|
<name>SDI Library</name>
|
||||||
<description>Client library to interact with gCube SDI Service</description>
|
<description>Client library to interact with gCube SDI Service</description>
|
||||||
|
|
||||||
|
@ -66,15 +66,21 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.glassfish.jersey.core</groupId>
|
<groupId>org.glassfish.jersey.core</groupId>
|
||||||
<artifactId>jersey-client</artifactId>
|
<artifactId>jersey-client</artifactId>
|
||||||
<version>2.22.2</version>
|
<version>2.24.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.glassfish.jersey.media</groupId>
|
<groupId>org.glassfish.jersey.media</groupId>
|
||||||
<artifactId>jersey-media-json-jackson</artifactId>
|
<artifactId>jersey-media-json-jackson</artifactId>
|
||||||
<version>2.22.2</version>
|
<version>2.24.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish.jersey.media</groupId>
|
||||||
|
<artifactId>jersey-media-multipart</artifactId>
|
||||||
|
<version>2.24.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-api</artifactId>
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
|
|
@ -10,15 +10,16 @@ import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||||
import org.gcube.spatial.data.sdi.interfaces.Metadata;
|
import org.gcube.spatial.data.sdi.interfaces.Metadata;
|
||||||
import org.gcube.spatial.data.sdi.model.metadata.MetadataPublishOptions;
|
import org.gcube.spatial.data.sdi.model.metadata.MetadataPublishOptions;
|
||||||
import org.gcube.spatial.data.sdi.model.metadata.MetadataReport;
|
import org.gcube.spatial.data.sdi.model.metadata.MetadataReport;
|
||||||
|
import org.gcube.spatial.data.sdi.model.metadata.TemplateCollection;
|
||||||
import org.gcube.spatial.data.sdi.model.metadata.TemplateDescriptor;
|
import org.gcube.spatial.data.sdi.model.metadata.TemplateDescriptor;
|
||||||
|
|
||||||
public class SDIClient implements Metadata{
|
public class SDIClient implements Metadata{
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public Set<TemplateDescriptor> getAvailableTemplates() {
|
// public Set<TemplateDescriptor> getAvailableTemplates() {
|
||||||
// TODO Auto-generated method stub
|
// // TODO Auto-generated method stub
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetadataReport pushMetadata(File toPublish) {
|
public MetadataReport pushMetadata(File toPublish) {
|
||||||
|
@ -38,4 +39,10 @@ public class SDIClient implements Metadata{
|
||||||
this.delegate = new AsyncProxyDelegate<WebTarget>(config);
|
this.delegate = new AsyncProxyDelegate<WebTarget>(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TemplateCollection getAvailableTemplates() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,9 @@ public class MetadataPlugin extends SDIAbstractPlugin<WebTarget, Metadata>{
|
||||||
Node node =result.getNode();
|
Node node =result.getNode();
|
||||||
Node child=node.getFirstChild();
|
Node child=node.getFirstChild();
|
||||||
String address = child.getTextContent();
|
String address = child.getTextContent();
|
||||||
GcubeService service = GcubeService.service().withName(new QName(ServiceConstants.NAMESPACE,ServiceConstants.Metadata.INTERFACE)).andPath(ServiceConstants.Metadata.INTERFACE);
|
GcubeService service = GcubeService.service().
|
||||||
|
withName(new QName(ServiceConstants.NAMESPACE,ServiceConstants.Metadata.INTERFACE)).
|
||||||
|
andPath(ServiceConstants.Metadata.INTERFACE);
|
||||||
return TargetFactory.stubFor(service).at(address);
|
return TargetFactory.stubFor(service).at(address);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package org.gcube.spatial.data.sdi.proxies;
|
package org.gcube.spatial.data.sdi.proxies;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.GenericArrayType;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.ws.rs.client.Entity;
|
||||||
import javax.ws.rs.client.WebTarget;
|
import javax.ws.rs.client.WebTarget;
|
||||||
import javax.ws.rs.core.GenericType;
|
import javax.ws.rs.core.GenericType;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
|
@ -15,43 +16,130 @@ import org.gcube.spatial.data.sdi.interfaces.Metadata;
|
||||||
import org.gcube.spatial.data.sdi.model.ServiceConstants;
|
import org.gcube.spatial.data.sdi.model.ServiceConstants;
|
||||||
import org.gcube.spatial.data.sdi.model.metadata.MetadataPublishOptions;
|
import org.gcube.spatial.data.sdi.model.metadata.MetadataPublishOptions;
|
||||||
import org.gcube.spatial.data.sdi.model.metadata.MetadataReport;
|
import org.gcube.spatial.data.sdi.model.metadata.MetadataReport;
|
||||||
import org.gcube.spatial.data.sdi.model.metadata.SetWrapper;
|
import org.gcube.spatial.data.sdi.model.metadata.TemplateCollection;
|
||||||
import org.gcube.spatial.data.sdi.model.metadata.TemplateDescriptor;
|
import org.gcube.spatial.data.sdi.model.metadata.TemplateDescriptor;
|
||||||
|
import org.gcube.spatial.data.sdi.model.metadata.TemplateInvocation;
|
||||||
|
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
|
||||||
|
import org.glassfish.jersey.media.multipart.MultiPartFeature;
|
||||||
|
import org.glassfish.jersey.media.multipart.file.FileDataBodyPart;
|
||||||
|
|
||||||
public class DefaultMetadata implements Metadata{
|
public class DefaultMetadata implements Metadata{
|
||||||
|
|
||||||
private final ProxyDelegate<WebTarget> delegate;
|
private final ProxyDelegate<WebTarget> delegate;
|
||||||
|
|
||||||
|
|
||||||
public DefaultMetadata(ProxyDelegate<WebTarget> config){
|
public DefaultMetadata(ProxyDelegate<WebTarget> config){
|
||||||
this.delegate = config;
|
this.delegate = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<TemplateDescriptor> getAvailableTemplates() {
|
public TemplateCollection getAvailableTemplates() {
|
||||||
Call<WebTarget, Set<TemplateDescriptor>> call = new Call<WebTarget, Set<TemplateDescriptor>>() {
|
Call<WebTarget, Set<TemplateDescriptor>> call = new Call<WebTarget, Set<TemplateDescriptor>>() {
|
||||||
@Override
|
@Override
|
||||||
public Set<TemplateDescriptor> call(WebTarget templates) throws Exception {
|
public Set<TemplateDescriptor> call(WebTarget templates) throws Exception {
|
||||||
return templates.path(ServiceConstants.Metadata.LIST_METHOD).request(MediaType.APPLICATION_JSON).get(SetWrapper.class).getSet();
|
GenericType<Set<TemplateDescriptor>> generic=new GenericType<Set<TemplateDescriptor>>() {
|
||||||
|
};
|
||||||
|
return templates.path(ServiceConstants.Metadata.LIST_METHOD).request(MediaType.APPLICATION_JSON).get(generic);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
try {
|
try {
|
||||||
return delegate.make(call);
|
return new TemplateCollection(new HashSet<TemplateDescriptor>(delegate.make(call)));
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetadataReport pushMetadata(File toPublish) {
|
public MetadataReport pushMetadata(File toPublish) {
|
||||||
// TODO Auto-generated method stub
|
return pushMetadata(toPublish, new MetadataPublishOptions());
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MetadataReport pushMetadata(File toPublish, MetadataPublishOptions options) {
|
public MetadataReport pushMetadata(final File toPublish, final MetadataPublishOptions options) {
|
||||||
// TODO Auto-generated method stub
|
// upload Meta
|
||||||
return null;
|
|
||||||
|
Call<WebTarget,MetadataReport> applyTemplatesCall=null; //needs uploaded id
|
||||||
|
Call<WebTarget,MetadataReport> publishCall=null; //needs uploaded id
|
||||||
|
|
||||||
|
try{
|
||||||
|
Call<WebTarget,String> uploadCall=new Call<WebTarget, String>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String call(WebTarget endpoint) throws Exception {
|
||||||
|
endpoint.register(MultiPartFeature.class);
|
||||||
|
FormDataMultiPart multi=new FormDataMultiPart();
|
||||||
|
// multi.field("file",toPublish,MediaType.APPLICATION_OCTET_STREAM_TYPE);
|
||||||
|
FileDataBodyPart fileDataBodyPart = new FileDataBodyPart(ServiceConstants.Metadata.UPLOADED_FILE_PARAMETER,
|
||||||
|
toPublish,MediaType.APPLICATION_OCTET_STREAM_TYPE);
|
||||||
|
multi.bodyPart(fileDataBodyPart);
|
||||||
|
Response resp= endpoint.request().post(Entity.entity(multi, multi.getMediaType()));
|
||||||
|
checkResponse(resp);
|
||||||
|
return resp.readEntity(String.class);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
final String id=delegate.make(uploadCall);
|
||||||
|
|
||||||
|
applyTemplatesCall=new Call<WebTarget, MetadataReport>() {
|
||||||
|
@Override
|
||||||
|
public MetadataReport call(WebTarget endpoint) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
|
Response resp= endpoint.path(id).
|
||||||
|
request(MediaType.APPLICATION_JSON).put(Entity.entity(
|
||||||
|
new HashSet<TemplateInvocation>(options.getTemplateInvocations()),MediaType.APPLICATION_JSON));
|
||||||
|
checkResponse(resp);
|
||||||
|
return resp.readEntity(MetadataReport.class);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
publishCall=new Call<WebTarget,MetadataReport>(){
|
||||||
|
@Override
|
||||||
|
public MetadataReport call(WebTarget endpoint) throws Exception {
|
||||||
|
Response resp= endpoint.path(ServiceConstants.Metadata.PUBLISH_METHOD).path(id).path(options.getGeonetworkCategory()).
|
||||||
|
queryParam(ServiceConstants.Metadata.VALIDATE_PARAMETER, options.isValidate()).
|
||||||
|
queryParam(ServiceConstants.Metadata.PUBLIC_PARAMETER, options.isMakePublic()).
|
||||||
|
queryParam(ServiceConstants.Metadata.STYLESHEET_PARAMETER, options.getGeonetworkStyleSheet()).
|
||||||
|
request(MediaType.APPLICATION_JSON).get();
|
||||||
|
checkResponse(resp);
|
||||||
|
return resp.readEntity(MetadataReport.class);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}catch(Throwable t){
|
||||||
|
throw new RuntimeException("Unable to upload file.",t);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//APPLY TEMPLATES
|
||||||
|
MetadataReport templateReport =null;
|
||||||
|
try{
|
||||||
|
if(!options.getTemplateInvocations().isEmpty())
|
||||||
|
templateReport=delegate.make(applyTemplatesCall);
|
||||||
|
}catch(Throwable t){
|
||||||
|
throw new RuntimeException("Unable to apply templates",t);
|
||||||
|
}
|
||||||
|
|
||||||
|
//PUBLISH
|
||||||
|
|
||||||
|
|
||||||
|
try{
|
||||||
|
MetadataReport publishReport=delegate.make(publishCall);
|
||||||
|
if(templateReport!=null) publishReport.setAppliedTemplates(templateReport.getAppliedTemplates());
|
||||||
|
return publishReport;
|
||||||
|
}catch(Throwable t){
|
||||||
|
throw new RuntimeException("Unable to publish metadata. ",t);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void checkResponse(Response toCheck) throws Exception{
|
||||||
|
switch(toCheck.getStatusInfo().getFamily()){
|
||||||
|
case SUCCESSFUL : break;
|
||||||
|
default : throw new Exception("Unexpected Response code : "+toCheck.getStatus(),new Exception(toCheck.readEntity(String.class)));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,46 @@
|
||||||
package org.gcube.spatial.data.sdi;
|
package org.gcube.spatial.data.sdi;
|
||||||
|
|
||||||
import org.gcube.spatial.data.sdi.interfaces.*;
|
import java.io.File;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
|
import org.gcube.spatial.data.sdi.interfaces.Metadata;
|
||||||
|
import org.gcube.spatial.data.sdi.model.metadata.MetadataPublishOptions;
|
||||||
|
import org.gcube.spatial.data.sdi.model.metadata.TemplateInvocationBuilder;
|
||||||
import org.gcube.spatial.data.sdi.plugins.SDIAbstractPlugin;
|
import org.gcube.spatial.data.sdi.plugins.SDIAbstractPlugin;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class MetadataTests {
|
public class MetadataTests {
|
||||||
|
|
||||||
@Test
|
@Before
|
||||||
public void getAvailableTemplatesTest(){
|
public void setScope(){
|
||||||
|
// TokenSetter.set("/pred4s/preprod/preVRE");
|
||||||
TokenSetter.set("/gcube/devsec/devVRE");
|
TokenSetter.set("/gcube/devsec/devVRE");
|
||||||
Metadata meta=SDIAbstractPlugin.metadata().build();
|
|
||||||
System.out.println(meta.getAvailableTemplates());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailableTemplatesTest() throws IllegalArgumentException, URISyntaxException{
|
||||||
|
|
||||||
|
Metadata meta=SDIAbstractPlugin.metadata().at(new URI("http://sdi-d-d4s.d4science.org/sdi-service/gcube/service")).build();
|
||||||
|
System.out.println(meta.getAvailableTemplates());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void pushMetadata() throws IllegalArgumentException, URISyntaxException{
|
||||||
|
File toPubilsh=Paths.get("src/test/resources/toEnrichMeta.xml").toFile();
|
||||||
|
|
||||||
|
Metadata meta=SDIAbstractPlugin.metadata().at(new URI("http://sdi-d-d4s.d4science.org/sdi-service/gcube/service")).build();
|
||||||
|
System.out.println(meta.pushMetadata(toPubilsh));
|
||||||
|
|
||||||
|
MetadataPublishOptions opts=new MetadataPublishOptions(new TemplateInvocationBuilder().threddsOnlineResources("my_hostname", "some_dataset.nc", "myPersonalCatalog").get());
|
||||||
|
opts.setGeonetworkCategory("service");
|
||||||
|
opts.setValidate(false);
|
||||||
|
System.out.println(meta.pushMetadata(toPubilsh, opts));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
package org.gcube.spatial.data.sdi.utils;
|
||||||
|
|
||||||
|
public class RegisterGN {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Get definition
|
||||||
|
// push to service
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,119 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<gmd:MD_Metadata xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gmi="http://www.isotc211.org/2005/gmi" xmlns:gmx="http://www.isotc211.org/2005/gmx" xmlns:srv="http://www.isotc211.org/2005/srv" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<gmd:hierarchyLevel>
|
||||||
|
<gmd:MD_ScopeCode codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue="dataset">Dataset</gmd:MD_ScopeCode>
|
||||||
|
</gmd:hierarchyLevel>
|
||||||
|
<gmd:contact>
|
||||||
|
<gmd:CI_ResponsibleParty>
|
||||||
|
<gmd:organisationName>
|
||||||
|
<gco:CharacterString>CNR</gco:CharacterString>
|
||||||
|
</gmd:organisationName>
|
||||||
|
<gmd:role>
|
||||||
|
<gmd:CI_RoleCode codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact">Point of contact</gmd:CI_RoleCode>
|
||||||
|
</gmd:role>
|
||||||
|
</gmd:CI_ResponsibleParty>
|
||||||
|
</gmd:contact>
|
||||||
|
<gmd:metadataStandardName>
|
||||||
|
<gco:CharacterString>Geographic Information — Metadata Part 1: Fundamentals</gco:CharacterString>
|
||||||
|
</gmd:metadataStandardName>
|
||||||
|
<gmd:metadataStandardVersion>
|
||||||
|
<gco:CharacterString>ISO 19115-1:2014(E)</gco:CharacterString>
|
||||||
|
</gmd:metadataStandardVersion>
|
||||||
|
<gmd:spatialRepresentationInfo>
|
||||||
|
<gmd:MD_GridSpatialRepresentation>
|
||||||
|
<gmd:numberOfDimensions>
|
||||||
|
<gco:Integer>4</gco:Integer>
|
||||||
|
</gmd:numberOfDimensions>
|
||||||
|
<gmd:axisDimensionProperties>
|
||||||
|
<gmd:MD_Dimension>
|
||||||
|
<gmd:dimensionSize>
|
||||||
|
<gco:Integer>721</gco:Integer>
|
||||||
|
</gmd:dimensionSize>
|
||||||
|
</gmd:MD_Dimension>
|
||||||
|
</gmd:axisDimensionProperties>
|
||||||
|
<gmd:axisDimensionProperties>
|
||||||
|
<gmd:MD_Dimension>
|
||||||
|
<gmd:dimensionSize>
|
||||||
|
<gco:Integer>361</gco:Integer>
|
||||||
|
</gmd:dimensionSize>
|
||||||
|
</gmd:MD_Dimension>
|
||||||
|
</gmd:axisDimensionProperties>
|
||||||
|
<gmd:axisDimensionProperties>
|
||||||
|
<gmd:MD_Dimension>
|
||||||
|
<gmd:dimensionSize>
|
||||||
|
<gco:Integer>11</gco:Integer>
|
||||||
|
</gmd:dimensionSize>
|
||||||
|
</gmd:MD_Dimension>
|
||||||
|
</gmd:axisDimensionProperties>
|
||||||
|
<gmd:axisDimensionProperties>
|
||||||
|
<gmd:MD_Dimension>
|
||||||
|
<gmd:dimensionSize>
|
||||||
|
<gco:Integer>1</gco:Integer>
|
||||||
|
</gmd:dimensionSize>
|
||||||
|
</gmd:MD_Dimension>
|
||||||
|
</gmd:axisDimensionProperties>
|
||||||
|
<gmd:cellGeometry>
|
||||||
|
<gmd:MD_CellGeometryCode codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#MD_CellGeometryCode" codeListValue="area">Area</gmd:MD_CellGeometryCode>
|
||||||
|
</gmd:cellGeometry>
|
||||||
|
<gmd:transformationParameterAvailability>
|
||||||
|
<gco:Boolean>false</gco:Boolean>
|
||||||
|
</gmd:transformationParameterAvailability>
|
||||||
|
</gmd:MD_GridSpatialRepresentation>
|
||||||
|
</gmd:spatialRepresentationInfo>
|
||||||
|
<gmd:identificationInfo>
|
||||||
|
<gmd:MD_DataIdentification>
|
||||||
|
<gmd:citation>
|
||||||
|
<gmd:CI_Citation>
|
||||||
|
<gmd:title>
|
||||||
|
<gco:CharacterString>NetCDF of ARGO data aggregated at .25 degrees - produced by D4Science through the DataMiner platform</gco:CharacterString>
|
||||||
|
</gmd:title>
|
||||||
|
<gmd:citedResponsibleParty>
|
||||||
|
<gmd:CI_ResponsibleParty>
|
||||||
|
<gmd:organisationName>
|
||||||
|
<gco:CharacterString>CNR</gco:CharacterString>
|
||||||
|
</gmd:organisationName>
|
||||||
|
<gmd:role>
|
||||||
|
<gmd:CI_RoleCode codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="originator">Originator</gmd:CI_RoleCode>
|
||||||
|
</gmd:role>
|
||||||
|
</gmd:CI_ResponsibleParty>
|
||||||
|
</gmd:citedResponsibleParty>
|
||||||
|
<gmd:otherCitationDetails>
|
||||||
|
<gco:CharacterString>Paolo Scarponi - scarponi@isti.cnr.it; Gianpaolo Coro - coro@isti.cnr.it</gco:CharacterString>
|
||||||
|
</gmd:otherCitationDetails>
|
||||||
|
</gmd:CI_Citation>
|
||||||
|
</gmd:citation>
|
||||||
|
<gmd:pointOfContact>
|
||||||
|
<gmd:CI_ResponsibleParty>
|
||||||
|
<gmd:organisationName>
|
||||||
|
<gco:CharacterString>CNR</gco:CharacterString>
|
||||||
|
</gmd:organisationName>
|
||||||
|
<gmd:role>
|
||||||
|
<gmd:CI_RoleCode codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact">Point of contact</gmd:CI_RoleCode>
|
||||||
|
</gmd:role>
|
||||||
|
</gmd:CI_ResponsibleParty>
|
||||||
|
</gmd:pointOfContact>
|
||||||
|
</gmd:MD_DataIdentification>
|
||||||
|
</gmd:identificationInfo>
|
||||||
|
<gmd:contentInfo>
|
||||||
|
<gmd:MD_CoverageDescription>
|
||||||
|
<gmd:dimension>
|
||||||
|
<gmd:MD_Band>
|
||||||
|
<gmd:sequenceIdentifier>
|
||||||
|
<gco:MemberName>
|
||||||
|
<gco:aName>
|
||||||
|
<gco:CharacterString>Backscattering</gco:CharacterString>
|
||||||
|
</gco:aName>
|
||||||
|
<gco:attributeType>
|
||||||
|
<gco:TypeName>
|
||||||
|
<gco:aName>
|
||||||
|
<gco:CharacterString>double[721][361][11][1]</gco:CharacterString>
|
||||||
|
</gco:aName>
|
||||||
|
</gco:TypeName>
|
||||||
|
</gco:attributeType>
|
||||||
|
</gco:MemberName>
|
||||||
|
</gmd:sequenceIdentifier>
|
||||||
|
</gmd:MD_Band>
|
||||||
|
</gmd:dimension>
|
||||||
|
</gmd:MD_CoverageDescription>
|
||||||
|
</gmd:contentInfo>
|
||||||
|
</gmd:MD_Metadata>
|
Loading…
Reference in New Issue