private void appendMultiCurveTaggedText(MultiCurve mc, int level, Writer writer) throws IOException { writer.write("MULTICURVE "); if (mc.isEmpty()) { writer.write("EMPTY"); } else { writer.write("("); for (int i = 0; i < mc.getNumGeometries(); i++) { appendPotentialCurveText((LineString) mc.getGeometryN(i), level + 1, true, writer); if (i < mc.getNumGeometries() - 1) { writer.write(", "); } } writer.write(")"); } }
/** * Explicitly creates a {@link MultiCurve} * * @param components * @return */ public MultiCurve createMultiCurve(List<LineString> components) { return new MultiCurve(components, this, tolerance); }
public MultiLineString linearize(double tolerance) { int numGeometries = getNumGeometries(); LineString[] linearized = new LineString[numGeometries]; for (int k = 0; k < numGeometries; k++) { LineString component = (LineString) getGeometryN(k); if (component instanceof CurvedGeometry<?>) { CurvedGeometry<?> curved = (CurvedGeometry<?>) component; linearized[k] = (LineString) curved.linearize(tolerance); } else { linearized[k] = component; } } return getFactory().createMultiLineString(linearized); }
public String toCurvedText() { StringBuilder sb = new StringBuilder("MULTICURVE("); int numGeometries = getNumGeometries(); for (int k = 0; k < numGeometries; k++) { LineString component = (LineString) getGeometryN(k); if (component instanceof SingleCurvedGeometry<?>) { SingleCurvedGeometry<?> curved = (SingleCurvedGeometry<?>) component; sb.append(curved.toCurvedText()); } else { sb.append("("); CoordinateSequence cs = component.getCoordinateSequence(); for (int i = 0; i < cs.size(); i++) { sb.append(cs.getX(i) + " " + cs.getY(i)); if (i < cs.size() - 1) { sb.append(", "); } } sb.append(")"); } if (k < numGeometries - 1) { sb.append(", "); } } sb.append(")"); return sb.toString(); }
public void testMultiCurve() throws Exception { Parser p = new Parser(gml); Object g = p.parse(GML3CurveParsingTest.class.getResourceAsStream("v3_2/multiCurve.xml")); assertThat(g, instanceOf(MultiCurve.class)); MultiCurve mc = (MultiCurve) g; assertEquals(TOLERANCE, mc.getTolerance()); LineString ls = (LineString) mc.getGeometryN(0); assertEquals(2, ls.getNumPoints()); assertEquals(new Coordinate(0, 0), ls.getCoordinateN(0)); assertEquals(new Coordinate(5, 5), ls.getCoordinateN(1)); CircularString cs = (CircularString) mc.getGeometryN(1); assertArrayEquals(new double[] {4, 0, 4, 4, 8, 4}, cs.getControlPoints(), 0d); } }
public MultiLineString linearize() { return linearize(tolerance); }
public void testLineStringToMultiCurve() throws Exception { Geometry ls = new WKTReader().read("LINESTRING(0 0, 10 10)"); Converter converter = getConverter(ls, CurvedGeometry.class); MultiCurvedGeometry curve = converter.convert(ls, MultiCurvedGeometry.class); assertTrue(curve instanceof MultiCurve); MultiCurve mc = (MultiCurve) curve; assertEquals(1, mc.getNumGeometries()); assertEquals(ls, mc.getGeometryN(0)); }
public MultiLineString createMultiLineString(LineString[] lineStrings) { boolean curved = false; for (LineString ls : lineStrings) { if (ls instanceof CurvedGeometry<?>) { curved = true; break; } } if (curved) { return new MultiCurve(Arrays.asList(lineStrings), this, tolerance); } else { return delegate.createMultiLineString(lineStrings); } }
result = new MultiCurve(components, factory, tolerance);