Added filters --filter-sog-le --filter-farfrom --filter-closeto
authorJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Thu, 20 Jan 2011 15:33:27 +0000 (15:33 +0000)
committerJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Thu, 20 Jan 2011 15:33:27 +0000 (15:33 +0000)
bin/show_targets_ships.py

index da1ba6f92f7324d51d9cbb32c2147444c7f151f3..7336ad98dff80cf87c85312bff7b467c4f5e8182 100755 (executable)
@@ -497,6 +497,15 @@ def main():
     parser.add_option('--filter-area',
         action='store', type='str', dest='area_file', metavar="FILE.KML",
         help="only process a specific area as defined in a kml polygon file.")
+    parser.add_option('--filter-farfrom',
+        action='store', dest='far_from', nargs=3, metavar='LAT LONG MILES',
+        help="only show ships farther than MILES miles from LAT,LONG")
+    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('--format',
@@ -641,6 +650,29 @@ def main():
         area = load_area_from_kml_polygon(options.area_file)
         filters.append(lambda nmea: filter_area(nmea, area))
 
+    if options.close_to:
+        try:
+            lat = clean_latitude(unicode(options.close_to[0], 'utf-8'))
+            lon = clean_longitude(unicode(options.close_to[1], 'utf-8'))
+        except LatLonFormatError as err:
+            print >> sys.stderr, err.args
+            sys.exit(1)
+        miles = float(options.close_to[2])
+        filters.append(lambda nmea: filter_close_to(nmea, lat, lon, miles))
+
+    if options.far_from:
+        try:
+            lat = clean_latitude(unicode(options.far_from[0], 'utf-8'))
+            lon = clean_longitude(unicode(options.far_from[1], 'utf-8'))
+        except LatLonFormatError as err:
+            print >> sys.stderr, err.args
+            sys.exit(1)
+        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):
             #print nmea.type, repr(options.type_list), nmea.type in options.type_list