4 #include <boost/property_tree/xml_parser.hpp> 18 using boost::property_tree::ptree;
28 ClusterSaver(
string file_name,
string pop_file_name,
string facility_file_name,
string output_dir);
50 void saveClusterGroup(
const vector<Cluster>& households,
const vector<uint> indices, ofstream& csv_file)
const;
78 template<ClusterType type>
82 double latitude_middle = 0.0;
83 double longitude_middle = 0.0;
86 for (
const auto& cluster: clusters) {
87 latitude_middle += cluster.getLocation().m_latitude;
88 longitude_middle += cluster.getLocation().m_longitude;
91 latitude_middle /= clusters.size() - 1;
92 longitude_middle /= clusters.size() - 1;
100 for (
auto it = clusters.begin() + 1; it != clusters.end(); ++it) {
101 const auto& cluster = *it;
103 double candidate_distance = calc.getDistance(middle, cluster.getLocation());
105 if (radius < candidate_distance && cluster.getActiveClusterMembers() != 0) {
106 radius = candidate_distance;
110 return PI * radius * radius;
113 static map<uint, uint>
getClMap(
const vector<Cluster>& clusters) {
114 map<uint, uint> result;
116 for (
const auto& cluster: clusters) {
117 uint count = cluster.getActiveClusterMembers();
119 if (result.find(count) == result.end() && count != 0) {
134 throw runtime_error(
string(__func__) +
">Trying to save unknown cluster type.");
138 throw runtime_error(
string(__func__) +
">Trying to save unknown cluster type.");
const std::vector< Cluster > & getPrimaryCommunities() const
static map< uint, uint > getClusterMap(const Simulator &local_sim)
double getPopCount(const Simulator &local_sim) const
void saveClustersCSV(const Simulator &sim) const
Saves cluster information for Households (aggregated), Primary Communities and Secondary Communities...
static double calcSurface(const vector< Cluster > &clusters)
Time Dependent Person DataType.
virtual void update(const Simulator &sim)
void saveClustersJSON(const Simulator &sim) const
Interface/Implementation of Observer.
pair< ptree, ptree > getClusterJSON(const Cluster &cluster) const
void saveTransportationFacilities(const Simulator &local_sim) const
static double calculateSurface(const Simulator &local_sim)
static map< uint, uint > getClusterMap(const Simulator &local_sim)
ClusterSaver(string file_name, string pop_file_name, string facility_file_name, string output_dir)
map< uint, uint > getAgeMap(const Simulator &local_sim) const
void saveClusterGroup(const vector< Cluster > &households, const vector< uint > indices, ofstream &csv_file) const
Saves an aggregated cluster. The clusters that need to be aggregated are given by the indices...
static map< uint, uint > getClMap(const vector< Cluster > &clusters)
Header for the Simulator class.
static double calculateSurface(const Simulator &local_sim)
string m_facility_file_dir
const std::vector< Cluster > & getSchoolClusters() const
Main class that contains and direct the virtual world.
const std::vector< Cluster > & getWorkClusters() const
static map< uint, uint > getClusterMap(const Simulator &local_sim)
static map< uint, uint > getClusterMap(const Simulator &local_sim)
const std::vector< Cluster > & getSecondaryCommunities() const
void savePopDataJSON(const Simulator &local_sim) const
string m_facility_file_name
Represents a location for social contacts, an group of people.
void saveClusterCSV(const Cluster &cluster, ofstream &csv_file) const
Saves a single cluster.
static double calculateSurface(const Simulator &local_sim)
Calculate the used surface The middle point of cities is calculated, followed by the distance between...
static double calculateSurface(const Simulator &local_sim)
const std::vector< Cluster > & getHouseholds() const
void saveAggrClustersCSV(const vector< Cluster > &households, ofstream &csv_file) const
Aggregates the vector of given clusters according to their GeoLocation, and saves them...
ClusterType
Enumerates the cluster types.
static const GeoCoordCalculator & getInstance()
Singleton pattern.
static double calculateSurface(const Simulator &local_sim)
Header for the core Cluster class.
static map< uint, uint > getClusterMap(const Simulator &local_sim)
static map< uint, uint > getClusterMap(const Simulator &local_sim)
static double calculateSurface(const Simulator &local_sim)