/** * Gets the faces of the computed diagram as a {@link GeometryCollection} * of {@link Polygon}s, clipped as specified. * * @param geomFact the geometry factory to use to create the output * @return the faces of the diagram */ public Geometry getDiagram(GeometryFactory geomFact) { create(); Geometry polys = subdiv.getVoronoiDiagram(geomFact); // clip polys to diagramEnv return clipGeometryCollection(polys, diagramEnv); }
VoronoiDiagramBuilder cvb = new VoronoiDiagramBuilder(); cvb.setSites(cityes.keySet()); cvb.setClipEnvelope(new Envelope(bbox.minX, bbox.maxX, bbox.minY, bbox.maxY)); QuadEdgeSubdivision subdivision = cvb.getSubdivision();
/** * Instantiates a new voronoi partitioning. * * @param samples the sample list * @param partitions the partitions * @throws Exception the exception */ public VoronoiPartitioning(List<Envelope> samples, int partitions) throws Exception { GeometryFactory fact = new GeometryFactory(); ArrayList<Point> subSampleList = new ArrayList<Point>(); MultiPoint mp; //Take a subsample accoring to the partitions for (int i = 0; i < samples.size(); i = i + samples.size() / partitions) { Envelope envelope = samples.get(i); Coordinate coordinate = new Coordinate((envelope.getMinX() + envelope.getMaxX()) / 2.0, (envelope.getMinY() + envelope.getMaxY()) / 2.0); subSampleList.add(fact.createPoint(coordinate)); } mp = fact.createMultiPoint(subSampleList.toArray(new Point[subSampleList.size()])); VoronoiDiagramBuilder voronoiBuilder = new VoronoiDiagramBuilder(); voronoiBuilder.setSites(mp); Geometry voronoiDiagram = voronoiBuilder.getDiagram(fact); for (int i = 0; i < voronoiDiagram.getNumGeometries(); i++) { Polygon poly = (Polygon) voronoiDiagram.getGeometryN(i); grids.add(poly.getEnvelopeInternal()); } //grids.add(new EnvelopeWithGrid(boundary,grids.size())); }
public static void main(String[] args) { GeometryFactory geometryFactory = new GeometryFactory(); Collection<Coordinate> sites = new ArrayList<>(); sites.add(new Coordinate(70, 70)); sites.add(new Coordinate(50, 150)); sites.add(new Coordinate(150, 50)); sites.add(new Coordinate(150, 150)); sites.add(new Coordinate(250, 50)); sites.add(new Coordinate(250, 150)); sites.add(new Coordinate(350, 50)); sites.add(new Coordinate(370, 170)); VoronoiDiagramBuilder voronoiDiagramBuilder = new VoronoiDiagramBuilder(); voronoiDiagramBuilder.setSites(sites); List<Polygon> polygons = voronoiDiagramBuilder.getSubdivision().getVoronoiCellPolygons(geometryFactory); BoundingBox boundingBox = BoundingBox.createBoundingBox(0, 0, 400, 200); Polygon boundingPolygon = VoronoiGeometryUtils.createBoundingPolygon(boundingBox); Collection<Geometry> cutGeometries = VoronoiGeometryUtils.cutPolygonsByBoundary(polygons, boundingPolygon); Collection<SimpleFeature> features = VoronoiGeometryUtils.createFeaturesFromPolygons(cutGeometries); ShapeFileWriter.writeGeometries(features, "/Users/dominik/voronoi_test.shp"); } }
/** * Gets the {@link QuadEdgeSubdivision} which models the computed diagram. * * @return the subdivision containing the triangulation */ public QuadEdgeSubdivision getSubdivision() { create(); return subdiv; }
VoronoiDiagramBuilder nvb = new VoronoiDiagramBuilder(); nvb.setSites(neighboursCoords); nvb.setClipEnvelope(cityPolygonEnv); List<Polygon> neighboursPolygons = nvb.getSubdivision() .getVoronoiCellPolygons(fatory);
/** * Instantiates a new voronoi partitioning. * * @param samples the sample list * @param partitions the partitions * @throws Exception the exception */ public VoronoiPartitioning(List<Envelope> samples, int partitions) throws Exception { GeometryFactory fact = new GeometryFactory(); ArrayList<Point> subSampleList = new ArrayList<Point>(); MultiPoint mp; //Take a subsample accoring to the partitions for (int i = 0; i < samples.size(); i = i + samples.size() / partitions) { Envelope envelope = samples.get(i); Coordinate coordinate = new Coordinate((envelope.getMinX() + envelope.getMaxX()) / 2.0, (envelope.getMinY() + envelope.getMaxY()) / 2.0); subSampleList.add(fact.createPoint(coordinate)); } mp = fact.createMultiPoint(subSampleList.toArray(new Point[subSampleList.size()])); VoronoiDiagramBuilder voronoiBuilder = new VoronoiDiagramBuilder(); voronoiBuilder.setSites(mp); Geometry voronoiDiagram = voronoiBuilder.getDiagram(fact); for (int i = 0; i < voronoiDiagram.getNumGeometries(); i++) { Polygon poly = (Polygon) voronoiDiagram.getGeometryN(i); grids.add(poly.getEnvelopeInternal()); } //grids.add(new EnvelopeWithGrid(boundary,grids.size())); }
static Collection<Geometry> determineVoronoiShapes(ActivityFacilities measuringPoints, BoundingBox box) { LOG.warn("Started creating Voronoi shapes."); Collection<Coordinate> sites = new ArrayList<>(); for (ActivityFacility measuringPoint : measuringPoints.getFacilities().values()) { Coordinate coordinate = new Coordinate(measuringPoint.getCoord().getX(), measuringPoint.getCoord().getY()); sites.add(coordinate); } VoronoiDiagramBuilder voronoiDiagramBuilder = new VoronoiDiagramBuilder(); voronoiDiagramBuilder.setSites(sites); List<Polygon> polygons = voronoiDiagramBuilder.getSubdivision().getVoronoiCellPolygons(geometryFactory); Polygon boundingPolygon = createBoundingPolygon(box); Collection<Geometry> geometries = cutPolygonsByBoundary(polygons, boundingPolygon); LOG.warn("Finished creating Voronoi shapes."); return geometries; }
/** * Gets the {@link QuadEdgeSubdivision} which models the computed diagram. * * @return the subdivision containing the triangulation */ public QuadEdgeSubdivision getSubdivision() { create(); return subdiv; }
geomCollection.getNumGeometries() > 0 && geomCollection.getGeometryN(0) instanceof Point) ) { VoronoiDiagramBuilder diagramBuilder = new VoronoiDiagramBuilder(); diagramBuilder.setSites(geomCollection); if(envelope != null) { diagramBuilder.setClipEnvelope(envelope.getEnvelopeInternal()); return (GeometryCollection) diagramBuilder.getDiagram(geomCollection.getFactory()); } else if (outputDimension == 1) { return mergeTrianglesEdges((GeometryCollection)diagramBuilder.getDiagram(geomCollection.getFactory())); } else { QuadEdgeSubdivision subdivision = diagramBuilder.getSubdivision(); List<Coordinate> circumcenter = new ArrayList<Coordinate>(geomCollection.getNumGeometries()); subdivision.visitTriangles(new TriangleVisitorCircumCenter(circumcenter), false);
VoronoiDiagramBuilder voronoiBuilder = new VoronoiDiagramBuilder(); voronoiBuilder.setSites(voronoiSites); GeometryCollection voronoiRegions = (GeometryCollection) voronoiBuilder.getDiagram(factory);
/** * Gets the faces of the computed diagram as a {@link GeometryCollection} * of {@link Polygon}s, clipped as specified. * <p> * The <tt>userData</tt> attribute of each face <tt>Polygon</tt> is set to * the <tt>Coordinate</tt> of the corresponding input site. * This allows using a <tt>Map</tt> to link faces to data associated with sites. * * @param geomFact the geometry factory to use to create the output * @return a <tt>GeometryCollection</tt> containg the face <tt>Polgyon</tt>s of the diagram */ public Geometry getDiagram(GeometryFactory geomFact) { create(); Geometry polys = subdiv.getVoronoiDiagram(geomFact); // clip polys to diagramEnv return clipGeometryCollection(polys, diagramEnv); }
geomCollection.getNumGeometries() > 0 && geomCollection.getGeometryN(0) instanceof Point) ) { VoronoiDiagramBuilder diagramBuilder = new VoronoiDiagramBuilder(); diagramBuilder.setSites(geomCollection); if(envelope != null) { diagramBuilder.setClipEnvelope(envelope.getEnvelopeInternal()); return (GeometryCollection) diagramBuilder.getDiagram(geomCollection.getFactory()); } else if (outputDimension == 1) { return mergeTrianglesEdges((GeometryCollection)diagramBuilder.getDiagram(geomCollection.getFactory())); } else { QuadEdgeSubdivision subdivision = diagramBuilder.getSubdivision(); List<Coordinate> circumcenter = new ArrayList<Coordinate>(geomCollection.getNumGeometries()); subdivision.visitTriangles(new TriangleVisitorCircumCenter(circumcenter), false);
VoronoiDiagramBuilder voronoiBuilder = new VoronoiDiagramBuilder(); voronoiBuilder.setSites(voronoiSites); GeometryCollection voronoiRegions = (GeometryCollection) voronoiBuilder.getDiagram(factory);
VoronoiDiagramBuilder vdBuilder = new VoronoiDiagramBuilder(); vdBuilder.setClipEnvelope(clipEnvelope); vdBuilder.setSites(coords); Geometry triangleGeoms = vdBuilder.getDiagram(gf);
VoronoiDiagramBuilder db = new VoronoiDiagramBuilder(); ArrayList<Coordinate> sites = new ArrayList<>(); for (IGeometricShape s : objects) { debug.add(new ShapeValue(s.getGeometry(), Geospace.get().getDefaultCRS())); db.setSites(sites); Geometry diag = db.getDiagram(new GeometryFactory());
VoronoiDiagramBuilder vdBuilder = new VoronoiDiagramBuilder(); vdBuilder.setClipEnvelope(clipEnvelope); vdBuilder.setSites(coordinateList); vdBuilder.setTolerance(proximalTolerance); Geometry thiessenGeoms = vdBuilder.getDiagram(gf); coordinateList.clear();