📄 describeresponse.java
字号:
.append(" ").append(envelope.getLowerCorner().getOrdinate(1))
.append("</gml:pos>");
tempResponse.append("\n <gml:pos>").append(envelope.getUpperCorner().getOrdinate(0))
.append(" ").append(envelope.getUpperCorner().getOrdinate(1))
.append("</gml:pos>");
/*tempResponse.append("\n <gml:timePosition></gml:timePosition>");
tempResponse.append("\n <gml:timePosition></gml:timePosition>");*/
tempResponse.append("\n </lonLatEnvelope>");
if ((cv.getKeywords() != null) && (cv.getKeywords().size() > 0)) {
tempResponse.append("\n <keywords>");
for (int i = 0; i < cv.getKeywords().size(); i++)
tempResponse.append("\n <keyword>" + cv.getKeywords().get(i) + "</keyword>");
tempResponse.append("\n </keywords>");
}
// TODO we need to signal somehow that something went wrong
GeneralEnvelope cvEnvelope = cv.getEnvelope();
// try {
// cvEnvelope =
// CoverageStoreUtils.adjustEnvelopeLongitudeFirst(cv.getEnvelope()
// .getCoordinateReferenceSystem(), cv.getEnvelope());
// } catch (MismatchedDimensionException e) {
// LOGGER.logp(Level.SEVERE, DescribeResponse.class.toString(),
// "private static String printElement(CoverageInfo cv)", e
// .getLocalizedMessage(), e);
//
// } catch (IndexOutOfBoundsException e) {
// LOGGER.logp(Level.SEVERE, DescribeResponse.class.toString(),
// "private static String printElement(CoverageInfo cv)", e
// .getLocalizedMessage(), e);
// } catch (NoSuchAuthorityCodeException e) {
// LOGGER.logp(Level.SEVERE, DescribeResponse.class.toString(),
// "private static String printElement(CoverageInfo cv)", e
// .getLocalizedMessage(), e);
// }
tempResponse.append("\n <domainSet>");
tempResponse.append("\n <spatialDomain>");
// Envelope
tempResponse.append("\n <gml:Envelope")
.append((((cv.getSrsName() != null) && (cv.getSrsName() != ""))
? new StringBuffer(" srsName=\"").append(cv.getSrsName()).append("\"").toString() : ""))
.append(">");
tempResponse.append("\n <gml:pos>")
.append((cvEnvelope != null)
? new StringBuffer(Double.toString(cvEnvelope.getLowerCorner().getOrdinate(0))).append(
" ").append(cvEnvelope.getLowerCorner().getOrdinate(1)).toString() : "")
.append("</gml:pos>");
tempResponse.append("\n <gml:pos>")
.append((cvEnvelope != null)
? new StringBuffer(Double.toString(cvEnvelope.getUpperCorner().getOrdinate(0))).append(
" ").append(cvEnvelope.getUpperCorner().getOrdinate(1)).toString() : "")
.append("</gml:pos>");
tempResponse.append("\n </gml:Envelope>");
// Grid
GridGeometry g = cv.getGrid();
InternationalString[] dimNames = cv.getDimensionNames();
final int gridDimension = g.getGridRange().getDimension();
// RectifiedGrid
tempResponse.append("\n <gml:RectifiedGrid")
.append((g != null)
? new StringBuffer(" dimension=\"").append(gridDimension).append("\"").toString() : "")
.append(">");
String lowers = "";
String upers = "";
for (int r = 0; r < gridDimension; r++) {
lowers += (g.getGridRange().getLower(r) + " ");
upers += (g.getGridRange().getUpper(r) + " ");
}
tempResponse.append("\n <gml:limits>");
tempResponse.append("\n <gml:GridEnvelope>");
tempResponse.append("\n <gml:low>" + ((cvEnvelope != null) ? lowers : "")
+ "</gml:low>");
tempResponse.append("\n <gml:high>" + ((cvEnvelope != null) ? upers : "")
+ "</gml:high>");
tempResponse.append("\n </gml:GridEnvelope>");
tempResponse.append("\n </gml:limits>");
if (dimNames != null) {
for (int dn = 0; dn < dimNames.length; dn++)
tempResponse.append("\n <gml:axisName>" + dimNames[dn] + "</gml:axisName>");
}
tempResponse.append("\n <gml:origin>");
tempResponse.append("\n <gml:pos>"
+ ((cvEnvelope != null)
? (cvEnvelope.getLowerCorner().getOrdinate(0) + " "
+ cvEnvelope.getUpperCorner().getOrdinate(1)) : "") + "</gml:pos>");
tempResponse.append("\n </gml:origin>");
tempResponse.append("\n <gml:offsetVector>"
+ ((cvEnvelope != null)
? ((cvEnvelope.getUpperCorner().getOrdinate(0)
- cvEnvelope.getLowerCorner().getOrdinate(0)) / (g.getGridRange().getUpper(0)
- g.getGridRange().getLower(0))) : 0.0) + " 0.0</gml:offsetVector>");
tempResponse.append("\n <gml:offsetVector>0.0 "
+ ((cvEnvelope != null)
? ((cvEnvelope.getLowerCorner().getOrdinate(1)
- cvEnvelope.getUpperCorner().getOrdinate(1)) / (g.getGridRange().getUpper(1)
- g.getGridRange().getLower(1))) : (-0.0)) + "</gml:offsetVector>");
tempResponse.append("\n </gml:RectifiedGrid>");
tempResponse.append("\n </spatialDomain>");
tempResponse.append("\n </domainSet>");
// rangeSet
CoverageDimension[] dims = cv.getDimensions();
TreeSet nodataValues = new TreeSet();
try {
if (dims != null) {
int numSampleDimensions = dims.length;
tempResponse.append("\n <rangeSet>");
tempResponse.append("\n <RangeSet>");
//tempResponse.append("\n <!-- WARNING: Mandatory metadata '..._rangeset_name' was missing in this context. --> ");
tempResponse.append("\n <name>" + cv.getName() + "</name>");
tempResponse.append("\n <label>" + cv.getLabel() + "</label>");
tempResponse.append("\n <axisDescription>");
tempResponse.append("\n <AxisDescription>");
tempResponse.append("\n <name>Band</name>");
tempResponse.append("\n <label>Band</label>");
tempResponse.append("\n <values>");
if (numSampleDimensions == 1) {
tempResponse.append("\n <singleValue>").append("1")
.append("</singleValue>");
} else {
tempResponse.append("\n <interval>");
tempResponse.append("\n <min>1</min>");
tempResponse.append("\n <max>" + numSampleDimensions + "</max>");
tempResponse.append("\n </interval>");
}
tempResponse.append("\n </values>");
tempResponse.append("\n </AxisDescription>");
tempResponse.append("\n </axisDescription>");
for (int sample = 0; sample < numSampleDimensions; sample++) {
Double[] nodata = dims[sample].getNullValues();
if (nodata != null) {
for (int nd = 0; nd < nodata.length; nd++) {
if (!nodataValues.contains(nodata[nd])) {
nodataValues.add(nodata[nd]);
}
}
}
}
tempResponse.append("\n <nullValues>");
if (nodataValues.size() > 0) {
if (nodataValues.size() == 1) {
tempResponse.append("\n <singleValue>"
+ (Double) nodataValues.first() + "</singleValue>");
} else {
tempResponse.append("\n <interval>");
tempResponse.append("\n <min>" + (Double) nodataValues.first()
+ "</min>");
tempResponse.append("\n <max>" + (Double) nodataValues.last()
+ "</max>");
tempResponse.append("\n <interval>");
}
} else {
tempResponse.append("\n <singleValue>0</singleValue>");
}
tempResponse.append("\n </nullValues>");
tempResponse.append("\n </RangeSet>");
tempResponse.append("\n </rangeSet>");
}
} catch (Exception e) {
// TODO Handle this exceptions ...
e.printStackTrace();
}
if (((cv.getRequestCRSs() != null) && (cv.getRequestCRSs().size() > 0))
|| ((cv.getResponseCRSs() != null) && (cv.getResponseCRSs().size() > 0))) {
tempResponse.append("\n <supportedCRSs>");
if ((cv.getResponseCRSs() != null) && (cv.getResponseCRSs().size() > 0)
&& (cv.getRequestCRSs() != null) && (cv.getRequestCRSs().size() > 0)) {
tempResponse.append("\n <requestResponseCRSs>");
ArrayList CRSs = new ArrayList();
for (int i = 0; i < cv.getRequestCRSs().size(); i++)
if (!CRSs.contains(cv.getRequestCRSs().get(i))) {
CRSs.add(cv.getRequestCRSs().get(i));
}
for (int i = 0; i < cv.getResponseCRSs().size(); i++)
if (!CRSs.contains(cv.getResponseCRSs().get(i))) {
CRSs.add(cv.getResponseCRSs().get(i));
}
for (int i = 0; i < CRSs.size(); i++)
tempResponse.append(CRSs.get(i) + " ");
tempResponse.append("\n </requestResponseCRSs>");
} else {
if ((cv.getRequestCRSs() != null) && (cv.getRequestCRSs().size() > 0)) {
for (int i = 0; i < cv.getRequestCRSs().size(); i++)
tempResponse.append("\n <requestCRSs>" + cv.getRequestCRSs().get(i)
+ "</requestCRSs>");
}
if ((cv.getResponseCRSs() != null) && (cv.getResponseCRSs().size() > 0)) {
for (int i = 0; i < cv.getResponseCRSs().size(); i++)
tempResponse.append("\n <responseCRSs>" + cv.getResponseCRSs().get(i)
+ "</responseCRSs>");
}
}
tempResponse.append("\n </supportedCRSs>");
}
final String nativeFormat = (((cv.getNativeFormat() != null)
&& cv.getNativeFormat().equalsIgnoreCase("GEOTIFF")) ? "GeoTIFF" : cv.getNativeFormat());
String supportedFormat = "";
if (((cv.getSupportedFormats() != null) && (cv.getSupportedFormats().size() > 0))) {
tempResponse.append("\n <supportedFormats"
+ (((nativeFormat != null) && (nativeFormat != ""))
? (" nativeFormat=\"" + nativeFormat + "\"") : "") + ">");
for (int i = 0; i < cv.getSupportedFormats().size(); i++) {
supportedFormat = (String) cv.getSupportedFormats().get(i);
supportedFormat = (supportedFormat.equalsIgnoreCase("GEOTIFF") ? "GeoTIFF"
: supportedFormat);
tempResponse.append("\n <formats>" + supportedFormat + "</formats>");
}
tempResponse.append("\n </supportedFormats>");
}
if (((cv.getInterpolationMethods() != null) && (cv.getInterpolationMethods().size() > 0))) {
tempResponse.append("\n <supportedInterpolations"
+ (((cv.getDefaultInterpolationMethod() != null)
&& (cv.getDefaultInterpolationMethod() != ""))
? (" default=\"" + cv.getDefaultInterpolationMethod() + "\"") : "") + ">");
for (int i = 0; i < cv.getInterpolationMethods().size(); i++)
tempResponse.append("\n <interpolationMethod>"
+ cv.getInterpolationMethods().get(i) + "</interpolationMethod>");
tempResponse.append("\n </supportedInterpolations>");
}
tempResponse.append("\n </CoverageOffering>");
return tempResponse.toString();
} /*
* (non-Javadoc)
*
* @see org.vfny.geoserver.responses.Response#abort()
*/
public void abort(Service gs) {
// nothing to undo
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -