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(")"); } }
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 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 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)); }