/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2015 - 2016, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.gml3.simple;
import org.geotools.geometry.jts.WKTReader2;
import org.geotools.gml3.GML;
import org.w3c.dom.Document;
import com.vividsolutions.jts.geom.Geometry;
public class MultiCurveEncoderTest extends GeometryEncoderTestSupport {
public void testEncodeMultiCompound() throws Exception {
MultiLineStringEncoder encoder = new MultiLineStringEncoder(gtEncoder, "gml", GML.NAMESPACE, true);
Geometry geometry = new WKTReader2()
.read("MULTICURVE((100 100, 120 120), COMPOUNDCURVE(CIRCULARSTRING(0 0, 2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)))");
Document doc = encode(encoder, geometry);
// XMLTestSupport.print(doc);
assertEquals(1, xpath.getMatchingNodes("//gml:MultiCurve", doc).getLength());
assertEquals(2, xpath.getMatchingNodes("//gml:MultiCurve/gml:curveMember", doc).getLength());
assertEquals("100 100 120 120", xpath.evaluate(
"//gml:MultiCurve/gml:curveMember[1]/gml:LineString/gml:posList", doc));
assertEquals(
2,
xpath.getMatchingNodes(
"//gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/*", doc)
.getLength());
assertEquals(
"circularArc3Points",
xpath.evaluate(
"/gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/gml:ArcString/@interpolation",
doc));
assertEquals(
"0 0 2 0 2 1 2 3 4 3",
xpath.evaluate(
"/gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/gml:ArcString/gml:posList",
doc));
assertEquals(
"linear",
xpath.evaluate(
"/gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/gml:LineStringSegment/@interpolation",
doc));
assertEquals(
"4 3 4 5 1 4 0 0",
xpath.evaluate(
"/gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/gml:LineStringSegment/gml:posList",
doc));
}
public void testEncodeMultiCurve() throws Exception {
MultiLineStringEncoder encoder = new MultiLineStringEncoder(gtEncoder, "gml", GML.NAMESPACE, true);
Geometry geometry = new WKTReader2()
.read("MULTICURVE((105 105, 125 125), CIRCULARSTRING(-10 0, -8 2, -6 0, -8 -2, -10 0))");
Document doc = encode(encoder, geometry);
// XMLTestSupport.print(doc);
assertEquals(1, xpath.getMatchingNodes("//gml:MultiCurve", doc).getLength());
assertEquals(2, xpath.getMatchingNodes("//gml:MultiCurve/gml:curveMember", doc).getLength());
assertEquals("105 105 125 125", xpath.evaluate(
"//gml:MultiCurve/gml:curveMember[1]/gml:LineString/gml:posList", doc));
assertEquals(
1,
xpath.getMatchingNodes(
"//gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/*", doc)
.getLength());
assertEquals(
"circularArc3Points",
xpath.evaluate(
"/gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/gml:ArcString/@interpolation",
doc));
assertEquals(
"-10 0 -8 2 -6 0 -8 -2 -10 0",
xpath.evaluate(
"/gml:MultiCurve/gml:curveMember[2]/gml:Curve/gml:segments/gml:ArcString/gml:posList",
doc));
}
public void testEncodeMultiLineString() throws Exception {
MultiLineStringEncoder encoder = new MultiLineStringEncoder(gtEncoder, "gml", GML.NAMESPACE, false);
Geometry geometry = new WKTReader2()
.read("MULTILINESTRING((105 105, 125 125))");
Document doc = encode(encoder, geometry);
// XMLTestSupport.print(doc);
assertEquals(1, xpath.getMatchingNodes("//gml:MultiLineString", doc).getLength());
assertEquals(1, xpath.getMatchingNodes("//gml:MultiLineString/gml:lineStringMember", doc).getLength());
assertEquals("105 105 125 125", xpath.evaluate(
"//gml:MultiLineString/gml:lineStringMember[1]/gml:LineString/gml:posList", doc));
}
}