Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You may still be able to use data portions of GPSD, rather than writing something from scratch. The following code is from the GPSD source and has a module for making paths from streams of GPS data (and then getting the path length and whatnot)</p> <p><a href="http://code.google.com/p/python-gpsd/source/browse/src/nmea/track.py" rel="nofollow">http://code.google.com/p/python-gpsd/source/browse/src/nmea/track.py</a></p> <pre><code>class Track(object): def __init__(self, recordDelay=10, maxSize=3600, ignoreDuplicates=True, duplicateRange=0.0001): """ Constructor The default values allow for 10 hours worth of data recorded at 10 second intervals. recordDelay - Delay between recording data points maxSize - Maximum number of points to record ignoreDuplicates - Ignore entries that are very similar (ie moved a minimal distance) duplicateRange - Varience range within a duplicate is detected (adjust to account for subtle gps position drift) """ self.recordDelay = recordDelay self.maxSize = maxSize self.ignoreDuplicates = ignoreDuplicates self.duplicateRange = duplicateRange self.positions = [] self.latest = None def append(self, position, heading, timeStamp=None): """ Append position and heading information """ if timeStamp is None: timeStamp = datetime.utcnow() self.latest = (timeStamp, position, heading) if len(self.positions): last = self.positions[0] else: last = None # Make sure we re in range if last is None or (timeStamp - last[0]).seconds &gt;= self.recordDelay: self.positions.insert(0, self.latest) self.latest = None # Clear extra data if len(self.positions) &gt; self.maxSize: pass def clear(self): """ Clear all items from track """ self.positions = [] self.latest = None def __len__(self): """ Return the length of the track """ if self.latest is None: return len(self.positions) return len(self.positions) + 1 def __getslice__(self, i, j): return self.positions[i:j] def __getitem__(self, i): return self.positions[i] def get_latest(self): if self.latest is None and len(self.positions) &gt; 0: return self.positions def get_by_time(self, timeRange, now=datetime.utcnow()): """ Returns the last n items within the time range """ result = [] if self.latest is not None: result.append(self.latest) for position in self.positions: if (now - position[0]).seconds &gt; timeRange: break result.append(position) return result </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload