return geoms.size() == 1 ? geoms.get(0) : geomFactory.createMultiLineString(geoms.toArray(new LineString[geoms.size()]));
edges[k++] = ls; LOG.debug("create multilinestring from {} geoms", edges.length); mls = gf.createMultiLineString(edges); LOG.debug("write geom"); geometryJSON.write(mls, sw); k++; Geometry mls = gf.createMultiLineString(edges); LOG.debug("write debug geom"); geometryJSON.write(mls, sw);
jtsLineStrings[i++] = (LineString) convertGeoJsonToJtsGeometry(geoJsonLineString); return gf.createMultiLineString(jtsLineStrings);
public Object parse(Handler arg, GeometryFactory gf) throws SAXException { // one child, either a coord // or a coordinate sequence if(arg.children.size()<1) throw new SAXException("Cannot create a multi-linestring without atleast one linestring"); int srid = getSrid(arg.attrs,gf.getSRID()); LineString[] lns = (LineString[]) arg.children.toArray(new LineString[arg.children.size()]); MultiLineString mp = gf.createMultiLineString(lns); if(mp.getSRID()!=srid) mp.setSRID(srid); return mp; } });
/** * Creates a <code>MultiLineString</code> using the next token in the stream. * *@param tokenizer tokenizer over a stream of text in Well-known Text * format. The next tokens must form a <MultiLineString Text>. *@return a <code>MultiLineString</code> specified by the * next token in the stream *@throws IOException if an I/O error occurs *@throws ParseException if an unexpected token was encountered */ private com.vividsolutions.jts.geom.MultiLineString readMultiLineStringText() throws IOException, ParseException { String nextToken = getNextEmptyOrOpener(); if (nextToken.equals(EMPTY)) { return geometryFactory.createMultiLineString(new LineString[]{}); } ArrayList lineStrings = new ArrayList(); LineString lineString = readLineStringText(); lineStrings.add(lineString); nextToken = getNextCloserOrComma(); while (nextToken.equals(COMMA)) { lineString = readLineStringText(); lineStrings.add(lineString); nextToken = getNextCloserOrComma(); } LineString[] array = new LineString[lineStrings.size()]; return geometryFactory.createMultiLineString((LineString[]) lineStrings.toArray(array)); }
/** * Creates a {@link MultiLineString} in the reverse * order to this object. * Both the order of the component LineStrings * and the order of their coordinate sequences * are reversed. * * @return a {@link MultiLineString} in the reverse order */ public Geometry reverse() { int nLines = geometries.length; LineString[] revLines = new LineString[nLines]; for (int i = 0; i < geometries.length; i++) { revLines[nLines - 1 - i] = (LineString)geometries[i].reverse(); } return getFactory().createMultiLineString(revLines); }
/** * Computes the boundary of this geometry * * @return a lineal geometry (which may be empty) * @see Geometry#getBoundary */ public Geometry getBoundary() { if (isEmpty()) { return getFactory().createMultiLineString(null); } ArrayList allRings = new ArrayList(); for (int i = 0; i < geometries.length; i++) { Polygon polygon = (Polygon) geometries[i]; Geometry rings = polygon.getBoundary(); for (int j = 0; j < rings.getNumGeometries(); j++) { allRings.add(rings.getGeometryN(j)); } } LineString[] allRingsArray = new LineString[allRings.size()]; return getFactory().createMultiLineString((LineString[]) allRings.toArray(allRingsArray)); }
private MultiLineString readMultiLineString() throws IOException, ParseException { int numGeom = dis.readInt(); LineString[] geoms = new LineString[numGeom]; for (int i = 0; i < numGeom; i++) { Geometry g = readGeometry(); if (! (g instanceof LineString)) throw new ParseException(INVALID_GEOM_TYPE_MSG + "MultiLineString"); geoms[i] = (LineString) g; } return factory.createMultiLineString(geoms); }
/** * Builds a geometry ({@link LineString} or {@link MultiLineString} ) * representing the sequence. * * @param sequences a List of Lists of DirectedEdges with * LineMergeEdges as their parent edges. * @return the sequenced geometry, or <code>null</code> if no sequence exists */ private Geometry buildSequencedGeometry(List sequences) { List lines = new ArrayList(); for (Iterator i1 = sequences.iterator(); i1.hasNext(); ) { List seq = (List) i1.next(); for (Iterator i2 = seq.iterator(); i2.hasNext(); ) { DirectedEdge de = (DirectedEdge) i2.next(); LineMergeEdge e = (LineMergeEdge) de.getEdge(); LineString line = e.getLine(); LineString lineToAdd = line; if (! de.getEdgeDirection() && ! line.isClosed()) lineToAdd = reverse(line); lines.add(lineToAdd); } } if (lines.size() == 0) return factory.createMultiLineString(new LineString[0]); return factory.buildGeometry(lines); }
/** * Gets the geometry for the edges in the subdivision as a {@link MultiLineString} * containing 2-point lines. * * @param geomFact the GeometryFactory to use * @return a MultiLineString */ public Geometry getEdges(GeometryFactory geomFact) { List quadEdges = getPrimaryEdges(false); LineString[] edges = new LineString[quadEdges.size()]; int i = 0; for (Iterator it = quadEdges.iterator(); it.hasNext();) { QuadEdge qe = (QuadEdge) it.next(); edges[i++] = geomFact.createLineString(new Coordinate[] { qe.orig().getCoordinate(), qe.dest().getCoordinate() }); } return geomFact.createMultiLineString(edges); }
return factory.createMultiLineString((LineString[]) geometries.toArray( new LineString[] { }));
/** * Computes the boundary of this geometry * * @return a lineal geometry (which may be empty) * @see Geometry#getBoundary */ public Geometry getBoundary() { if (isEmpty()) { return getFactory().createMultiLineString(null); } LinearRing[] rings = new LinearRing[holes.length + 1]; rings[0] = shell; for (int i = 0; i < holes.length; i++) { rings[i + 1] = holes[i]; } // create LineString or MultiLineString as appropriate if (rings.length <= 1) return getFactory().createLinearRing(rings[0].getCoordinateSequence()); return getFactory().createMultiLineString(rings); }
return createMultiLineString(toLineStringArray(geomList));
/** * Extracts linework for polygonal components. * * @param g the geometry from which to extract * @return a lineal geometry containing the extracted linework */ private MultiLineString extractLinework(Geometry g) { PolygonalLineworkExtracter extracter = new PolygonalLineworkExtracter(); g.apply(extracter); List linework = extracter.getLinework(); LineString[] lines = GeometryFactory.toLineStringArray(linework); return g.getFactory().createMultiLineString(lines); }
/** * Creates a MultiLineString from a set of LineStrings * * @param lines the component LineStrings * @return a MultiLineString */ public MultiLineString multiLineString(LineString... lines) { return geomFact.createMultiLineString(lines); }
/** * Creates a multiline from the specified (<var>x</var>,<var>y</var>) coordinates. */ public MultiLineString lines(int[][] xy) { LineString[] lines = new LineString[xy.length]; for (int i = 0; i < xy.length; i++) { lines[i] = line(xy[i]); } return gf.createMultiLineString(lines); }
/** * Makes a {@link #MultiLineString} geometry using the {@link LineString} presents * in the result stack. */ @Override public Geometry build(int linestringtextNode) throws CQLException { List<Geometry> lineList = popGeometry(linestringtextNode); LineString[] lineStrings = lineList.toArray(new LineString[lineList.size()]) ; MultiLineString multiLineString= getGeometryFactory().createMultiLineString(lineStrings); return multiLineString; }
protected MultiLineString decodeMultiLineString(JsonNode node, GeometryFactory fac) throws GeoJSONException { JsonNode coordinates = requireCoordinates(node); LineString[] lineStrings = new LineString[coordinates.size()]; for (int i = 0; i < coordinates.size(); ++i) { JsonNode coords = coordinates.get(i); lineStrings[i] = fac.createLineString(decodeCoordinates(coords)); } return fac.createMultiLineString(lineStrings); }
private MultiLineString readMultiLineString() throws IOException, ParseException { int numGeom = dis.readInt(); LineString[] geoms = new LineString[numGeom]; for (int i = 0; i < numGeom; i++) { Geometry g = readGeometry(); if (! (g instanceof LineString)) throw new ParseException(INVALID_GEOM_TYPE_MSG + "MultiLineString"); geoms[i] = (LineString) g; } return factory.createMultiLineString(geoms); }
protected static Geometry transformMultiLineString(CoordinateTransform ct, MultiLineString multiLineString) { LineString[] lineString = new LineString[multiLineString.getNumGeometries()]; for (int i = 0; i < lineString.length; ++i) { lineString[i] = multiLineString.getFactory() .createLineString(transformCoordinates(ct, multiLineString.getGeometryN(i).getCoordinates())); } return multiLineString.getFactory().createMultiLineString(lineString); }