21 package org.matsim.core.network.algorithms.intersectionSimplifier.containers;
23 import java.util.ArrayList;
24 import java.util.List;
26 import org.apache.logging.log4j.LogManager;
27 import org.apache.logging.log4j.Logger;
28 import org.locationtech.jts.geom.Geometry;
29 import org.locationtech.jts.geom.Point;
43 private final Logger
log = LogManager.getLogger(
Cluster.class);
52 this.activities =
new ArrayList<>();
59 if(this.concaveHull == null){
60 if(!activities.isEmpty()){
64 xTotal += p.getCoord().getX();
65 yTotal += p.getCoord().getY();
67 double xCenter = xTotal / (double) activities.size();
68 double yCenter = yTotal / (double) activities.size();
70 centerOfGravity =
new Coord(xCenter, yCenter);
72 throw new IllegalArgumentException(
"Not enough points in cluster " + clusterId +
" to calculate a center of gravity!");
77 Point centroid = this.concaveHull.getCentroid();
78 if(!centroid.isEmpty()){
79 centerOfGravity =
new Coord(centroid.getX(), centroid.getY());
81 log.warn(
"Cannot set centre of gravity for an empty point!!");
82 log.debug(
" --> Unique facility identifier: " + this.
getId().toString());
83 log.debug(
" --> No centre of gravity set.");
106 this.concaveHull = geometry;
List< ClusterActivity > getPoints()
void setConcaveHull(Geometry geometry)
Geometry getConcaveHull(Geometry geometry)
final List< ClusterActivity > activities
Cluster(Id< Cluster > clusterId)
void setCenterOfGravity()
void setClusterId(Id< Cluster > id)
Coord getCenterOfGravity()