de::psi::telco::sumoplayer::SUMOSAXHandler Class Reference

Inherits org::xml::sax::helpers::DefaultHandler.


Detailed Description

This SAX Handler parses SUMO "--network-dump" output files. It guesses which vehicles are tracked by a given propability.

Author:
will

Definition at line 21 of file SUMOSAXHandler.java.


Public Member Functions

double getCar4carEquippedPropbaility ()
void setCar4carEquippedPropability (double car4carEquippedPropbaility)
void setJitter (int jitter)
void setListener (SUMOLocationListener listener)
void setResolver (SUMOGeoCoordinatesResolver resolver)
void startDocument ()
void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException
 SUMOSAXHandler (String netfilename)

Private Member Functions

void handleVehicle ()

Private Attributes

double car4carEquippedPropbaility = 0.01
String edgeId
int jitter = 0
Set< String > knownVehicles = new HashSet<String>()
String laneId
SUMOLocationListener listener
double pos
SUMOGeoCoordinatesResolver resolver
double speed
long startTime
int timestep
Set< String > trackedVehicles = new HashSet<String>()
String vehicleId

Constructor & Destructor Documentation

de::psi::telco::sumoplayer::SUMOSAXHandler::SUMOSAXHandler ( String  netfilename  )  [inline]

Definition at line 46 of file SUMOSAXHandler.java.

References resolver.

00046                                              {
00047         this.resolver = new SUMOGeoCoordinatesResolver(netfilename);
00048     }


Member Function Documentation

double de::psi::telco::sumoplayer::SUMOSAXHandler::getCar4carEquippedPropbaility (  )  [inline]

Definition at line 111 of file SUMOSAXHandler.java.

References car4carEquippedPropbaility.

00111                                                   {
00112         return car4carEquippedPropbaility;
00113     }

void de::psi::telco::sumoplayer::SUMOSAXHandler::handleVehicle (  )  [inline, private]

Definition at line 81 of file SUMOSAXHandler.java.

References car4carEquippedPropbaility, edgeId, de::psi::telco::sumoplayer::util::Point::getX(), de::psi::telco::sumoplayer::util::Point::getY(), jitter, knownVehicles, laneId, listener, de::psi::telco::sumoplayer::SUMOLocationListener::LocationUpdated(), pos, de::psi::telco::sumoplayer::SUMOGeoCoordinatesResolver::resolv(), resolver, speed, timestep, trackedVehicles, and vehicleId.

Referenced by startElement().

00081                                 {
00082         if (trackedVehicles.size() == 0){   // add first vehicle anyway for simulations whith only one vehicle
00083             knownVehicles.add(vehicleId);
00084             trackedVehicles.add(vehicleId);
00085         }else{  // add vehicles probabilistic
00086             if (!knownVehicles.contains(vehicleId)){    // check if vehicle is already known
00087                 
00088                 knownVehicles.add(vehicleId);   // then add it as known
00089                 if (car4carEquippedPropbaility > Math.random()){    // and calculate propability
00090                     trackedVehicles.add(vehicleId);                 // ... to add it
00091                 }
00092             }
00093         }
00094         
00095         if (trackedVehicles.contains(vehicleId)){   // handle a tracked vehicle only
00096             // calculate geo position
00097             Point p = resolver.resolv(edgeId, laneId, pos);
00098             
00099             // calculate jitter if required
00100             if (jitter > 0){
00101                 double jitterLon = GeoCalc.getLonOffset(p.getX(), p.getY(), jitter)*((Math.random()*2)-1);
00102                 double jitterLat = GeoCalc.getLatOffset(p.getX(), p.getY(), jitter)*((Math.random()*2)-1);
00103                 p = new PointImpl(p.getX()+jitterLon,p.getY()+jitterLat);
00104             }
00105             
00106             // call the listener
00107             this.listener.LocationUpdated(vehicleId, timestep, p.getX(), p.getY(), speed*3.6);
00108         }
00109     }

void de::psi::telco::sumoplayer::SUMOSAXHandler::setCar4carEquippedPropability ( double  car4carEquippedPropbaility  )  [inline]

void de::psi::telco::sumoplayer::SUMOSAXHandler::setJitter ( int  jitter  )  [inline]

This function sets the GPS jitter in meters

Parameters:
jitter 

Definition at line 131 of file SUMOSAXHandler.java.

Referenced by de::psi::telco::sumoplayer::SUMOPlayer::init().

00131                                      {
00132         this.jitter = jitter;
00133     }

void de::psi::telco::sumoplayer::SUMOSAXHandler::setListener ( SUMOLocationListener  listener  )  [inline]

Definition at line 119 of file SUMOSAXHandler.java.

Referenced by de::psi::telco::sumoplayer::SUMOPlayer::init().

00119                                                            {
00120         this.listener = listener;
00121     }

void de::psi::telco::sumoplayer::SUMOSAXHandler::setResolver ( SUMOGeoCoordinatesResolver  resolver  )  [inline]

Definition at line 123 of file SUMOSAXHandler.java.

00123                                                                  {
00124         this.resolver = resolver;
00125     }

void de::psi::telco::sumoplayer::SUMOSAXHandler::startDocument (  )  [inline]

Definition at line 50 of file SUMOSAXHandler.java.

References startTime.

00050                                {
00051         startTime = System.currentTimeMillis();
00052     }

void de::psi::telco::sumoplayer::SUMOSAXHandler::startElement ( String  uri,
String  localName,
String  qName,
Attributes  attributes 
) throws SAXException [inline]

Definition at line 54 of file SUMOSAXHandler.java.

References edgeId, handleVehicle(), laneId, pos, speed, startTime, timestep, and vehicleId.

00054                                                                                                                     {
00055         if (qName.equals("timestep")){
00056             timestep = Integer.parseInt(attributes.getValue("time"));
00057             
00058             long timeToBe = startTime + timestep*1000;  // dirty realtime trick
00059             long now = System.currentTimeMillis();
00060             try {
00061                 if (timeToBe-now>0){
00062                     Thread.sleep(timeToBe-now);
00063                 }
00064             } catch (InterruptedException e) {
00065                 // TODO Auto-generated catch block
00066                 e.printStackTrace();
00067             }
00068         }else if(qName.equals("edge")){
00069             edgeId = attributes.getValue("id"); 
00070         }else if(qName.equals("lane")){
00071             laneId = attributes.getValue("id");
00072         }else if(qName.equals("vehicle")){
00073             vehicleId = attributes.getValue("id");
00074             pos = Double.parseDouble(attributes.getValue("pos"));
00075             speed = Double.parseDouble(attributes.getValue("speed"));
00076             
00077             handleVehicle();
00078         }
00079     }


Field Documentation

The given propability which decides which cars are beeing tracked 0 means no vehicles 1 means all vehicles. anything else between.

Definition at line 27 of file SUMOSAXHandler.java.

Referenced by getCar4carEquippedPropbaility(), and handleVehicle().

Definition at line 36 of file SUMOSAXHandler.java.

Referenced by handleVehicle(), and startElement().

Definition at line 28 of file SUMOSAXHandler.java.

Referenced by handleVehicle().

Set<String> de::psi::telco::sumoplayer::SUMOSAXHandler::knownVehicles = new HashSet<String>() [private]

Definition at line 31 of file SUMOSAXHandler.java.

Referenced by handleVehicle().

Definition at line 37 of file SUMOSAXHandler.java.

Referenced by handleVehicle(), and startElement().

Definition at line 43 of file SUMOSAXHandler.java.

Referenced by handleVehicle().

Definition at line 40 of file SUMOSAXHandler.java.

Referenced by handleVehicle(), and startElement().

Definition at line 44 of file SUMOSAXHandler.java.

Referenced by handleVehicle(), and SUMOSAXHandler().

Definition at line 41 of file SUMOSAXHandler.java.

Referenced by handleVehicle(), and startElement().

Definition at line 34 of file SUMOSAXHandler.java.

Referenced by startDocument(), and startElement().

Definition at line 33 of file SUMOSAXHandler.java.

Referenced by handleVehicle(), and startElement().

Set<String> de::psi::telco::sumoplayer::SUMOSAXHandler::trackedVehicles = new HashSet<String>() [private]

Definition at line 30 of file SUMOSAXHandler.java.

Referenced by handleVehicle().

Definition at line 39 of file SUMOSAXHandler.java.

Referenced by handleVehicle(), and startElement().


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

Generated on Wed May 5 00:07:01 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6