⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 describeresponse.java

📁 电子地图服务器,搭建自己的地图服务
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    .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 + -