Refine search
LineString line = geometryFactory.createLineString(new Coordinate[] { from.getCoordinate(), to.getCoordinate() }); for (NamedArea area : areas) { Geometry polygon = area.getPolygon(); Geometry intersection = polygon.intersection(line); if (intersection.getLength() > 0.000001) { intersects.add(area); area.getPermission(), false, this); forward.setStreetClass(area.getStreetClass()); AreaEdge backward = new AreaEdge(to, from, (LineString) line.reverse(), area.getRawName(), length, area.getPermission(), true, this); backward.setStreetClass(area.getStreetClass()); for (int i = 0; i < mls.getNumGeometries(); ++i) { LineString segment = (LineString) mls.getGeometryN(i); if (segment.contains(startPoint) || segment.getBoundary().contains(startPoint)) { edgeCoordinate = segment.getEndPoint().getCoordinate();
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; } });
private LineString toLineString(Geometry g) { if (g instanceof LineString) { return (LineString) g; } else if (g instanceof MultiLineString) { MultiLineString ml = (MultiLineString) g; Coordinate[] coords = ml.getCoordinates(); return GeometryUtils.getGeometryFactory().createLineString(coords); } else { throw new RuntimeException("found a geometry feature that's not a linestring: " + g); } }
protected Geometry transformMultiLineString(MultiLineString geom, Geometry parent) { List transGeomList = new ArrayList(); for (int i = 0; i < geom.getNumGeometries(); i++) { Geometry transformGeom = transformLineString((LineString) geom.getGeometryN(i), geom); if (transformGeom == null) continue; if (transformGeom.isEmpty()) continue; transGeomList.add(transformGeom); } return factory.buildGeometry(transGeomList); }
Point point = (Point) geom; Coordinate inverted = invertCoordinate(point.getCoordinate()); return geometryFactory.createPoint(inverted); } else if (geom instanceof LineString) { Coordinate[] inverted = invertCoordinates(geom.getCoordinates()); return geometryFactory.createLineString(inverted); } else if (geom instanceof Polygon) { Polygon polygon = (Polygon) geom; Coordinate[] shellCoordinates = polygon.getExteriorRing() .getCoordinates(); LinearRing invertedShell = geometryFactory .createLinearRing(invertCoordinates(shellCoordinates)); LinearRing[] invertedHoles = new LinearRing[polygon .getNumInteriorRing()]; for (int count = 0; count < polygon.getNumInteriorRing(); count++) { Coordinate[] holeCoordinates = polygon.getInteriorRingN(count) .getCoordinates(); .getCoordinates())); } else if (geom instanceof MultiLineString) { MultiLineString multiLineString = (MultiLineString) geom; LineString[] inverted = new LineString[multiLineString .getNumGeometries()]; for (int count = 0; count < multiLineString.getNumGeometries(); count++) { inverted[count] = (LineString) invertGeometryCoordinates(multiLineString .getGeometryN(count)); + geom.getGeometryType());
GeometryFactory geoFactory = new GeometryFactory(); for (int i = 0; i < geometry.getNumGeometries(); i++) { com.vividsolutions.jts.geom.Polygon poly = (com.vividsolutions.jts.geom.Polygon) geometry .getGeometryN(i); LinearRing lr = geoFactory.createLinearRing(poly.getExteriorRing().getCoordinates()); com.vividsolutions.jts.geom.Polygon part = geoFactory.createPolygon(lr, null); drawGeometry(part, bounds, graphics, width, height, flags); for (int j = 0; j < poly.getNumInteriorRing(); j++) { lr = geoFactory.createLinearRing(poly.getInteriorRingN(j).getCoordinates()); part = geoFactory.createPolygon(lr, null); drawGeometry(part, bounds, graphics, width, height, flags); for (int n = 0; n < mp.getNumGeometries(); n++) { drawGeometry(mp.getGeometryN(n), bounds, graphics, width, height, flags);
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); }
public static Geometry getEndPoints(Geometry g) { List endPtList = new ArrayList(); if (g instanceof LineString) { LineString line = (LineString) g; endPtList.add(line.getCoordinateN(0)); endPtList.add(line.getCoordinateN(line.getNumPoints() - 1)); } else if (g instanceof MultiLineString) { MultiLineString mls = (MultiLineString) g; for (int i = 0; i < mls.getNumGeometries(); i++) { LineString line = (LineString) mls.getGeometryN(i); endPtList.add(line.getCoordinateN(0)); endPtList.add(line.getCoordinateN(line.getNumPoints() - 1)); } } Coordinate[] endPts = CoordinateArrays.toCoordinateArray(endPtList); return (new GeometryFactory()).createMultiPoint(endPts); }
Geometry geometry = shape.getGeometry(); if (geometry.intersects(((Grid)extent).getBoundary())) { for (int i = 0; i < geometry.getNumGeometries(); i++) { Polygon poly = (Polygon) geometry.getGeometryN(i); LinearRing lr = geoFactory.createLinearRing(poly.getExteriorRing().getCoordinates()); Polygon part = geoFactory.createPolygon(lr, null); drawGeometry(part, false, swapAxis); for (int j = 0; j < poly.getNumInteriorRing(); j++) { lr = geoFactory.createLinearRing(poly.getInteriorRingN(j).getCoordinates()); part = geoFactory.createPolygon(lr, null); drawGeometry(part, true, swapAxis); for (int n = 0; n < mp.getNumGeometries(); n++) { drawGeometry(mp.getGeometryN(n), false, swapAxis);
GeometryFactory factory = g.getFactory(); transformed = factory.createMultiPoint(points); } else if (g instanceof LineString) { transformed = transformLineString((LineString) g, factory); } else if (g instanceof MultiLineString) { MultiLineString mls = (MultiLineString) g; LineString[] lines = new LineString[mls.getNumGeometries()]; lines[i] = transformLineString((LineString) mls.getGeometryN(i), factory); transformed = factory.createMultiLineString(lines); } else if (g instanceof Polygon) { transformed = transformPolygon((Polygon) g, factory); transformed = factory.createMultiPolygon(polygons); } else if (g instanceof GeometryCollection) { GeometryCollection gc = (GeometryCollection) g; transformed.setUserData(g.getUserData()); if ((g.getUserData() == null) || g.getUserData() instanceof CoordinateReferenceSystem) {
/** * Removes duplicated coordinates in a MultiLineString. * @param g * @return */ public static MultiLineString removeDuplicateCoordinates(MultiLineString g) { ArrayList<LineString> lines = new ArrayList<LineString>(); for (int i = 0; i < g.getNumGeometries(); i++) { LineString line = (LineString) g.getGeometryN(i); lines.add(removeDuplicateCoordinates(line)); } return FACTORY.createMultiLineString(GeometryFactory.toLineStringArray(lines)); }
/** * Coordinates of a MultiLineString are an array of LineString coordinate * arrays. * * Syntax: * * { "type": "MultiLineString", "coordinates": [ [ [100.0, 0.0], [101.0, * 1.0] ], [ [102.0, 2.0], [103.0, 3.0] ] ] } * * @param multiLineString * @param sb */ public static void toGeojsonMultiLineString(MultiLineString multiLineString, StringBuilder sb) { sb.append("{\"type\":\"MultiLineString\",\"coordinates\":["); for (int i = 0; i < multiLineString.getNumGeometries(); i++) { toGeojsonCoordinates(multiLineString.getGeometryN(i).getCoordinates(), sb); if (i < multiLineString.getNumGeometries() - 1) { sb.append(","); } } sb.append("]}"); }
private GeneralPath toShape(MultiLineString mls) { GeneralPath path = new GeneralPath(); for (int i = 0; i < mls.getNumGeometries(); i++) { LineString lineString = (LineString) mls.getGeometryN(i); path.append(toShape(lineString), false); } return path; }
public static MultiLineString linearZInterpolation(MultiLineString multiLineString) { int nbGeom = multiLineString.getNumGeometries(); LineString[] lines = new LineString[nbGeom]; for (int i = 0; i < nbGeom; i++) { LineString subGeom = (LineString) multiLineString.getGeometryN(i); double startz = subGeom.getStartPoint().getCoordinates()[0].z; double endz = subGeom.getEndPoint().getCoordinates()[0].z; double length = subGeom.getLength(); subGeom.apply(new LinearZInterpolationFilter(startz, endz, length)); lines[i] = subGeom; } return FACTORY.createMultiLineString(lines); }
public void write(final ByteBuffer _buffer, final Object _geometry) { final MultiLineString multi = (MultiLineString) _geometry; final Envelope box = multi.getEnvelopeInternal(); _buffer.putDouble(box.getMinX()); _buffer.putDouble(box.getMinY()); _buffer.putDouble(box.getMaxY()); final int numParts = multi.getNumGeometries(); final int npoints = multi.getNumPoints(); _buffer.putInt(npoints); lines[i] = (LineString) multi.getGeometryN(i); _buffer.putInt(idx); idx = idx + lines[i].getNumPoints(); final Coordinate[] coords = multi.getCoordinates();
/** * Reverses a multilinestring according to z value. The z first point must * be greater than the z end point * * @param multiLineString * @return */ public static MultiLineString reverse3D(MultiLineString multiLineString) { int num = multiLineString.getNumGeometries(); LineString[] lineStrings = new LineString[num]; for (int i = 0; i < multiLineString.getNumGeometries(); i++) { lineStrings[i] = reverse3D((LineString) multiLineString.getGeometryN(i)); } return FACTORY.createMultiLineString(lineStrings); }
private Coordinate[] computeBoundaryCoordinates(MultiLineString mLine) { List bdyPts = new ArrayList(); endpointMap = new TreeMap(); for (int i = 0; i < mLine.getNumGeometries(); i++) { LineString line = (LineString) mLine.getGeometryN(i); if (line.getNumPoints() == 0) continue; addEndpoint(line.getCoordinateN(0)); addEndpoint(line.getCoordinateN(line.getNumPoints() - 1)); } for (Iterator it = endpointMap.entrySet().iterator(); it.hasNext(); ) { Map.Entry entry = (Map.Entry) it.next(); Counter counter = (Counter) entry.getValue(); int valence = counter.count; if (bnRule.isInBoundary(valence)) { bdyPts.add(entry.getKey()); } } return CoordinateArrays.toCoordinateArray(bdyPts); }
Point[] pointArray = geometryFactory.toPointArray(geometries); MultiPoint multiPoint = geometryFactory.createMultiPoint(pointArray); multiPoint.setUserData( getSRS() ); multiPoint.setSRID( getSRID() ); } else if (internalType.equals("LineString")) { LineString[] lineStringArray = geometryFactory .toLineStringArray(geometries); MultiLineString multiLineString = geometryFactory.createMultiLineString(lineStringArray); multiLineString.setUserData( getSRS() ); multiLineString.setSRID( getSRID() ); LOGGER.fine("created " + multiLineString);
@Override public Iterator<LineString> call(Geometry spatialObject) throws Exception { List<LineString> result = new ArrayList<LineString>(); if (spatialObject instanceof MultiLineString) { MultiLineString multiObjects = (MultiLineString) spatialObject; for (int i = 0; i < multiObjects.getNumGeometries(); i++) { LineString oneObject = (LineString) multiObjects.getGeometryN(i); oneObject.setUserData(multiObjects.getUserData()); result.add(oneObject); } } else if (spatialObject instanceof LineString) { result.add((LineString) spatialObject); } else { throw new Exception("[ShapefileRDD][getLineStringRDD] the object type is not LineString or MultiLineString type. It is " + spatialObject.getGeometryType()); } return result.iterator(); } })
LineString v = (LineString) geom; output.append("{\"type\":\"LineString\",\"coordinates\":"); write(output, nf, v.getCoordinateSequence()); output.append("}"); return; MultiLineString v = (MultiLineString) geom; output.append("{\"type\":\"MultiLineString\",\"coordinates\":["); for (int i = 0; i < v.getNumGeometries(); i++) { if (i > 0) { output.append(','); write(output, nf, v.getGeometryN(i).getCoordinates());