private void writeCrsGeoCoding(CrsGeoCoding geoCoding, String nodeType, StringBuffer sb) { sb.append("\n"); sb.append("\nThe ").append(nodeType).append(" uses a geo-coding based on a cartographic map CRS.\n"); sb.append("\n"); sb.append("Well-known text format (WKT) of the map CRS:\n\n"); sb.append(geoCoding.getMapCRS().toString()); sb.append("\n"); sb.append("Image-to-map transformation:\n\n"); sb.append(geoCoding.getImageToMapTransform().toString()); }
private void writeCrsGeoCoding(CrsGeoCoding geoCoding, String nodeType) { addRow("The " + nodeType + " uses a geo-coding based on a cartographic map CRS."); addEmptyRow(); addRow("WKT of the map CRS", geoCoding.getMapCRS().toString()); addEmptyRow(); addRow("Image-to-map transformation", geoCoding.getImageToMapTransform().toString()); }
private String createCrsGeoCodingString(CrsGeoCoding geoCoding) { final double[] matrix = new double[6]; final MathTransform transform = geoCoding.getImageToMapTransform(); if (transform instanceof AffineTransform) { ((AffineTransform) transform).getMatrix(matrix); } return "<" + DimapProductConstants.TAG_ROOT + ">" + LS + " <Coordinate_Reference_System>" + LS + " <WKT>" + LS + geoCoding.getMapCRS().toString() + " </WKT>" + LS + " </Coordinate_Reference_System>" + LS + " <Geoposition>" + LS + " <IMAGE_TO_MODEL_TRANSFORM>" + StringUtils.arrayToCsv( matrix) + "</IMAGE_TO_MODEL_TRANSFORM>" + LS + " </Geoposition>" + LS + "</" + DimapProductConstants.TAG_ROOT + ">"; }
private void writeGeoCoding(final CrsGeoCoding crsGeoCoding, int indent) { final CoordinateReferenceSystem crs = crsGeoCoding.getMapCRS(); final double[] matrix = new double[6]; final MathTransform transform = crsGeoCoding.getImageToMapTransform(); if (transform instanceof AffineTransform) { ((AffineTransform) transform).getMatrix(matrix); } final String[] crsTags = createTags(indent, DimapProductConstants.TAG_COORDINATE_REFERENCE_SYSTEM); println(crsTags[0]); final String[] wktTags = createTags(indent + 1, DimapProductConstants.TAG_WKT); println(wktTags[0]); final char[] wsChars = new char[wktTags[0].length()]; Arrays.fill(wsChars, ' '); final String ws = new String(wsChars); for (String wktLine : crs.toString().split(SystemUtils.LS)) { print(ws); println(wktLine); } println(wktTags[1]); println(crsTags[1]); final String[] geopositionTags = createTags(indent, DimapProductConstants.TAG_GEOPOSITION); println(geopositionTags[0]); printLine(indent + 1, DimapProductConstants.TAG_IMAGE_TO_MODEL_TRANSFORM, StringUtils.arrayToCsv(matrix)); println(geopositionTags[1]); }
public void testCreateGeoCodingForCrsGeoCoding() throws Exception { final Rectangle imageBounds = new Rectangle(product.getSceneRasterWidth(), product.getSceneRasterHeight()); final AffineTransform expectedI2m = new AffineTransform(0.12, 1.23, 2.34, 3.45, 4.56, 5.67); final CoordinateReferenceSystem expectedCrs = CRS.decode("EPSG:4326"); final byte[] bytes = createCrsGeoCodingString( new CrsGeoCoding(expectedCrs, imageBounds, expectedI2m)).getBytes(); final Document dom = DimapProductHelpers.createDom(new ByteArrayInputStream(bytes)); final GeoCoding geoCoding = DimapProductHelpers.createGeoCoding(dom, product)[0]; assertNotNull(geoCoding); assertEquals(CrsGeoCoding.class, geoCoding.getClass()); final CrsGeoCoding crsGeoCoding = (CrsGeoCoding) geoCoding; final CoordinateReferenceSystem mapCRS = crsGeoCoding.getMapCRS(); // ignoring metadata because scope and domainOfValidity are not restored // but not important for our GeoCoding assertTrue(CRS.equalsIgnoreMetadata(expectedCrs, mapCRS)); assertEquals(expectedI2m, crsGeoCoding.getImageToMapTransform()); }