added possiblity to alter the Coverage Band Details of layers & WCS EO tag
This commit is contained in:
parent
b5bf46a189
commit
1c60c1d94a
@ -26,13 +26,13 @@
|
|||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.dimensions.GSCoverageDimensionEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.feature.FeatureTypeAttribute;
|
import it.geosolutions.geoserver.rest.encoder.feature.FeatureTypeAttribute;
|
||||||
import it.geosolutions.geoserver.rest.encoder.feature.GSAttributeEncoder;
|
import it.geosolutions.geoserver.rest.encoder.feature.GSAttributeEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadatalink.GSMetadataLinkInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadatalink.GSMetadataLinkInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadatalink.ResourceMetadataLinkInfo;
|
import it.geosolutions.geoserver.rest.encoder.metadatalink.ResourceMetadataLinkInfo;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -182,5 +182,51 @@ public class RESTResource {
|
|||||||
}
|
}
|
||||||
return metaLinksList;
|
return metaLinksList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decodes the list of GSCoverageDimensionEncoder from the GeoServer Resource
|
||||||
|
*
|
||||||
|
* @author Henry Rotzoll
|
||||||
|
*
|
||||||
|
* @return the list of GSCoverageDimensionEncoder
|
||||||
|
*/
|
||||||
|
public List<GSCoverageDimensionEncoder> getEncodedDimensionsInfoList()
|
||||||
|
{
|
||||||
|
List<GSCoverageDimensionEncoder> dimensionList = null;
|
||||||
|
final Element dimensionsRoot = rootElem.getChild("dimensions");
|
||||||
|
|
||||||
|
if(dimensionsRoot!=null)
|
||||||
|
{
|
||||||
|
final List<Element> dimensions = dimensionsRoot.getChildren();
|
||||||
|
if (dimensions != null)
|
||||||
|
{
|
||||||
|
dimensionList = new ArrayList<GSCoverageDimensionEncoder>(dimensions.size());
|
||||||
|
for (Element coverageDimension : dimensions)
|
||||||
|
{
|
||||||
|
final String name = coverageDimension.getChildText("name");
|
||||||
|
final String description = coverageDimension.getChildText("description");
|
||||||
|
String rangeMin = null;
|
||||||
|
String rangeMax = null;
|
||||||
|
final Element rangeElement = coverageDimension.getChild("range");
|
||||||
|
if(rangeElement != null)
|
||||||
|
{
|
||||||
|
rangeMin = rangeElement.getChildText("min");
|
||||||
|
rangeMax = rangeElement.getChildText("max");
|
||||||
|
}
|
||||||
|
final String unit = coverageDimension.getChildText("unit");
|
||||||
|
String dimensionTypeName = null;
|
||||||
|
final Element dimensionTypeElement = coverageDimension.getChild("dimensionType");
|
||||||
|
if(dimensionTypeElement != null)
|
||||||
|
{
|
||||||
|
dimensionTypeName = dimensionTypeElement.getChildText("name");
|
||||||
|
}
|
||||||
|
final GSCoverageDimensionEncoder coverageDimensionEncoder = new GSCoverageDimensionEncoder(name, description, rangeMin, rangeMax, unit, dimensionTypeName);
|
||||||
|
dimensionList.add(coverageDimensionEncoder);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dimensionList;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -26,6 +26,7 @@
|
|||||||
package it.geosolutions.geoserver.rest.encoder;
|
package it.geosolutions.geoserver.rest.encoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder;
|
import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.dimensions.GSCoverageDimensionEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
|
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder;
|
||||||
@ -57,10 +58,12 @@ public abstract class GSResourceEncoder
|
|||||||
public final static String METADATA="metadata";
|
public final static String METADATA="metadata";
|
||||||
public final static String KEYWORDS="keywords";
|
public final static String KEYWORDS="keywords";
|
||||||
public final static String METADATALINKS="metadataLinks";
|
public final static String METADATALINKS="metadataLinks";
|
||||||
|
public final static String DIMENSIONS="dimensions";
|
||||||
|
|
||||||
final private GSMetadataEncoder metadata = new GSMetadataEncoder();
|
final private GSMetadataEncoder metadata = new GSMetadataEncoder();
|
||||||
final private Element keywordsListEncoder = new Element(KEYWORDS);
|
final private Element keywordsListEncoder = new Element(KEYWORDS);
|
||||||
final private Element metadataLinksListEncoder = new Element(METADATALINKS);
|
final private Element metadataLinksListEncoder = new Element(METADATALINKS);
|
||||||
|
final private Element dimensionsEncoder = new Element(DIMENSIONS);
|
||||||
|
|
||||||
private class GSMetadataEncoder extends NestedElementEncoder{
|
private class GSMetadataEncoder extends NestedElementEncoder{
|
||||||
public GSMetadataEncoder() {
|
public GSMetadataEncoder() {
|
||||||
@ -69,7 +72,7 @@ public abstract class GSResourceEncoder
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param rootName
|
* @param rootName
|
||||||
* Actually 'feature' or 'coverage'
|
* Actually 'feature' or 'coverage'
|
||||||
* @see GSFeatureTypeEncoder
|
* @see GSFeatureTypeEncoder
|
||||||
* @see GSCoverageEncoder
|
* @see GSCoverageEncoder
|
||||||
@ -131,6 +134,10 @@ public abstract class GSResourceEncoder
|
|||||||
|
|
||||||
public void setMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo) {
|
public void setMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo) {
|
||||||
setMetadataDimension(key, dimensionInfo, false);
|
setMetadataDimension(key, dimensionInfo, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMetadataString(String key, String value) {
|
||||||
|
metadata.set(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -227,6 +234,52 @@ public abstract class GSResourceEncoder
|
|||||||
: true;
|
: true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a CoverageDimensionInfo to the GeoServer Resource
|
||||||
|
*
|
||||||
|
* @param coverageDimensionInfo
|
||||||
|
*
|
||||||
|
* @author Henry Rotzoll
|
||||||
|
*/
|
||||||
|
public void addCoverageDimensionInfo (GSCoverageDimensionEncoder coverageDimensionInfo) {
|
||||||
|
if(ElementUtils.contains(getRoot(), DIMENSIONS) == null)addContent(dimensionsEncoder);
|
||||||
|
dimensionsEncoder.addContent(coverageDimensionInfo.getRoot());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds quickly a CoverageDimensionInfo to the GeoServer Resource
|
||||||
|
*
|
||||||
|
* @author Henry Rotzoll
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* @param description
|
||||||
|
* @param rangeMin
|
||||||
|
* @param rangeMax
|
||||||
|
* @param unit
|
||||||
|
* @param dimensionType
|
||||||
|
*/
|
||||||
|
public void addCoverageDimensionInfo(String name, String description, String rangeMin, String rangeMax, String unit, String dimensionType) {
|
||||||
|
final GSCoverageDimensionEncoder coverageDimensionEncoder = new GSCoverageDimensionEncoder(
|
||||||
|
name, description, rangeMin, rangeMax, unit, dimensionType);
|
||||||
|
addCoverageDimensionInfo(coverageDimensionEncoder);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a CoverageDimensionInfo from the list using the CoverageDimension Name
|
||||||
|
* (CoverageDimensionInfo content)
|
||||||
|
*
|
||||||
|
* @author Henry Rotzoll
|
||||||
|
*
|
||||||
|
* @param coverageDimensionName
|
||||||
|
* @return true if something is removed, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean delCoverageDimensionInfo(final String coverageDimensionName) {
|
||||||
|
return (dimensionsEncoder
|
||||||
|
.removeContent(GSCoverageDimensionEncoder
|
||||||
|
.getFilterByContent(coverageDimensionName))).size() == 0 ? false
|
||||||
|
: true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reprojection policy for a published layer. One of:
|
* Reprojection policy for a published layer. One of:
|
||||||
|
|||||||
@ -0,0 +1,394 @@
|
|||||||
|
/*
|
||||||
|
* GeoServer-Manager - Simple Manager Library for GeoServer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007,2011 GeoSolutions S.A.S.
|
||||||
|
* http://www.geo-solutions.it
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
package it.geosolutions.geoserver.rest.encoder.dimensions;
|
||||||
|
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
|
||||||
|
|
||||||
|
import org.jdom.Element;
|
||||||
|
import org.jdom.filter.Filter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GSCoverageDimension - encodes a CoverageDimension for a given GeoServer Resource
|
||||||
|
* (feature type /coverage), as follows:
|
||||||
|
* <pre>
|
||||||
|
* {@code
|
||||||
|
* final GSCoverageDimensionEncoder gsCoverageDimensionEncoder = new GSCoverageDimensionEncoder("GRAY_INDEX", "GridSampleDimension[-2.147483648E9,-2.147483648E9]", String.valueOf(Integer.MIN_VALUE), String.valueOf(Integer.MAX_VALUE), "dobson units³", "REAL_32BITS");
|
||||||
|
* coverageEncoder.addCoverageDimensionInfo(gsCoverageDimensionEncoder);
|
||||||
|
* }
|
||||||
|
* </pre>
|
||||||
|
* For this example, the XML output is:
|
||||||
|
* <pre>
|
||||||
|
* {@code
|
||||||
|
*<coverageDimension>
|
||||||
|
* <name>GRAY_INDEX</name>
|
||||||
|
* <description>GridSampleDimension[-2.147483648E9,2.147483648E9]</description>
|
||||||
|
* <range>
|
||||||
|
* <min>-2.147483648E9</min>
|
||||||
|
* <max>2.147483647E9</max>
|
||||||
|
* </range>
|
||||||
|
* <unit>dobson units³</unit>
|
||||||
|
* <dimensionType>
|
||||||
|
* <name>REAL_32BITS</name>
|
||||||
|
* </dimensionType>
|
||||||
|
*</coverageDimension>
|
||||||
|
* }
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author Henry Rotzoll (henry.rotzoll@dlr.de)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GSCoverageDimensionEncoder extends XmlElement {
|
||||||
|
|
||||||
|
/** A class to filter the GSCoverageDimension by content
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static class filterByContent implements Filter {
|
||||||
|
|
||||||
|
final private String key;
|
||||||
|
|
||||||
|
public filterByContent(String content) {
|
||||||
|
this.key = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public boolean matches(Object obj) {
|
||||||
|
Element el = ((Element) obj)
|
||||||
|
.getChild("name");
|
||||||
|
if (el != null && el.getTextTrim().equals(key)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a Filter using the GSCoverageDimensionEncoder content (GSCoverageDimensionEncoder name)
|
||||||
|
*
|
||||||
|
* @param content
|
||||||
|
* @return the filter
|
||||||
|
*/
|
||||||
|
public static Filter getFilterByContent(String content) {
|
||||||
|
return new filterByContent(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new GSCoverageDimensionEncoder
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public GSCoverageDimensionEncoder() {
|
||||||
|
super("coverageDimension");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs quickly a GSCoverageDimensionEncoder info
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* @param description
|
||||||
|
* @param rangeMin
|
||||||
|
* @param rangeMax
|
||||||
|
* @param unit
|
||||||
|
* @param dimensionTypeName
|
||||||
|
*/
|
||||||
|
public GSCoverageDimensionEncoder(String name, String description, String rangeMin, String rangeMax, String unit, String dimensionTypeName) {
|
||||||
|
super("coverageDimension");
|
||||||
|
this.setup(name, description, rangeMin, rangeMax, unit, dimensionTypeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set-up quickly a GSCoverageDimensionEncoder info
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* @param description
|
||||||
|
* @param rangeMin
|
||||||
|
* @param rangeMax
|
||||||
|
* @param unit
|
||||||
|
* @param dimensionTypeName
|
||||||
|
*/
|
||||||
|
protected void setup(String name, String description, String rangeMin, String rangeMax, String unit, String dimensionTypeName)
|
||||||
|
{
|
||||||
|
//name
|
||||||
|
setName(name);
|
||||||
|
|
||||||
|
//description
|
||||||
|
setDescription(description);
|
||||||
|
|
||||||
|
//range
|
||||||
|
setRange(rangeMin, rangeMax);
|
||||||
|
|
||||||
|
//unit
|
||||||
|
setUnit(unit);
|
||||||
|
|
||||||
|
//dimension Type
|
||||||
|
setDimensionType(dimensionTypeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the value of the GSCoverageDimensionEncoder member
|
||||||
|
*
|
||||||
|
* @param memberName
|
||||||
|
* @return the value of the GSCoverageDimensionEncoder member
|
||||||
|
*/
|
||||||
|
protected String getMember(String memberName) {
|
||||||
|
Element el = this.getRoot().getChild(memberName.toString());
|
||||||
|
if (el != null)
|
||||||
|
return el.getTextTrim();
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a GSCoverageDimensionEncoder member
|
||||||
|
*
|
||||||
|
* @param memberName
|
||||||
|
* @return true if the GSCoverageDimensionEncoder member is removed
|
||||||
|
*/
|
||||||
|
protected boolean delMemberIfExists(String memberName) {
|
||||||
|
if(ElementUtils.contains(getRoot(), memberName) != null)
|
||||||
|
{
|
||||||
|
return ElementUtils.remove(this.getRoot(), this.getRoot().getChild(memberName.toString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a GSCoverageDimensionEncoder member
|
||||||
|
*
|
||||||
|
* @param memberName
|
||||||
|
* @param memberValue
|
||||||
|
*/
|
||||||
|
protected void setMember(String memberName, String memberValue) {
|
||||||
|
if(memberName != null && !memberName.isEmpty() && memberValue != null && !memberValue.isEmpty())
|
||||||
|
{
|
||||||
|
delMemberIfExists(memberName); //delete the element if it already exists
|
||||||
|
addMember(memberName.toString(), memberValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* adds a GSCoverageDimensionEncoder member
|
||||||
|
*
|
||||||
|
* @param memberName
|
||||||
|
* @param memberValue
|
||||||
|
*/
|
||||||
|
protected void addMember(String memberName, String memberValue) {
|
||||||
|
if(memberName != null && !memberName.isEmpty() && memberValue != null && ! memberValue.isEmpty())
|
||||||
|
{
|
||||||
|
set(memberName.toString(), memberValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the name
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
*/
|
||||||
|
public void setName(String name){
|
||||||
|
setMember("name", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the name
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* @return true if removed
|
||||||
|
*/
|
||||||
|
public boolean delName(){
|
||||||
|
return this.delMemberIfExists("name");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the description
|
||||||
|
*
|
||||||
|
* @return description
|
||||||
|
*/
|
||||||
|
public String getName(){
|
||||||
|
return this.getMember("name");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the description
|
||||||
|
*
|
||||||
|
* @param description
|
||||||
|
*/
|
||||||
|
public void setDescription(String description){
|
||||||
|
setMember("description", description);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the description
|
||||||
|
*
|
||||||
|
* @param description
|
||||||
|
* @return true if removed
|
||||||
|
*/
|
||||||
|
public boolean delDescription(){
|
||||||
|
return this.delMemberIfExists("description");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the description
|
||||||
|
*
|
||||||
|
* @return description
|
||||||
|
*/
|
||||||
|
public String getDescription(){
|
||||||
|
return this.getMember("description");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the range
|
||||||
|
*
|
||||||
|
* @param range
|
||||||
|
*/
|
||||||
|
public void setRange(String rangeMin, String rangeMax){
|
||||||
|
if(rangeMin != null && !rangeMin.isEmpty() && rangeMax != null && !rangeMax.isEmpty())
|
||||||
|
{
|
||||||
|
remove("range");
|
||||||
|
|
||||||
|
final Element rangeElement = new Element("range");
|
||||||
|
final Element rangeMinElement = new Element("min");
|
||||||
|
rangeMinElement.setText(rangeMin);
|
||||||
|
final Element rangeMaxElement = new Element("max");
|
||||||
|
rangeMaxElement.setText(rangeMax);
|
||||||
|
rangeElement.addContent(rangeMinElement);
|
||||||
|
rangeElement.addContent(rangeMaxElement);
|
||||||
|
addContent(rangeElement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the range
|
||||||
|
*
|
||||||
|
* @param range
|
||||||
|
* @return true if removed
|
||||||
|
*/
|
||||||
|
public boolean delRange(){
|
||||||
|
return this.delMemberIfExists("range");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the range min
|
||||||
|
*
|
||||||
|
* @return range min
|
||||||
|
*/
|
||||||
|
public String getRangeMin(){
|
||||||
|
final Element range = this.getRoot().getChild("range");
|
||||||
|
if(range != null)
|
||||||
|
{
|
||||||
|
return range.getChildText("min");
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the range max
|
||||||
|
*
|
||||||
|
* @return range max
|
||||||
|
*/
|
||||||
|
public String getRangeMax(){
|
||||||
|
final Element range = this.getRoot().getChild("range");
|
||||||
|
if(range != null)
|
||||||
|
{
|
||||||
|
return range.getChildText("max");
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the unit
|
||||||
|
*
|
||||||
|
* @param unit
|
||||||
|
*/
|
||||||
|
public void setUnit(String unit){
|
||||||
|
setMember("unit", unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the type
|
||||||
|
*
|
||||||
|
* @param type
|
||||||
|
* @return true if removed
|
||||||
|
*/
|
||||||
|
public boolean delUnit(){
|
||||||
|
return this.delMemberIfExists("unit");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the unit
|
||||||
|
*
|
||||||
|
* @return unit
|
||||||
|
*/
|
||||||
|
public String getUnit(){
|
||||||
|
return this.getMember("unit");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the dimensionType
|
||||||
|
*
|
||||||
|
* @param dimensionType
|
||||||
|
*/
|
||||||
|
public void setDimensionType(String dimensionTypeName){
|
||||||
|
if(dimensionTypeName != null && !dimensionTypeName.isEmpty())
|
||||||
|
{
|
||||||
|
remove("dimensionType");
|
||||||
|
|
||||||
|
final Element dimensionTypeElement = new Element("dimensionType");
|
||||||
|
final Element dimensionNameElement = new Element("name");
|
||||||
|
dimensionNameElement.setText(dimensionTypeName);
|
||||||
|
dimensionTypeElement.addContent(dimensionNameElement);
|
||||||
|
addContent(dimensionTypeElement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the dimensionType
|
||||||
|
*
|
||||||
|
* @param dimensionType
|
||||||
|
* @return true if removed
|
||||||
|
*/
|
||||||
|
public boolean delDimensionType(){
|
||||||
|
return this.delMemberIfExists("dimensionType");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the dimensionType name
|
||||||
|
*
|
||||||
|
* @return dimensionType name
|
||||||
|
*/
|
||||||
|
public String getDimensionTypeName(){
|
||||||
|
final Element dimensionType = this.getRoot().getChild("dimensionType");
|
||||||
|
if(dimensionType != null)
|
||||||
|
{
|
||||||
|
return dimensionType.getChildText("name");
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package it.geosolutions.geoserver.decoder;
|
package it.geosolutions.geoserver.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTCoverage;
|
import it.geosolutions.geoserver.rest.decoder.RESTCoverage;
|
||||||
import it.geosolutions.geoserver.rest.encoder.feature.GSAttributeEncoder;
|
import it.geosolutions.geoserver.rest.encoder.dimensions.GSCoverageDimensionEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadatalink.GSMetadataLinkInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadatalink.GSMetadataLinkInfoEncoder;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -18,6 +18,7 @@ import org.springframework.core.io.ClassPathResource;
|
|||||||
* ResourceDecoderTest
|
* ResourceDecoderTest
|
||||||
*
|
*
|
||||||
* @author eblondel
|
* @author eblondel
|
||||||
|
* @author Henry Rotzoll (henry.rotzoll@dlr.de)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class ResourceDecoderTest {
|
public class ResourceDecoderTest {
|
||||||
@ -111,5 +112,19 @@ public class ResourceDecoderTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCoverageDimension() throws IOException{
|
||||||
|
|
||||||
|
List<GSCoverageDimensionEncoder> list = coverage.getEncodedDimensionsInfoList();
|
||||||
|
|
||||||
|
GSCoverageDimensionEncoder coverageDimension1 = list.get(0);
|
||||||
|
Assert.assertEquals("GRAY_INDEX", coverageDimension1.getName());
|
||||||
|
Assert.assertEquals("GridSampleDimension[-Infinity,Infinity]", coverageDimension1.getDescription());
|
||||||
|
Assert.assertEquals("-inf", coverageDimension1.getRangeMin());
|
||||||
|
Assert.assertEquals("inf", coverageDimension1.getRangeMax());
|
||||||
|
Assert.assertEquals("dobson units³", coverageDimension1.getUnit());
|
||||||
|
Assert.assertEquals("REAL_32BITS", coverageDimension1.getDimensionTypeName());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2007 - 2011 GeoSolutions S.A.S.
|
||||||
|
* http://www.geo-solutions.it
|
||||||
|
*
|
||||||
|
* GPLv3 + Classpath exception
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package it.geosolutions.geoserver.rest.encoder.dimensions;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Henry Rotzoll (henry.rotzoll@dlr.de)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GSCoverageDimensionEncoderTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void coverageDimensionTest(){
|
||||||
|
GSCoverageDimensionEncoder encoder = new GSCoverageDimensionEncoder("GRAY_INDEX", "GridSampleDimension[-Infinity,Infinity]", "-inf", "inf", "dobson units³", "REAL_32BITS");
|
||||||
|
|
||||||
|
Assert.assertEquals("GRAY_INDEX", encoder.getName());
|
||||||
|
Assert.assertEquals("GridSampleDimension[-Infinity,Infinity]", encoder.getDescription());
|
||||||
|
Assert.assertEquals("-inf", encoder.getRangeMin());
|
||||||
|
Assert.assertEquals("inf", encoder.getRangeMax());
|
||||||
|
Assert.assertEquals("dobson units³", encoder.getUnit());
|
||||||
|
Assert.assertEquals("REAL_32BITS", encoder.getDimensionTypeName());
|
||||||
|
|
||||||
|
Assert.assertTrue(encoder.delName());
|
||||||
|
Assert.assertTrue(encoder.delDescription());
|
||||||
|
Assert.assertTrue(encoder.delRange());
|
||||||
|
Assert.assertTrue(encoder.delUnit());
|
||||||
|
Assert.assertTrue(encoder.delDimensionType());
|
||||||
|
|
||||||
|
Assert.assertNull( encoder.getName());
|
||||||
|
Assert.assertNull(encoder.getDescription());
|
||||||
|
Assert.assertNull(encoder.getRangeMin());
|
||||||
|
Assert.assertNull(encoder.getRangeMax());
|
||||||
|
Assert.assertNull(encoder.getUnit());
|
||||||
|
Assert.assertNull(encoder.getDimensionTypeName());
|
||||||
|
|
||||||
|
encoder.setName("GRAY_INDEX");
|
||||||
|
encoder.setDescription("GridSampleDimension[-Infinity,Infinity]");
|
||||||
|
encoder.setRange("-inf", "inf");
|
||||||
|
encoder.setUnit("dobson units³");
|
||||||
|
encoder.setDimensionType("REAL_32BITS");
|
||||||
|
|
||||||
|
Assert.assertEquals("GRAY_INDEX", encoder.getName());
|
||||||
|
Assert.assertEquals("GridSampleDimension[-Infinity,Infinity]", encoder.getDescription());
|
||||||
|
Assert.assertEquals("-inf", encoder.getRangeMin());
|
||||||
|
Assert.assertEquals("inf", encoder.getRangeMax());
|
||||||
|
Assert.assertEquals("dobson units³", encoder.getUnit());
|
||||||
|
Assert.assertEquals("REAL_32BITS", encoder.getDimensionTypeName());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -28,6 +28,7 @@ import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
|
|||||||
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder21;
|
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder21;
|
||||||
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder;
|
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.authorityurl.GSAuthorityURLInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.authorityurl.GSAuthorityURLInfoEncoder;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.dimensions.GSCoverageDimensionEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.identifier.GSIdentifierInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.identifier.GSIdentifierInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
||||||
@ -60,6 +61,7 @@ import org.springframework.core.io.ClassPathResource;
|
|||||||
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
|
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
|
||||||
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
|
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
|
||||||
* emmanuel.blondel@fao.org
|
* emmanuel.blondel@fao.org
|
||||||
|
* @author Henry Rotzoll (henry.rotzoll@dlr.de)
|
||||||
*/
|
*/
|
||||||
public class GSFeatureEncoderTest extends GeoserverRESTTest {
|
public class GSFeatureEncoderTest extends GeoserverRESTTest {
|
||||||
protected final static Logger LOGGER = LoggerFactory.getLogger(GSFeatureEncoderTest.class);
|
protected final static Logger LOGGER = LoggerFactory.getLogger(GSFeatureEncoderTest.class);
|
||||||
@ -91,6 +93,9 @@ public class GSFeatureEncoderTest extends GeoserverRESTTest {
|
|||||||
"http://www.organization.org/metadata1");
|
"http://www.organization.org/metadata1");
|
||||||
fte.addMetadataLinkInfo(metadatalink);
|
fte.addMetadataLinkInfo(metadatalink);
|
||||||
|
|
||||||
|
GSCoverageDimensionEncoder gsCoverageDimensionEncoder = new GSCoverageDimensionEncoder("GRAY_INDEX", "GridSampleDimension[-Infinity,Infinity]", "-inf", "inf", "dobson units³", "REAL_32BITS");
|
||||||
|
fte.addCoverageDimensionInfo(gsCoverageDimensionEncoder);
|
||||||
|
|
||||||
GSLayerEncoder layerEncoder = null;
|
GSLayerEncoder layerEncoder = null;
|
||||||
if (!GSVersionDecoder.VERSION.getVersion(VERSION).equals(
|
if (!GSVersionDecoder.VERSION.getVersion(VERSION).equals(
|
||||||
GSVersionDecoder.VERSION.UNRECOGNIZED)) {
|
GSVersionDecoder.VERSION.UNRECOGNIZED)) {
|
||||||
@ -147,6 +152,24 @@ public class GSFeatureEncoderTest extends GeoserverRESTTest {
|
|||||||
layerEncoder));
|
layerEncoder));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCoverageDimension() throws IOException {
|
||||||
|
GSFeatureTypeEncoder fte = new GSFeatureTypeEncoder();
|
||||||
|
fte.setNativeName("testlayer");
|
||||||
|
fte.setName("testlayer" + "_NEW");
|
||||||
|
fte.setTitle("title");
|
||||||
|
fte.setNativeCRS("EPSG:4326");
|
||||||
|
fte.setDescription("desc");
|
||||||
|
fte.setEnabled(true);
|
||||||
|
|
||||||
|
assertFalse(fte.toString().contains("<dimensions><coverageDimension><name>GRAY_INDEX</name><description>GridSampleDimension[-Infinity,Infinity]</description><range><min>-inf</min><max>inf</max></range><unit>dobson units³</unit><dimensionType><name>REAL_32BITS</name></dimensionType></coverageDimension></dimensions>"));
|
||||||
|
|
||||||
|
GSCoverageDimensionEncoder gsCoverageDimensionEncoder = new GSCoverageDimensionEncoder("GRAY_INDEX", "GridSampleDimension[-Infinity,Infinity]", "-inf", "inf", "dobson units³", "REAL_32BITS");
|
||||||
|
fte.addCoverageDimensionInfo(gsCoverageDimensionEncoder);
|
||||||
|
LOGGER.debug("fte.toString() :" + fte.toString());
|
||||||
|
assertTrue(fte.toString().contains("<dimensions><coverageDimension><name>GRAY_INDEX</name><description>GridSampleDimension[-Infinity,Infinity]</description><range><min>-inf</min><max>inf</max></range><unit>dobson units³</unit><dimensionType><name>REAL_32BITS</name></dimensionType></coverageDimension></dimensions>"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
243
src/test/resources/testdata/coverageExample.xml
vendored
243
src/test/resources/testdata/coverageExample.xml
vendored
@ -1,115 +1,134 @@
|
|||||||
|
|
||||||
<coverage>
|
<coverage>
|
||||||
<name>granuleTestMosaic</name>
|
<name>granuleTestMosaic</name>
|
||||||
<nativeName>granuleTestMosaic</nativeName>
|
<nativeName>granuleTestMosaic</nativeName>
|
||||||
<abstract>this is an abstract</abstract>
|
<abstract>this is an abstract</abstract>
|
||||||
<namespace>
|
<namespace>
|
||||||
<name>topp</name>
|
<name>topp</name>
|
||||||
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8080/geoserver/rest/namespaces/topp.xml" type="application/xml"/>
|
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
|
||||||
</namespace>
|
href="http://localhost:8080/geoserver/rest/namespaces/topp.xml" type="application/xml" />
|
||||||
<title>granuleTestMosaic</title>
|
</namespace>
|
||||||
<keywords>
|
<title>granuleTestMosaic</title>
|
||||||
<string>keyword1</string>
|
<keywords>
|
||||||
<string>keyword2</string>
|
<string>keyword1</string>
|
||||||
<string>keyword3</string>
|
<string>keyword2</string>
|
||||||
</keywords>
|
<string>keyword3</string>
|
||||||
<metadataLinks>
|
</keywords>
|
||||||
<metadataLink>
|
<metadataLinks>
|
||||||
<type>text/xml</type>
|
<metadataLink>
|
||||||
<metadataType>ISO19115:2003</metadataType>
|
<type>text/xml</type>
|
||||||
<content>http://www.organization.org/metadata1</content>
|
<metadataType>ISO19115:2003</metadataType>
|
||||||
</metadataLink>
|
<content>http://www.organization.org/metadata1</content>
|
||||||
<metadataLink>
|
</metadataLink>
|
||||||
<type>text/html</type>
|
<metadataLink>
|
||||||
<metadataType>ISO19115:2003</metadataType>
|
<type>text/html</type>
|
||||||
<content>http://www.organization.org/metadata2</content>
|
<metadataType>ISO19115:2003</metadataType>
|
||||||
</metadataLink>
|
<content>http://www.organization.org/metadata2</content>
|
||||||
</metadataLinks>
|
</metadataLink>
|
||||||
<nativeCRS>GEOGCS["WGS 84", 
|
</metadataLinks>
|
||||||
DATUM["World Geodetic System 1984", 
|
<nativeCRS>GEOGCS["WGS 84", 
|
||||||
SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], 
|
DATUM["World Geodetic System 1984", 
|
||||||
AUTHORITY["EPSG","6326"]], 
|
SPHEROID["WGS 84", 6378137.0, 298.257223563,
|
||||||
PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], 
|
AUTHORITY["EPSG","7030"]], 
|
||||||
UNIT["degree", 0.017453292519943295], 
|
AUTHORITY["EPSG","6326"]], 
|
||||||
AXIS["Geodetic longitude", EAST], 
|
PRIMEM["Greenwich", 0.0,
|
||||||
AXIS["Geodetic latitude", NORTH], 
|
AUTHORITY["EPSG","8901"]], 
|
||||||
AUTHORITY["EPSG","4326"]]</nativeCRS>
|
UNIT["degree", 0.017453292519943295], 
|
||||||
<srs>EPSG:4326</srs>
|
AXIS["Geodetic longitude", EAST], 
|
||||||
<nativeBoundingBox>
|
AXIS["Geodetic latitude", NORTH], 
|
||||||
<minx>-180.0</minx>
|
AUTHORITY["EPSG","4326"]]</nativeCRS>
|
||||||
<maxx>180.0</maxx>
|
<srs>EPSG:4326</srs>
|
||||||
<miny>-90.0</miny>
|
<nativeBoundingBox>
|
||||||
<maxy>90.0</maxy>
|
<minx>-180.0</minx>
|
||||||
<crs>EPSG:4326</crs>
|
<maxx>180.0</maxx>
|
||||||
</nativeBoundingBox>
|
<miny>-90.0</miny>
|
||||||
<latLonBoundingBox>
|
<maxy>90.0</maxy>
|
||||||
<minx>-180.0</minx>
|
<crs>EPSG:4326</crs>
|
||||||
<maxx>180.0</maxx>
|
</nativeBoundingBox>
|
||||||
<miny>-90.0</miny>
|
<latLonBoundingBox>
|
||||||
<maxy>90.0</maxy>
|
<minx>-180.0</minx>
|
||||||
<crs>EPSG:4326</crs>
|
<maxx>180.0</maxx>
|
||||||
</latLonBoundingBox>
|
<miny>-90.0</miny>
|
||||||
<projectionPolicy>NONE</projectionPolicy>
|
<maxy>90.0</maxy>
|
||||||
<enabled>true</enabled>
|
<crs>EPSG:4326</crs>
|
||||||
<advertised>true</advertised>
|
</latLonBoundingBox>
|
||||||
<metadata>
|
<projectionPolicy>NONE</projectionPolicy>
|
||||||
<entry key="time">
|
<enabled>true</enabled>
|
||||||
<dimensionInfo>
|
<advertised>true</advertised>
|
||||||
<enabled>true</enabled>
|
<metadata>
|
||||||
<presentation>LIST</presentation>
|
<entry key="time">
|
||||||
</dimensionInfo>
|
<dimensionInfo>
|
||||||
</entry>
|
<enabled>true</enabled>
|
||||||
<entry key="elevation">
|
<presentation>LIST</presentation>
|
||||||
<dimensionInfo>
|
</dimensionInfo>
|
||||||
<enabled>true</enabled>
|
</entry>
|
||||||
<presentation>DISCRETE_INTERVAL</presentation>
|
<entry key="elevation">
|
||||||
<resolution>2</resolution>
|
<dimensionInfo>
|
||||||
</dimensionInfo>
|
<enabled>true</enabled>
|
||||||
</entry>
|
<presentation>DISCRETE_INTERVAL</presentation>
|
||||||
</metadata>
|
<resolution>2</resolution>
|
||||||
<store class="coverageStore">
|
</dimensionInfo>
|
||||||
<name>granuleTestMosaic</name>
|
</entry>
|
||||||
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/granuleTestMosaic.xml" type="application/xml"/>
|
</metadata>
|
||||||
</store>
|
<store class="coverageStore">
|
||||||
<grid dimension="2">
|
<name>granuleTestMosaic</name>
|
||||||
<range>
|
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
|
||||||
<low>0 0</low>
|
href="http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/granuleTestMosaic.xml"
|
||||||
<high>540 270</high>
|
type="application/xml" />
|
||||||
</range>
|
</store>
|
||||||
<transform>
|
<grid dimension="2">
|
||||||
<scaleX>0.6666666666666666</scaleX>
|
<range>
|
||||||
<scaleY>-0.6666666666666666</scaleY>
|
<low>0 0</low>
|
||||||
<shearX>0.0</shearX>
|
<high>540 270</high>
|
||||||
<shearY>0.0</shearY>
|
</range>
|
||||||
<translateX>-179.66666666666666</translateX>
|
<transform>
|
||||||
<translateY>89.66666666666667</translateY>
|
<scaleX>0.6666666666666666</scaleX>
|
||||||
</transform>
|
<scaleY>-0.6666666666666666</scaleY>
|
||||||
<crs>EPSG:4326</crs>
|
<shearX>0.0</shearX>
|
||||||
</grid>
|
<shearY>0.0</shearY>
|
||||||
<parameters>
|
<translateX>-179.66666666666666</translateX>
|
||||||
<entry>
|
<translateY>89.66666666666667</translateY>
|
||||||
<string>AllowMultithreading</string>
|
</transform>
|
||||||
<string>false</string>
|
<crs>EPSG:4326</crs>
|
||||||
</entry>
|
</grid>
|
||||||
<entry>
|
<dimensions>
|
||||||
<string>MaxAllowedTiles</string>
|
<coverageDimension>
|
||||||
<string>2147483647</string>
|
<name>GRAY_INDEX</name>
|
||||||
</entry>
|
<description>GridSampleDimension[-Infinity,Infinity]</description>
|
||||||
<entry>
|
<range>
|
||||||
<string>InputTransparentColor</string>
|
<min>-inf</min>
|
||||||
<string></string>
|
<max>inf</max>
|
||||||
</entry>
|
</range>
|
||||||
<entry>
|
<unit>dobson units³</unit>
|
||||||
<string>SUGGESTED_TILE_SIZE</string>
|
<dimensionType>
|
||||||
<string>256,256</string>
|
<name>REAL_32BITS</name>
|
||||||
</entry>
|
</dimensionType>
|
||||||
<entry>
|
</coverageDimension>
|
||||||
<string>USE_JAI_IMAGEREAD</string>
|
</dimensions>
|
||||||
<string>false</string>
|
<parameters>
|
||||||
</entry>
|
<entry>
|
||||||
<entry>
|
<string>AllowMultithreading</string>
|
||||||
<string>BackgroundValues</string>
|
<string>false</string>
|
||||||
<string>-1.0</string>
|
</entry>
|
||||||
</entry>
|
<entry>
|
||||||
</parameters>
|
<string>MaxAllowedTiles</string>
|
||||||
|
<string>2147483647</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>InputTransparentColor</string>
|
||||||
|
<string></string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>SUGGESTED_TILE_SIZE</string>
|
||||||
|
<string>256,256</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>USE_JAI_IMAGEREAD</string>
|
||||||
|
<string>false</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>BackgroundValues</string>
|
||||||
|
<string>-1.0</string>
|
||||||
|
</entry>
|
||||||
|
</parameters>
|
||||||
</coverage>
|
</coverage>
|
||||||
Loading…
Reference in New Issue
Block a user