MATSIM
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.matsim.facilities.ActivityFacilitiesImpl Class Reference
Inheritance diagram for org.matsim.facilities.ActivityFacilitiesImpl:
Inheritance graph
[legend]

Public Member Functions

 ActivityFacilitiesImpl (final String name)
 
 ActivityFacilitiesImpl ()
 
final ActivityFacilityImpl createAndAddFacility (final Id< ActivityFacility > id, final Coord center)
 
final ActivityFacilityImpl createAndAddFacility (final Id< ActivityFacility > id, final Coord center, final Id< Link > linkId)
 
ActivityFacilitiesFactory getFactory ()
 
final Map< Id< ActivityFacility >, ? extends ActivityFacilitygetFacilities ()
 
final TreeMap< Id< ActivityFacility >, ActivityFacilitygetFacilitiesForActivityType (final String act_type)
 
String getName ()
 
void setName (String name)
 
final void addActivityFacility (ActivityFacility facility)
 
FailingObjectAttributes getFacilityAttributes ()
 
String toString ()
 
ActivityFacility getNearestFacility (final Coord coord)
 
Collection< ActivityFacilitygetNearestFacilities (final Coord coord, final double distance)
 
Attributes getAttributes ()
 

Private Member Functions

synchronized void buildQuadTree ()
 

Private Attributes

long nextMsg = 1
 
final ActivityFacilitiesFactory factory
 
final Attributes attributes = new AttributesImpl()
 
final IdMap< ActivityFacility, ActivityFacilityfacilities = new IdMap<>(ActivityFacility.class)
 
String name
 
QuadTree< ActivityFacilityfacilitiesQuadTree
 

Static Private Attributes

static final Logger log = LogManager.getLogger(ActivityFacilitiesImpl.class)
 

Detailed Description

Maintainer: mrieser / Senozon AG

Author
balmermi

Definition at line 44 of file ActivityFacilitiesImpl.java.

Constructor & Destructor Documentation

◆ ActivityFacilitiesImpl() [1/2]

org.matsim.facilities.ActivityFacilitiesImpl.ActivityFacilitiesImpl ( final String  name)

Definition at line 67 of file ActivityFacilitiesImpl.java.

References org.matsim.facilities.ActivityFacilitiesImpl.name.

67  {
68  this.name = name;
69  this.factory = new ActivityFacilitiesFactoryImpl();
70  }

◆ ActivityFacilitiesImpl() [2/2]

org.matsim.facilities.ActivityFacilitiesImpl.ActivityFacilitiesImpl ( )

Definition at line 73 of file ActivityFacilitiesImpl.java.

73  {
74  this(null);
75  }

Member Function Documentation

◆ createAndAddFacility() [1/2]

final ActivityFacilityImpl org.matsim.facilities.ActivityFacilitiesImpl.createAndAddFacility ( final Id< ActivityFacility id,
final Coord  center 
)

Definition at line 81 of file ActivityFacilitiesImpl.java.

81  {
82  return createAndAddFacility(id, center, null);
83  }
final ActivityFacilityImpl createAndAddFacility(final Id< ActivityFacility > id, final Coord center)

◆ createAndAddFacility() [2/2]

final ActivityFacilityImpl org.matsim.facilities.ActivityFacilitiesImpl.createAndAddFacility ( final Id< ActivityFacility id,
final Coord  center,
final Id< Link linkId 
)

Definition at line 85 of file ActivityFacilitiesImpl.java.

References org.matsim.api.core.v01.IdMap< T, V >.containsKey(), org.matsim.facilities.ActivityFacilityImpl.getId(), org.matsim.api.core.v01.IdMap< T, V >.put(), and org.matsim.api.core.v01.IdMap< T, V >.size.

85  {
86  if (this.facilities.containsKey(id)) {
87  throw new IllegalArgumentException("Facility with id=" + id + " already exists.");
88  }
89  ActivityFacilityImpl f = new ActivityFacilityImpl(id, center, linkId);
90  this.facilities.put(f.getId(),f);
91 
92  // show counter
93  if (this.facilities.size() % this.nextMsg == 0) {
94  this.nextMsg *= 2;
95  log.info(" facility # " + this.facilities.size() );
96  }
97 
98  return f;
99  }
final IdMap< ActivityFacility, ActivityFacility > facilities
Here is the call graph for this function:

◆ getFactory()

ActivityFacilitiesFactory org.matsim.facilities.ActivityFacilitiesImpl.getFactory ( )

Implements org.matsim.facilities.ActivityFacilities.

Definition at line 102 of file ActivityFacilitiesImpl.java.

References org.matsim.facilities.ActivityFacilitiesImpl.factory.

102  {
103  return this.factory;
104  }

◆ getFacilities()

final Map<Id<ActivityFacility>, ? extends ActivityFacility> org.matsim.facilities.ActivityFacilitiesImpl.getFacilities ( )

Implements org.matsim.facilities.ActivityFacilities.

Definition at line 107 of file ActivityFacilitiesImpl.java.

References org.matsim.facilities.ActivityFacilitiesImpl.facilities.

107  {
108  return this.facilities;
109  }
final IdMap< ActivityFacility, ActivityFacility > facilities

◆ getFacilitiesForActivityType()

final TreeMap<Id<ActivityFacility>, ActivityFacility> org.matsim.facilities.ActivityFacilitiesImpl.getFacilitiesForActivityType ( final String  act_type)

Implements org.matsim.facilities.ActivityFacilities.

Definition at line 112 of file ActivityFacilitiesImpl.java.

References org.matsim.facilities.ActivityFacility.getActivityOptions(), org.matsim.api.core.v01.Identifiable< T >.getId(), and org.matsim.api.core.v01.IdMap< T, V >.values().

112  {
113  TreeMap<Id<ActivityFacility>, ActivityFacility> facs = new TreeMap<>();
114  Iterator<ActivityFacility> iter = this.facilities.values().iterator();
115  while (iter.hasNext()){
116  ActivityFacility f = iter.next();
117  Map<String, ? extends ActivityOption> a = f.getActivityOptions();
118  if(a.containsKey(act_type)){
119  facs.put(f.getId(),f);
120  }
121  }
122  return facs;
123  }
final IdMap< ActivityFacility, ActivityFacility > facilities
Here is the call graph for this function:

◆ getName()

String org.matsim.facilities.ActivityFacilitiesImpl.getName ( )

◆ setName()

void org.matsim.facilities.ActivityFacilitiesImpl.setName ( String  name)

◆ addActivityFacility()

final void org.matsim.facilities.ActivityFacilitiesImpl.addActivityFacility ( ActivityFacility  facility)

Implements org.matsim.facilities.ActivityFacilities.

Definition at line 136 of file ActivityFacilitiesImpl.java.

References org.matsim.api.core.v01.IdMap< T, V >.containsKey(), org.matsim.api.core.v01.Identifiable< T >.getId(), and org.matsim.api.core.v01.IdMap< T, V >.put().

136  {
137  // validation
138  if (this.facilities.containsKey(facility.getId())) {
139  throw new IllegalArgumentException("Facility with id=" + facility.getId() + " already exists.");
140  }
141 
142  this.facilities.put(facility.getId(),facility);
143  }
final IdMap< ActivityFacility, ActivityFacility > facilities
Here is the call graph for this function:

◆ getFacilityAttributes()

FailingObjectAttributes org.matsim.facilities.ActivityFacilitiesImpl.getFacilityAttributes ( )

Implements org.matsim.facilities.ActivityFacilities.

Definition at line 146 of file ActivityFacilitiesImpl.java.

References org.matsim.utils.objectattributes.FailingObjectAttributes.createFacilitiesAttributes().

146  {
147  return FailingObjectAttributes.createFacilitiesAttributes();
148  }
Here is the call graph for this function:

◆ toString()

String org.matsim.facilities.ActivityFacilitiesImpl.toString ( )

Definition at line 151 of file ActivityFacilitiesImpl.java.

References org.matsim.api.core.v01.IdMap< T, V >.entrySet(), and org.matsim.api.core.v01.IdMap< T, V >.size.

151  {
152  StringBuilder stb = new StringBuilder(200);
153  stb.append(super.toString());
154  stb.append("\n");
155  stb.append("[number of facilities=");
156  stb.append(this.facilities.size());
157  stb.append("]\n");
158  for ( Entry<Id<ActivityFacility>,? extends ActivityFacility> entry : this.facilities.entrySet() ) {
159  final ActivityFacility fac = entry.getValue();
160  stb.append("[key=");
161  stb.append(entry.getKey().toString());
162  stb.append("; value=");
163  stb.append(fac.toString());
164  stb.append("]\n");
165  }
166 
167  return stb.toString();
168  }
final IdMap< ActivityFacility, ActivityFacility > facilities
Here is the call graph for this function:

◆ buildQuadTree()

synchronized void org.matsim.facilities.ActivityFacilitiesImpl.buildQuadTree ( )
private

Definition at line 170 of file ActivityFacilitiesImpl.java.

References org.matsim.core.utils.collections.QuadTree< T >.put(), and org.matsim.api.core.v01.IdMap< T, V >.values().

Referenced by org.matsim.facilities.ActivityFacilitiesImpl.getNearestFacilities(), and org.matsim.facilities.ActivityFacilitiesImpl.getNearestFacility().

170  {
171  /* the method must be synchronized to ensure we only build one quadTree
172  * in case that multiple threads call a method that requires the quadTree.
173  */
174  if (this.facilitiesQuadTree != null) {
175  return;
176  }
177  double startTime = System.currentTimeMillis();
178  double minx = Double.POSITIVE_INFINITY;
179  double miny = Double.POSITIVE_INFINITY;
180  double maxx = Double.NEGATIVE_INFINITY;
181  double maxy = Double.NEGATIVE_INFINITY;
182  for ( ActivityFacility n : this.facilities.values()) {
183  if (n.getCoord().getX() < minx) { minx = n.getCoord().getX(); }
184  if (n.getCoord().getY() < miny) { miny = n.getCoord().getY(); }
185  if (n.getCoord().getX() > maxx) { maxx = n.getCoord().getX(); }
186  if (n.getCoord().getY() > maxy) { maxy = n.getCoord().getY(); }
187  }
188  minx -= 1.0;
189  miny -= 1.0;
190  maxx += 1.0;
191  maxy += 1.0;
192  // yy the above four lines are problematic if the coordinate values are much smaller than one. kai, oct'15
193 
194  log.info("building QuadTree for nodes: xrange(" + minx + "," + maxx + "); yrange(" + miny + "," + maxy + ")");
195  QuadTree<ActivityFacility> quadTree = new QuadTree<>(minx, miny, maxx, maxy);
196  for (ActivityFacility n : this.facilities.values()) {
197  quadTree.put(n.getCoord().getX(), n.getCoord().getY(), n);
198  }
199  /* assign the quadTree at the very end, when it is complete.
200  * otherwise, other threads may already start working on an incomplete quadtree
201  */
202  this.facilitiesQuadTree = quadTree;
203  log.info("Building QuadTree took " + ((System.currentTimeMillis() - startTime) / 1000.0) + " seconds.");
204  }
final IdMap< ActivityFacility, ActivityFacility > facilities
Here is the call graph for this function:

◆ getNearestFacility()

ActivityFacility org.matsim.facilities.ActivityFacilitiesImpl.getNearestFacility ( final Coord  coord)

finds the node nearest to coord

Parameters
coordthe coordinate to which the closest node should be found
Returns
the closest node found, null if none

Implements org.matsim.facilities.SearchableActivityFacilities.

Definition at line 213 of file ActivityFacilitiesImpl.java.

References org.matsim.facilities.ActivityFacilitiesImpl.buildQuadTree(), org.matsim.core.utils.collections.QuadTree< T >.getClosest(), org.matsim.api.core.v01.Coord.getX(), and org.matsim.api.core.v01.Coord.getY().

213  {
214  if (this.facilitiesQuadTree == null) { buildQuadTree(); }
215  return this.facilitiesQuadTree.getClosest(coord.getX(), coord.getY());
216  }
Here is the call graph for this function:

◆ getNearestFacilities()

Collection<ActivityFacility> org.matsim.facilities.ActivityFacilitiesImpl.getNearestFacilities ( final Coord  coord,
final double  distance 
)

finds the nodes within distance to coord

Parameters
coordthe coordinate around which nodes should be located
distancethe maximum distance a node can have to coord to be found
Returns
all nodes within distance to coord

Implements org.matsim.facilities.SearchableActivityFacilities.

Definition at line 225 of file ActivityFacilitiesImpl.java.

References org.matsim.facilities.ActivityFacilitiesImpl.buildQuadTree(), org.matsim.core.utils.collections.QuadTree< T >.getDisk(), org.matsim.api.core.v01.Coord.getX(), and org.matsim.api.core.v01.Coord.getY().

225  {
226  if (this.facilitiesQuadTree == null) { buildQuadTree(); }
227  return this.facilitiesQuadTree.getDisk(coord.getX(), coord.getY(), distance);
228  }
Here is the call graph for this function:

◆ getAttributes()

Attributes org.matsim.facilities.ActivityFacilitiesImpl.getAttributes ( )

Member Data Documentation

◆ nextMsg

long org.matsim.facilities.ActivityFacilitiesImpl.nextMsg = 1
private

Definition at line 50 of file ActivityFacilitiesImpl.java.

◆ log

final Logger org.matsim.facilities.ActivityFacilitiesImpl.log = LogManager.getLogger(ActivityFacilitiesImpl.class)
staticprivate

Definition at line 52 of file ActivityFacilitiesImpl.java.

◆ factory

final ActivityFacilitiesFactory org.matsim.facilities.ActivityFacilitiesImpl.factory
private

◆ attributes

final Attributes org.matsim.facilities.ActivityFacilitiesImpl.attributes = new AttributesImpl()
private

◆ facilities

final IdMap<ActivityFacility, ActivityFacility> org.matsim.facilities.ActivityFacilitiesImpl.facilities = new IdMap<>(ActivityFacility.class)
private

◆ name

String org.matsim.facilities.ActivityFacilitiesImpl.name
private

◆ facilitiesQuadTree

QuadTree<ActivityFacility> org.matsim.facilities.ActivityFacilitiesImpl.facilitiesQuadTree
private

Definition at line 60 of file ActivityFacilitiesImpl.java.


The documentation for this class was generated from the following file: