/** * Creates an empty {@code MultiLineString} for a coordinate reference system * * @param crs the coordinate reference system for the created {@code MultiLineString} * @param <P> the type of {@code Position} * @return an empty {@code MultiLineString} with the specified coordinate reference system */ public static <P extends Position> MultiLineString<P> mkEmptyMultiLineString(CoordinateReferenceSystem<P> crs) { return new MultiLineString<>(crs); }
private static JGeometry convert(MultiLineString geometry) { int srid = geometry.getSRID(); int dim = geometry.getCoordinateDimension(); double[] points = getPoints(geometry.getPoints()); int[] elemInfo = new int[geometry.getNumGeometries() * 3]; int offset = 0; int pointOffset = 1; for (int i = 0; i < geometry.getNumGeometries(); i++) { elemInfo[offset++] = pointOffset; elemInfo[offset++] = 2; elemInfo[offset++] = 1; pointOffset += geometry.getGeometryN(i).getNumPoints() * dim; } int gtype = dim * 1000 + (geometry.isMeasured() ? dim : 0) * 100 + GTYPE_MULTICURVE; return new JGeometry(gtype, srid, elemInfo, points); }
@SuppressWarnings("unchecked") private <T extends C2D & Measured> MultiLineString<T> measure(MultiLineString<T> geometry) { LineString<T>[] measuredParts = (LineString<T>[]) new LineString[geometry.getNumGeometries()]; for (int part = 0; part < geometry.getNumGeometries(); part++) { LineString<T> lineString = geometry.getGeometryN(part); measuredParts[part] = measure(lineString); } return new MultiLineString<T>(measuredParts); }
private static <P extends Position> MultiLineString to(org.geolatte.geom.MultiLineString<P> multiLineString, GeometryFactory gFact) { LineString[] lineStrings = new LineString[multiLineString.getNumGeometries()]; for (int i = 0; i < multiLineString.getNumGeometries(); i++) { lineStrings[i] = to(multiLineString.getGeometryN(i), gFact); } return gFact.createMultiLineString(lineStrings); }
private static org.postgis.MultiLineString convert(MultiLineString multiLineString) { org.postgis.LineString[] pgLineStrings = new org.postgis.LineString[multiLineString.getNumGeometries()]; for (int i = 0; i < pgLineStrings.length; i++) { pgLineStrings[i] = convert(multiLineString.getGeometryN(i)); } org.postgis.MultiLineString pgMultiLineString = new org.postgis.MultiLineString(pgLineStrings); pgMultiLineString.haveMeasure = multiLineString.isMeasured(); pgMultiLineString.setSrid(multiLineString.getSRID()); return pgMultiLineString; }
private static MultiLineString convertMultiCurve(JGeometry geometry) { JGeometry[] elements = geometry.getElements(); if (elements == null || elements.length == 0) { return MultiLineString.createEmpty(); } CrsId crs = CrsId.valueOf(geometry.getSRID()); LineString[] lineStrings = new LineString[elements.length]; for (int i = 0; i < elements.length; i++) { PointSequence points = getPoints(elements[i]); lineStrings[i] = new LineString(points); } return new MultiLineString(lineStrings); }
@Override @SuppressWarnings("unchecked") public <P extends Position, G extends Geometry<P>> SDOGeometry encode(G geom) { MultiLineString<P> multiLineString = (MultiLineString<P>)geom; final int dim = multiLineString.getCoordinateDimension(); final int lrsDim = getLRSDim(multiLineString); final boolean isLrs = (lrsDim != 0); SDOGType sdoGtype = new SDOGType(dim, lrsDim, TypeGeometry.MULTILINE); final ElemInfo info = new ElemInfo(multiLineString.getNumGeometries()); int oordinatesOffset = 1; Double[] ordinates = new Double[]{}; for (int i = 0; i < multiLineString.getNumGeometries(); i++) { info.setElement(i, oordinatesOffset, ElementType.LINE_STRAITH_SEGMENTS, 0); ordinates = addOrdinates(ordinates, convertPositionSequence(multiLineString.getGeometryN(i).getPositions())); oordinatesOffset = ordinates.length + 1; } return new SDOGeometry(sdoGtype, geom.getSRID(), null, info, new Ordinates(ordinates)); }
@Test public void multiLineString() { MultiLineString multiLineString = (org.geolatte.geom.MultiLineString) Wkt.fromWkt("MULTILINESTRING (" + "(30 10, 40 40, 20 40, 10 20, 30 10), " + "(20 30, 35 35, 30 20, 20 30))"); JGeometry geo = JGeometryConverter.convert(multiLineString); double[] line1 = new double[]{30, 10, 40, 40, 20, 40, 10, 20, 30, 10}; double[] line2 = new double[]{20, 30, 35, 35, 30, 20, 20, 30}; JGeometry geo2 = JGeometry.createLinearMultiLineString(new Object[]{line1, line2}, multiLineString.getCoordinateDimension(), multiLineString.getSRID()); // System.err.println(Arrays.toString(geo.getElemInfo())); // System.err.println(Arrays.toString(geo.getOrdinatesArray())); // System.err.println(Arrays.toString(geo2.getElemInfo())); // System.err.println(Arrays.toString(geo2.getOrdinatesArray())); assertEquals(geo2, geo); }
private static org.postgis.MultiLineString convert(MultiLineString multiLineString) { org.postgis.LineString[] pgLineStrings = new org.postgis.LineString[multiLineString.getNumGeometries()]; for (int i = 0; i < pgLineStrings.length; i++) { pgLineStrings[i] = convert(multiLineString.getGeometryN(i)); } org.postgis.MultiLineString pgMultiLineString = new org.postgis.MultiLineString(pgLineStrings); pgMultiLineString.haveMeasure = multiLineString.isMeasured(); pgMultiLineString.setSrid(multiLineString.getSRID()); return pgMultiLineString; }
private static MultiLineString convertMultiCurve(JGeometry geometry) { JGeometry[] elements = geometry.getElements(); if (elements == null || elements.length == 0) { return MultiLineString.createEmpty(); } CrsId crs = CrsId.valueOf(geometry.getSRID()); LineString[] lineStrings = new LineString[elements.length]; for (int i = 0; i < elements.length; i++) { PointSequence points = getPoints(elements[i]); lineStrings[i] = new LineString(points); } return new MultiLineString(lineStrings); }
public void visit(MultiLineString collection, int parent) { Shape shape = new Shape(); shape.type = MULTI_LINESTRING; shape.figureOffset = figures.size(); shape.parentOffset = parent; shapes.add(shape); parent = shapes.size() - 1; for (int i = 0; i < collection.getNumGeometries(); i++) { visit(collection.getGeometryN(i), parent); } }
private static JGeometry convert(MultiLineString geometry) { int srid = geometry.getSRID(); int dim = geometry.getCoordinateDimension(); double[] points = getPoints(geometry.getPoints()); int[] elemInfo = new int[geometry.getNumGeometries() * 3]; int offset = 0; int pointOffset = 1; for (int i = 0; i < geometry.getNumGeometries(); i++) { elemInfo[offset++] = pointOffset; elemInfo[offset++] = 2; elemInfo[offset++] = 1; pointOffset += geometry.getGeometryN(i).getNumPoints() * dim; } int gtype = dim * 1000 + (geometry.isMeasured() ? dim : 0) * 100 + GTYPE_MULTICURVE; return new JGeometry(gtype, srid, elemInfo, points); }
public static <P extends Position> MultiLineString<P> mkMultiLineString(LineString<P>... linestrings) { return new MultiLineString<P>(linestrings); }
data.add(MultiLineString.createEmpty()); for (int i = 0; i < size; i++) { if (data.get(i) instanceof LineString) { data.add(new MultiLineString(new LineString[]{(LineString) data.get(i)}));
public void visit(MultiLineString collection, int parent) { Shape shape = new Shape(); shape.type = MULTI_LINESTRING; shape.figureOffset = figures.size(); shape.parentOffset = parent; shapes.add(shape); parent = shapes.size() - 1; for (int i = 0; i < collection.getNumGeometries(); i++) { visit(collection.getGeometryN(i), parent); } }
@SuppressWarnings("unchecked") @SafeVarargs public static <P extends Position> MultiLineString<P> multilinestring(CoordinateReferenceSystem<P> crs, LineStringToken<P>... tokens) { if (tokens.length == 0) return new MultiLineString<P>(crs); LineString<P>[] linestrings = new LineString[tokens.length]; int idx = 0; for (LineStringToken t : tokens) { linestrings[idx++] = t.toGeometry(crs); } return new MultiLineString<P>(linestrings); }
public static <P extends Position> MultiLineString<P> mkMultiLineString(List<LineString<P>> lineStrings) { LineString<P>[] lsArr = new LineString[lineStrings.size()]; return new MultiLineString<P>(lineStrings.toArray(lsArr)); }
private MultiLineString decodeMultiLineString(int shapeIdx) { List<LineString> lineStrings = Lists.newArrayList(); for (int i = shapeIdx; i < shapes.length; i++) { if (shapes[i].parentOffset == shapeIdx) { lineStrings.add(decodeLineString(i)); } } return new MultiLineString(lineStrings.toArray(new LineString[0])); }
private MultiLineString decodeMultiLineString(int shapeIdx) { List<LineString> lineStrings = Lists.newArrayList(); for (int i = shapeIdx; i < shapes.length; i++) { if (shapes[i].parentOffset == shapeIdx) { lineStrings.add(decodeLineString(i)); } } return new MultiLineString(lineStrings.toArray(new LineString[0])); }
@SuppressWarnings("unchecked") @SafeVarargs public static <P extends Position> MultiLineString<P> multilinestring(LineString<P> linestring, LineString<P>... linestrings) { return new MultiLineString<P>(combine(LineString.class, linestring, linestrings)); }