Added common filter sog less or equal to
authorJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Thu, 20 Jan 2011 15:08:21 +0000 (15:08 +0000)
committerJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Thu, 20 Jan 2011 15:08:21 +0000 (15:08 +0000)
bin/common.py

index 2835bcdc7953a0664b9f3c29fd2b3378a1c13a50..5d4a98e370f2bae6e7309875286711125cae63f1 100755 (executable)
@@ -45,6 +45,9 @@ __all__ = [
     'load_fleet_to_uset',
     'fleetname_to_fleetid',
     'filter_area',
+    'filter_close_to',
+    'filter_far_from',
+    'filter_sog_le',
     'filter_knownposition',
     'filter_speedcheck',
     ]
@@ -1770,6 +1773,13 @@ def filter_far_from(nmea, lat, lon, miles=1.0):
     return dist3_xyz(latlon_to_xyz_deg(lat, lon), latlon_to_xyz_ais(nmea.latitude, nmea.longitude)) >= miles
 
 
+def filter_sog_le(nmea, max_knts):
+    '''
+    Returns true if speed over ground is less than max_knts
+    '''
+    return nmea.sog/AIS_SOG_SCALE <= max_knts
+
+
 def filter_knownposition(nmea):
     """
     Returns false if position is not fully known
@@ -1877,6 +1887,9 @@ def main():
     parser.add_option('--filter-closeto',
         action='store', dest='close_to', nargs=3, metavar='LAT LONG MILES',
         help="only show ships closer than MILES miles from LAT,LONG")
+    parser.add_option('--filter-sog-le',
+        action='store', dest='sog_le', metavar='KNOTS',
+        help='only show ships when speed over ground is less or equal to KNOTS.')
 
     parser.add_option('--filter-destination',
         action='store', type='str', dest='filter_destination', metavar="DESTINATION",
@@ -2031,6 +2044,9 @@ def main():
         miles = float(options.far_from[2])
         filters.append(lambda nmea: filter_far_from(nmea, lat, lon, miles))
     
+    if options.sog_le:
+        filters.append(lambda nmea: filter_sog_le(nmea, float(options.sog_le)))
+
     if options.type_list:
         def filter_type(nmea):
             return nmea.type in options.type_list