/** * @throws XMLStreamException * @throws FactoryConfigurationError * @throws IOException * @throws UnknownCRSException * @throws TransformationException */ @Test public void testPolygon() throws XMLStreamException, FactoryConfigurationError, IOException, UnknownCRSException, TransformationException { XMLStreamReaderWrapper xmlReader = new XMLStreamReaderWrapper(this.getClass().getResource(BASE_DIR + POLYGON_FILE)); xmlReader.nextTag(); Assert.assertEquals(XMLStreamConstants.START_ELEMENT, xmlReader.getEventType()); Assert.assertEquals(new QName(GML21NS, "Polygon"), xmlReader.getName()); Polygon polygon = new GML2GeometryReader().parsePolygon(xmlReader, null); Assert.assertEquals(XMLStreamConstants.END_ELEMENT, xmlReader.getEventType()); Assert.assertEquals(new QName(GML21NS, "Polygon"), xmlReader.getName()); Points points = polygon.getExteriorRing().getControlPoints(); comparePoint(0.0, 0.0, points.get(0)); comparePoint(100.0, 0.0, points.get(1)); comparePoint(100.0, 100.0, points.get(2)); comparePoint(0.0, 100.0, points.get(3)); comparePoint(0.0, 0.0, points.get(4)); List<Points> innerPoints = polygon.getInteriorRingsCoordinates(); Points points1 = innerPoints.get(0); comparePoint(10.0, 10.0, points1.get(0)); comparePoint(10.0, 40.0, points1.get(1)); comparePoint(40.0, 40.0, points1.get(2)); comparePoint(40.0, 10.0, points1.get(3)); comparePoint(10.0, 10.0, points1.get(4)); Points points2 = innerPoints.get(1); comparePoint(60.0, 60.0, points2.get(0)); comparePoint(60.0, 90.0, points2.get(1)); comparePoint(90.0, 90.0, points2.get(2)); comparePoint(90.0, 60.0, points2.get(3)); comparePoint(60.0, 60.0, points2.get(4)); Assert.assertEquals( CRSRegistry.lookup("http://www.opengis.net/gml/srs/epsg.xml#4326"), polygon.getCoordinateSystem().getWrappedCRS()); XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); outputFactory.setProperty("javax.xml.stream.isRepairingNamespaces", new Boolean(true)); XMLMemoryStreamWriter memoryWriter = new XMLMemoryStreamWriter(); SchemaLocationXMLStreamWriter writer = new SchemaLocationXMLStreamWriter( memoryWriter.getXMLStreamWriter(), SCHEMA_LOCATION_ATTRIBUTE); GML2GeometryWriter exporter = new GML2GeometryWriter(writer, null, null, new HashSet<String>()); writer.setPrefix("gml", "http://www.opengis.net/gml"); writer.setPrefix("xlink", "http://www.w3.org/1999/xlink"); exporter.export(polygon); writer.flush(); XMLAssert.assertValidity(memoryWriter.getReader(), SCHEMA_LOCATION); }
/** * @throws XMLStreamException * @throws FactoryConfigurationError * @throws IOException * @throws UnknownCRSException * @throws TransformationException */ @Test public void testMultiGeometry() throws XMLStreamException, FactoryConfigurationError, IOException, TransformationException, UnknownCRSException { XMLStreamReaderWrapper xmlReader = new XMLStreamReaderWrapper(this.getClass().getResource(BASE_DIR + MULTIGEOMETRY_FILE)); xmlReader.nextTag(); Assert.assertEquals(XMLStreamConstants.START_ELEMENT, xmlReader.getEventType()); Assert.assertEquals(new QName(GML21NS, "MultiGeometry"), xmlReader.getName()); MultiGeometry<?> multiGeometry = new GML2GeometryReader().parseMultiGeometry(xmlReader, null); assertEquals("c731", multiGeometry.getId()); Point firstMember = (Point) multiGeometry.get(0); assertEquals("P6776", firstMember.getId()); comparePoint(50.0, 50.0, firstMember); LineString secondMember = (LineString) multiGeometry.get(1); assertEquals("L21216", secondMember.getId()); Points controlPoints = secondMember.getControlPoints(); comparePoint(0.0, 0.0, controlPoints.get(0)); comparePoint(0.0, 50.0, controlPoints.get(1)); comparePoint(100.0, 50.0, controlPoints.get(2)); Polygon thirdMember = (Polygon) multiGeometry.get(2); assertEquals("_877789", thirdMember.getId()); Points points = thirdMember.getExteriorRing().getControlPoints(); comparePoint(0.0, 0.0, points.get(0)); comparePoint(100.0, 0.0, points.get(1)); comparePoint(50.0, 100.0, points.get(2)); comparePoint(0.0, 0.0, points.get(3)); XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); outputFactory.setProperty("javax.xml.stream.isRepairingNamespaces", new Boolean(true)); XMLMemoryStreamWriter memoryWriter = new XMLMemoryStreamWriter(); SchemaLocationXMLStreamWriter writer = new SchemaLocationXMLStreamWriter( memoryWriter.getXMLStreamWriter(), SCHEMA_LOCATION_ATTRIBUTE); GML2GeometryWriter exporter = new GML2GeometryWriter(writer, null, null, new HashSet<String>()); writer.setPrefix("gml", "http://www.opengis.net/gml"); writer.setPrefix("xlink", "http://www.w3.org/1999/xlink"); exporter.export(multiGeometry); writer.flush(); XMLAssert.assertValidity(memoryWriter.getReader(), SCHEMA_LOCATION); }