MATSIM
Static Public Member Functions | Private Member Functions | Static Private Attributes | List of all members
org.matsim.facilities.FacilitiesUtils Class Reference

Static Public Member Functions

static ActivityFacilities createActivityFacilities ()
 
static ActivityFacilities createActivityFacilities (String name)
 
static SortedMap< Id< ActivityFacility >, ActivityFacilitygetSortedFacilities (final ActivityFacilities facilities)
 
static void setLinkID (final Facility facility, Id< Link > linkId)
 
static Id< LinkdecideOnLinkId (final Facility facility, final Network network)
 
static Link decideOnLink (final Facility facility, final Network network)
 
static Facility toFacility (final Activity toWrap, ActivityFacilities activityFacilities)
 
static Facility wrapActivity (final Activity toWrap)
 
static Facility wrapLink (final Link link)
 
static Facility wrapLinkAndCoord (final Link link, final Coord coord)
 
static Coord decideOnCoord (final Facility facility, final Network network, final Config config)
 
static Coord decideOnCoord (final Facility facility, final Network network, double relativePositionOfEntryExitOnLink)
 
static< F extends Facility &Attributable > Object getFacilityAttribute (F facility, String key)
 
static< F extends Facility &Attributable > void putFacilityAttribute (F facility, String key, Object value)
 
static< F extends Facility &Attributable > Object removeFacilityAttribute (F facility, String key)
 

Private Member Functions

 FacilitiesUtils ()
 

Static Private Attributes

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

Detailed Description

Contains several helper methods for working with facilities.

Author
cdobler

Definition at line 47 of file FacilitiesUtils.java.

Constructor & Destructor Documentation

◆ FacilitiesUtils()

org.matsim.facilities.FacilitiesUtils.FacilitiesUtils ( )
private

Definition at line 50 of file FacilitiesUtils.java.

50 {} // container for static methods; do not instantiate

Member Function Documentation

◆ createActivityFacilities() [1/2]

static ActivityFacilities org.matsim.facilities.FacilitiesUtils.createActivityFacilities ( )
static

Definition at line 52 of file FacilitiesUtils.java.

52  {
53  return createActivityFacilities(null) ;
54  }
static ActivityFacilities createActivityFacilities()

◆ createActivityFacilities() [2/2]

static ActivityFacilities org.matsim.facilities.FacilitiesUtils.createActivityFacilities ( String  name)
static

Definition at line 56 of file FacilitiesUtils.java.

56  {
57  return new ActivityFacilitiesImpl( name ) ;
58  }

◆ getSortedFacilities()

static SortedMap<Id<ActivityFacility>, ActivityFacility> org.matsim.facilities.FacilitiesUtils.getSortedFacilities ( final ActivityFacilities  facilities)
static
Returns
sorted map containing containing the facilities as values and their ids as keys.

Definition at line 63 of file FacilitiesUtils.java.

References org.matsim.facilities.ActivityFacilities.getFacilities().

63  {
64  return new TreeMap<>(facilities.getFacilities());
65  }
Here is the call graph for this function:

◆ setLinkID()

static void org.matsim.facilities.FacilitiesUtils.setLinkID ( final Facility  facility,
Id< Link linkId 
)
static

Definition at line 67 of file FacilitiesUtils.java.

67  {
68  if ( facility instanceof ActivityFacilityImpl ) {
69  ((ActivityFacilityImpl) facility).setLinkId(linkId);
70  } else {
71  throw new RuntimeException("cannot set linkID for this facility type; API needs to be cleaned up") ;
72  }
73  }

◆ decideOnLinkId()

static Id<Link> org.matsim.facilities.FacilitiesUtils.decideOnLinkId ( final Facility  facility,
final Network  network 
)
static

Compare to decideOnLink(Facility, Network). Sometimes only the linkId is needed, and often it is cheaper to obtain than the full link. Then call this method.

Parameters
facility
network
Returns

Definition at line 82 of file FacilitiesUtils.java.

References org.matsim.facilities.FacilitiesUtils.decideOnLink(), org.matsim.api.core.v01.Identifiable< T >.getId(), and org.matsim.facilities.Facility.getLinkId().

82  {
83  Link accessActLink = null ;
84 
85  Id<Link> accessActLinkId = null ;
86  try {
87  accessActLinkId = facility.getLinkId() ;
88  } catch ( Exception ee ) {
89  // there are implementations that throw an exception here although "null" is, in fact, an interpretable value. kai, oct'18
90  }
91  if ( accessActLinkId!=null ) {
92  return accessActLinkId ;
93  }
94  return decideOnLink( facility, network ).getId() ;
95  }
static Link decideOnLink(final Facility facility, final Network network)
Here is the call graph for this function:

◆ decideOnLink()

static Link org.matsim.facilities.FacilitiesUtils.decideOnLink ( final Facility  facility,
final Network  network 
)
static
Deprecated:
Please use MultimodalLinkChooser instead

Definition at line 102 of file FacilitiesUtils.java.

References org.matsim.api.core.v01.BasicLocation.getCoord(), org.matsim.facilities.Facility.getLinkId(), and org.matsim.api.core.v01.network.Network.getLinks().

Referenced by org.matsim.facilities.FacilitiesUtils.decideOnLinkId(), and org.matsim.core.router.TeleportationRoutingModule.toString().

102  {
103  Link accessActLink = null ;
104 
105  Id<Link> accessActLinkId = null ;
106  try {
107  accessActLinkId = facility.getLinkId() ;
108  } catch ( Exception ee ) {
109  // there are implementations that throw an exception here although "null" is, in fact, an interpretable value. kai, oct'18
110  }
111 
112  if ( accessActLinkId!=null ) {
113  accessActLink = network.getLinks().get( facility.getLinkId() );
114  // i.e. if street address is in mode-specific subnetwork, I just use that, and do not search for another (possibly closer)
115  // other link.
116 
117  }
118 
119  if ( accessActLink==null ) {
120  // this is the case where the postal address link is NOT in the subnetwork, i.e. does NOT serve the desired mode,
121  // OR the facility does not have a street address link in the first place.
122 
123  if( facility.getCoord()==null ) {
124  throw new RuntimeException("link for facility cannot be determined when neither facility link id nor facility coordinate given") ;
125  }
126 
127  accessActLink = NetworkUtils.getNearestLink(network, facility.getCoord()) ;
128  if ( accessActLink == null ) {
129  log.warn("Facility without link for which no nearest link on the respective network could be found. " +
130  "About to abort. Writing out the first 10 links to understand which subnetwork was used to help debugging.");
131  int ii = 0 ;
132  for ( Link link : network.getLinks().values() ) {
133  if ( ii==10 ) {
134  break ;
135  }
136  ii++ ;
137  log.warn( link );
138  }
139  }
140  Gbl.assertNotNull(accessActLink);
141  }
142  return accessActLink;
143 
144  // I just found out that there are facilities that insist on links that may not be postal addresses since they cannot be reached by car.
145  // TransitStopFacility is an example. kai, jun'19
146 
147  }
Here is the call graph for this function:

◆ toFacility()

static Facility org.matsim.facilities.FacilitiesUtils.toFacility ( final Activity  toWrap,
ActivityFacilities  activityFacilities 
)
static

Definition at line 149 of file FacilitiesUtils.java.

References org.matsim.facilities.ActivityFacilities.getFacilities(), and org.matsim.api.core.v01.population.Activity.getFacilityId().

Referenced by org.matsim.core.mobsim.qsim.PreplanningEngine.createDrtTripInclAccessEgress(), org.matsim.core.mobsim.qsim.pt.TransitDriverAgentImpl.getDestinationFacility(), org.matsim.core.mobsim.qsim.agents.BasicPlanAgentImpl.getDestinationFacility(), org.matsim.withinday.utils.EditTrips.newTripToNewActivity(), org.matsim.withinday.utils.EditTrips.replanCurrentLegWithGenericRoute(), org.matsim.withinday.utils.EditTrips.replanFutureTrip(), and org.matsim.core.router.PlanRouter.run().

149  {
150  if ( activityFacilities!=null && toWrap.getFacilityId()!=null ){
151  ActivityFacility fac = activityFacilities.getFacilities().get( toWrap.getFacilityId() );
152  if( fac != null ){
153  return fac;
154  }
155  }
156  return new ActivityWrapperFacility( toWrap );
157  }
Here is the call graph for this function:

◆ wrapActivity()

static Facility org.matsim.facilities.FacilitiesUtils.wrapActivity ( final Activity  toWrap)
static

Preferably use FacilitiesUtils#toFacility(Activity, ActivityFacilities). The method here is left in place if one wants to construct a wrapper decidedly without automagic. It deliberately returns the interface.

Definition at line 163 of file FacilitiesUtils.java.

163  {
164  return new ActivityWrapperFacility( toWrap ) ;
165  }

◆ wrapLink()

static Facility org.matsim.facilities.FacilitiesUtils.wrapLink ( final Link  link)
static

Definition at line 167 of file FacilitiesUtils.java.

Referenced by org.matsim.withinday.utils.EditTrips.replanCurrentLegWithNetworkRoute().

167  {
168  return new LinkWrapperFacility( link ) ;
169  }

◆ wrapLinkAndCoord()

static Facility org.matsim.facilities.FacilitiesUtils.wrapLinkAndCoord ( final Link  link,
final Coord  coord 
)
static

Definition at line 170 of file FacilitiesUtils.java.

170  {
171  return new LinkWrapperFacilityWithSpecificCoord(link,coord);
172  }

◆ decideOnCoord() [1/2]

static Coord org.matsim.facilities.FacilitiesUtils.decideOnCoord ( final Facility  facility,
final Network  network,
final Config  config 
)
static

We have situations where the coordinate field in facility is not filled out.

Definition at line 177 of file FacilitiesUtils.java.

References org.matsim.core.config.groups.GlobalConfigGroup.getRelativePositionOfEntryExitOnLink(), and org.matsim.core.config.Config.global().

Referenced by org.matsim.core.router.TeleportationRoutingModule.toString(), and org.matsim.core.mobsim.qsim.PreplanningEngine.updateAgentPlan().

177  {
178  return decideOnCoord( facility, network, config.global().getRelativePositionOfEntryExitOnLink() ) ;
179  }
static Coord decideOnCoord(final Facility facility, final Network network, final Config config)
Here is the call graph for this function:

◆ decideOnCoord() [2/2]

static Coord org.matsim.facilities.FacilitiesUtils.decideOnCoord ( final Facility  facility,
final Network  network,
double  relativePositionOfEntryExitOnLink 
)
static

We have situations where the coordinate field in facility is not filled out.

Definition at line 183 of file FacilitiesUtils.java.

References org.matsim.api.core.v01.BasicLocation.getCoord(), and org.matsim.facilities.Facility.getLinkId().

183  {
184  if ( facility.getCoord() != null && ! ( facility instanceof LinkWrapperFacility)) {
185  return facility.getCoord() ;
186  }
187 
188  if ( facility.getLinkId()==null ) {
189  if ( facility instanceof Identifiable ) {
190  throw new RuntimeException( "facility with id=" + ((Identifiable) facility).getId() + " has neither coord nor linkId. This " +
191  "does not work ..." ) ;
192  } else {
193  throw new RuntimeException( "facility which does not implement Identifiable has neither coord nor linkId. This " +
194  "does not work ..." ) ;
195  }
196  }
197 
198  Gbl.assertNotNull( network ) ;
199  Link link = network.getLinks().get( facility.getLinkId() ) ;
200  Gbl.assertNotNull( link );
201  Coord fromCoord = link.getFromNode().getCoord() ;
202  Coord toCoord = link.getToNode().getCoord() ;
203  return new Coord( fromCoord.getX() + relativePositionOfEntryExitOnLink *( toCoord.getX() - fromCoord.getX()) , fromCoord.getY() + relativePositionOfEntryExitOnLink *( toCoord.getY() - fromCoord.getY() ) );
204 
205  }
Here is the call graph for this function:

◆ getFacilityAttribute()

static <F extends Facility & Attributable> Object org.matsim.facilities.FacilitiesUtils.getFacilityAttribute ( facility,
String  key 
)
static

Definition at line 212 of file FacilitiesUtils.java.

212  {
213  return facility.getAttributes().getAttribute( key );
214  }

◆ putFacilityAttribute()

static <F extends Facility & Attributable> void org.matsim.facilities.FacilitiesUtils.putFacilityAttribute ( facility,
String  key,
Object  value 
)
static

Definition at line 216 of file FacilitiesUtils.java.

216  {
217  facility.getAttributes().putAttribute( key, value ) ;
218  }

◆ removeFacilityAttribute()

static <F extends Facility & Attributable> Object org.matsim.facilities.FacilitiesUtils.removeFacilityAttribute ( facility,
String  key 
)
static

Definition at line 220 of file FacilitiesUtils.java.

220  {
221  return facility.getAttributes().removeAttribute( key );
222  }

Member Data Documentation

◆ log

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

Definition at line 48 of file FacilitiesUtils.java.


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