def test_missing_tracks(self): ofp = OFP('blabla blabla') self.assertEqual(list(ofp.tracks()), []) with self.assertRaises(LookupError): ofp.tracks_iterator()
def lido2mapsme(action_in, params, use_segments=False, kmlargs=None, debug=False, fishfile=None): """ Lido2Mapsme KML rendering action :param fishfile: absolute path to a fishfile or None :param action_in: unicode action input :param params: dict action's parameters :param use_segments: plot route as LineString segments instead of a single LineString (Avenza fix) :param kmlargs: optional dictionnary for KML Generator :param debug: bool determines wether or not to print ogimet debug messages :return: """ from editolido.constants import NAT_POSITION_ENTRY, PIN_NONE from editolido.fishpoint import find_fishfile from editolido.geopoint import GeoPoint from editolido.kml import KMLGenerator from editolido.ofp import OFP from editolido.route import Route ofp = OFP(action_in) if kmlargs: kml = KMLGenerator(**kmlargs) else: kml = KMLGenerator() pin_rnat = params.get('Repère NAT', PIN_NONE) pin_rmain = params.get('Point Route', PIN_NONE) pin_ralt = params.get('Point Dégagement', PIN_NONE) kml.add_folders('greatcircle', ('rnat', pin_rnat), ('rnat_incomplete', pin_rnat), ('ralt', pin_ralt), ('rmain', pin_rmain)) route_name = "{departure}-{destination}".format(**ofp.infos) route = ofp.route route.name = route_name route.description = ofp.description # set route/line plot method add_kml_route = kml.add_segments if use_segments else kml.add_line natmarks = [] if params.get('Afficher NAT', False): pin_pos = 0 if params['Position repère'] == NAT_POSITION_ENTRY else -1 fishfile = fishfile if fishfile else find_fishfile() if debug: print("using fish points file %s\n" % fishfile) for track in ofp.tracks(fishfile=fishfile): if track: folder = 'rnat_incomplete' if not track.is_complete else 'rnat' add_kml_route(folder, track) if pin_rnat != PIN_NONE: if track.is_mine: p = GeoPoint(track[0], name=track.name, description=track.description) natmarks.append(p) kml.add_point(folder, p, style=pin_rnat) p = GeoPoint(track[-1], name=track.name, description=track.description) natmarks.append(p) kml.add_point(folder, p, style=pin_rnat) else: p = GeoPoint(track[pin_pos], name=track.name, description=track.description) natmarks.append(p) kml.add_point(folder, p, style=pin_rnat) else: print("empty track found %s" % track.name) if params.get('Afficher Ortho', False): greatcircle = Route( (route[0], route[-1])).split(300, name="Ortho %s" % route_name) add_kml_route('greatcircle', greatcircle) add_kml_route('rmain', route) if pin_rmain != PIN_NONE: kml.add_points('rmain', route, excluded=natmarks, style=pin_rmain) if params.get('Afficher Dégagement', False): alt_route = Route(ofp.wpt_coordinates_alternate(), name="Route Dégagement") add_kml_route('ralt', alt_route) if pin_ralt != PIN_NONE: kml.add_points('ralt', alt_route[1:], style=pin_ralt) kml = kml.render( name=ofp.description, rnat_color=params.get('Couleur NAT', '') or '60DA25A8', ogimet_color=params.get('Couleur Ogimet', '') or '40FF0000', greatcircle_color=params.get('Couleur Ortho', '') or '5F1478FF', rmain_color=params.get('Couleur Route', '') or 'FFDA25A8', ralt_color=params.get('Couleur Dégagement', '') or 'FFFF00FF', rnat_incomplete_color=params.get('Couleur NAT incomplet', '') or 'FF0000FF', ) try: # noinspection PyUnresolvedReferences import clipboard # EDITORIAL Module json_results = { 'type': '__editolido__.extended_clipboard', 'lido_route': ' '.join(ofp.lido_route), 'kml': kml, } clipboard.set(json.dumps(json_results)) except ImportError: pass return kml