Python: module osmviz.animation

osmviz.animation | index /Users/colin/colin_dev/transit/osmviz/src/osmviz/animation.py

`OpenStreetMap Animation Tool:
- Provides easy setup to show things moving around on a map.
- Requires pygame.
Basic idea:
1. Create TrackingViz objects or your own custom SimViz's
2. Create a Simulation object with those Viz's
3. Call the Simulation's run() method
4. Run the simulation:
- Mouse over icons to display labels
- up/down keys increase/decrease speed of simulation
- left/right keys move simulation to begin/end of time window
- space bar sets speed to zero
- escape key exits
The TrackingViz class can be used without any knowledge of Pygame. All you
need is an image you want to put on the map and a function defining where it
should be on the map as a function of time.
For any other visualization on the map, you will want to override the
SimViz class. This will require knowledge of how to use Pygame. Basically
a Pygame Surface will be passed in when it is time to draw.
The Simulation class just does the following:
1. Downloads OSM tiles, patches them together, and resizes
2. Displays a window with the map on it
3. Runs a timer and has all Viz objects draw to the map at each frame.
Keyboard input is accepted to control the speed of the simulation.`

Modules
`` |  |
pygame | time |  |

Classes
`` |  | __builtin__.object SimViz TrackingViz Simulation
class SimViz(__builtin__.object)
`` | `Abstract interface representing an object which knows how and when to display itself on a surface inside of a Simulation. This class is meant to serve as an interface definition to be subclassed (or at least replicated).`
| Methods defined here: __init__(self, drawingOrder=0) `Base constructor for a SimViz. 'drawingOrder' is used to specify the order in which this viz is drawn to the surface relative to others. See 'getDrawingOrder()'.` drawToSurface(self, surf) `To be overridden. Draws this viz on the supplied surface, according to its internal state.` getBoundingBox(self) `To be overridden. Returns (latmin,latmax,lonmin,lonmax) the lat/lon bounds of this visualization object. Note that for Simulation purposes, this does not need to be implemented if this SimViz is passed in as one of the scene_viz's (as opposed to an actor_viz).` getDrawingOrder(self) `Returns an integer representing the order in which this viz should be drawn relative to other vizs. Vizs with a higher drawing order are drawn after those with a lower drawing order, meaning they will be drawn on top.` getLabel(self) `To be overridden (optionally). Returns string to be displayed as descriptive label for this viz object. Default behavior is to return None, meaning no label should ever be displayed.` getTimeInterval(self) `To be overridden. Returns (begin,end) time values for the existence of this visualization object. May return ( -Inf,Inf ) to indicate that it is always present.` mouseIntersect(self, mousex, mousey) `To be overridden. Returns True if the given mouse location is inside some designated region of this visualization. Note that for Simulation purposes, if getLabel() returns None then this method does not need to be implemented.` setState(self, simtime, getXY) `To be overridden. Sets the internal state of this viz to the specified time. This should be stored internally, for subsequent calls to methods such as drawToSurface or mouseIntersect.` Data descriptors defined here: __dict__ `dictionary for instance variables (if defined)` __weakref__ `list of weak references to the object (if defined)`
class Simulation(__builtin__.object)
`` | `A collection of generic SimViz's and a timer, of sorts. This lets the visualizer say "Give me coordinates of each object at time T". A run() method is provided which displays the simulation in a pygame window.`
| Methods defined here: __init__(self, actor_vizs, scene_vizs, initTime=0) `Given two collections of generic SimViz objects, and optionally an initial time, creates a Simulation object. Both actor_vizs and scene_vizs should be a collection of SimViz objects. The difference is that the actor_vizs will determine the bounds of the animation in space and time, while the location and time windows of the scene_vizs will be largely ignored.` getXY(self, lat, lon, bounds, ssize) `Given coordinates in lon,lat, and a screen size, returns the corresponding (x,y) pixel coordinates.` printTime(self) run(self, speed=0.0, windowsize=(1280, 800), refresh_rate=1.0, font='/Library/Frameworks/Python.framework/Versions/2....b/python2.5/site-packages/pygame/freesansbold.ttf', fontsize=10, osmzoom=14) `Pops up a window and displays the simulation on it. Speed is advancement of sim in seconds/second. Refresh rate is pause in seconds between frames. Windowsize is the desired (width,height) of the display window. Font is either the full path to a pygame-compatible font file (e.g. a .ttf file), or an actual pygame Font object, or None. If None, then labels will not be rendered, instead they will be printed to stdout. Fontsize is the size of the font, if it exists.` setTime(self, time) `Moves all bus tracks to the given time.` Data descriptors defined here: __dict__ `dictionary for instance variables (if defined)` __weakref__ `list of weak references to the object (if defined)`
class TrackingViz(SimViz)
`` | `A generic SimViz which displays a moving image on the map.`
| Method resolution order: TrackingViz SimViz __builtin__.object Methods defined here: __init__(self, label, image, getLatLonAtTimeFunc, time_window, bounding_box, drawing_order=0) `Constructs a TrackingViz. Arguments: label - text to display when moused over, or None for no text image - filename of image to display on map getLatLonAtTimeFunc - a function that takes one argument (time) and returns (lat,lon) time_window - a tuple (begin_time,end_time) representing the times this object exists bounding_box - a tuple (min_lat,max_lat,min_lon,max_lon) representing the farthest bounds that this object will reach drawing_order - see SimViz.getDrawingOrder()` drawToSurface(self, surf) getBoundingBox(self) getLabel(self) getTimeInterval(self) mouseIntersect(self, mousex, mousey) setState(self, simtime, getXY) Methods inherited from SimViz: getDrawingOrder(self) `Returns an integer representing the order in which this viz should be drawn relative to other vizs. Vizs with a higher drawing order are drawn after those with a lower drawing order, meaning they will be drawn on top.` Data descriptors inherited from SimViz: __dict__ `dictionary for instance variables (if defined)` __weakref__ `list of weak references to the object (if defined)`

Data
`` |  | Inf = inf