public Map<String, Object> grid() throws Exception { Element gridElement = ReaderUtils.getChildElement(coverage, "grid"); if (gridElement == null) { return null; } HashMap<String, Object> grid = new HashMap<String, Object>(); grid.put( "dimension", Integer.parseInt(ReaderUtils.getAttribute(gridElement, "dimension", true))); Element lowElement = ReaderUtils.getChildElement(gridElement, "low"); String[] lows = lowElement.getFirstChild().getTextContent().trim().split(" "); int[] low = new int[lows.length]; for (int i = 0; i < low.length; i++) { low[i] = Integer.parseInt(lows[i]); } grid.put("low", low); Element highElement = ReaderUtils.getChildElement(gridElement, "high"); String[] highs = highElement.getFirstChild().getTextContent().trim().split(" "); int[] high = new int[highs.length]; for (int i = 0; i < high.length; i++) { high[i] = Integer.parseInt(highs[i]); } grid.put("high", high); Element[] axisNameElements = ReaderUtils.getChildElements(gridElement, "axisName"); String[] axisName = new String[axisNameElements.length]; for (int i = 0; i < axisName.length; i++) { axisName[i] = axisNameElements[i].getFirstChild().getTextContent(); } grid.put("axisName", axisName); Element geoTransformElement = ReaderUtils.getChildElement(gridElement, "geoTransform"); if (geoTransformElement != null) { Map<String, Double> geoTransform = new HashMap<String, Double>(); String scaleX = ReaderUtils.getChildText(geoTransformElement, "scaleX"); String scaleY = ReaderUtils.getChildText(geoTransformElement, "scaleY"); String shearX = ReaderUtils.getChildText(geoTransformElement, "shearX"); String shearY = ReaderUtils.getChildText(geoTransformElement, "shearY"); String translateX = ReaderUtils.getChildText(geoTransformElement, "translateX"); String translateY = ReaderUtils.getChildText(geoTransformElement, "translateY"); geoTransform.put("scaleX", scaleX != null ? new Double(scaleX) : null); geoTransform.put("scaleY", scaleY != null ? new Double(scaleY) : null); geoTransform.put("shearX", shearX != null ? new Double(shearX) : null); geoTransform.put("shearY", shearY != null ? new Double(shearY) : null); geoTransform.put("translateX", translateX != null ? new Double(translateX) : null); geoTransform.put("translateY", translateY != null ? new Double(translateY) : null); grid.put("geoTransform", geoTransform); } return grid; }
public List<String> styles() throws Exception { Element styleRoot = ReaderUtils.getChildElement(coverage, "styles"); if (styleRoot != null) { List<String> styleNames = new ArrayList<String>(); Element[] styles = ReaderUtils.getChildElements(styleRoot, "style"); for (Element style : styles) { styleNames.add(style.getTextContent().trim()); } return styleNames; } else { return Collections.emptyList(); } }
public Map<String, Serializable> parameters() { Element parameters = ReaderUtils.getChildElement(coverage, "parameters"); if (parameters == null) { return Collections.EMPTY_MAP; } HashMap<String, Serializable> map = new HashMap<String, Serializable>(); Element[] parameter = ReaderUtils.getChildElements(parameters, "parameter"); for (int i = 0; i < parameter.length; i++) { String name = parameter[i].getAttribute("name"); String value = parameter[i].getAttribute("value"); map.put(name, value); } return map; }
public List<Map> coverageDimensions() throws Exception { Element[] cdElements = ReaderUtils.getChildElements(coverage, "CoverageDimension"); List<Map> cds = new ArrayList<Map>(); for (int i = 0; i < cdElements.length; i++) { HashMap cd = new HashMap(); cd.put("name", ReaderUtils.getChildText(cdElements[i], "name")); cd.put("description", ReaderUtils.getChildText(cdElements[i], "description")); Element intervalElement = ReaderUtils.getChildElement(cdElements[i], "interval"); double min = Double.parseDouble(ReaderUtils.getChildText(intervalElement, "min")); double max = Double.parseDouble(ReaderUtils.getChildText(intervalElement, "max")); cd.put("min", min); cd.put("max", max); cds.add(cd); } return cds; }
public Map<String, Object> envelope() throws Exception { Element envelopeElement = ReaderUtils.getChildElement(coverage, "envelope"); HashMap<String, Object> e = new HashMap<String, Object>(); String nativeCrsWkt = ReaderUtils.getAttribute(envelopeElement, "crs", false); nativeCrsWkt = nativeCrsWkt.replaceAll("'", "\""); e.put("crs", nativeCrsWkt); e.put("srsName", ReaderUtils.getAttribute(envelopeElement, "srsName", false)); Element[] posElements = ReaderUtils.getChildElements(envelopeElement, "pos"); String[] pos1 = posElements[0].getFirstChild().getTextContent().split(" "); String[] pos2 = posElements[1].getFirstChild().getTextContent().split(" "); e.put("x1", Double.parseDouble(pos1[0])); e.put("y1", Double.parseDouble(pos1[1])); e.put("x2", Double.parseDouble(pos2[0])); e.put("y2", Double.parseDouble(pos2[1])); return e; }