def test_car_route_extra_options(): """Test routing API for car route.""" place_options = PlaceOptions( course=ROUTE_COURSE.west, sideof_street_hint=[52.512149, 13.304076], match_sideof_street=ROUTE_MATCH_SIDEOF_STREET.always, radius=10, min_course_distance=10, ) via_waypoint_options = WayPointOptions(stop_duration=0, pass_through=True) dest_waypoint_options = WayPointOptions(stop_duration=10, pass_through=False) ls = LS(api_key=LS_API_KEY) _ = ls.car_route( origin=[52.51375, 13.42462], destination=[52.52332, 13.42800], via=[(52.52426, 13.43000), (52.123, 13.22), (52.343, 13.444)], origin_place_options=place_options, destination_place_options=place_options, via_place_options=place_options, via_waypoint_options=via_waypoint_options, destination_waypoint_options=dest_waypoint_options, return_results=[ROUTING_RETURN.polyline, ROUTING_RETURN.elevation], departure_time=datetime.now(), spans=[ROUTING_SPANS.names], )
def test_car_route(): """Test routing API for car route.""" ls = LS(api_key=LS_API_KEY) avoid_areas = [ AvoidBoundingBox(68.1766451354, 7.96553477623, 97.4025614766, 35.4940095078) ] avoid_features = [ROUTING_AVOID_FEATURES.tollRoad] result = ls.car_route( origin=[52.51375, 13.42462], destination=[52.52332, 13.42800], via=[(52.52426, 13.43000)], return_results=[ROUTING_RETURN.polyline, ROUTING_RETURN.elevation], departure_time=datetime.now(), spans=[ROUTING_SPANS.names], avoid_areas=avoid_areas, avoid_features=avoid_features, exclude=["IND", "NZL", "AUS"], ) assert result.response["routes"][0]["sections"][0]["departure"]["place"][ "location"] == { "lat": 52.5137479, "lng": 13.4246242, "elv": 76.0, } assert result.response["routes"][0]["sections"][1]["departure"]["place"][ "location"] == { "lat": 52.5242323, "lng": 13.4301462, "elv": 80.0, } assert type(result.to_geojson()) == FeatureCollection
def test_car_route_extra_options(): """Test routing API for car route.""" place_options = PlaceOptions( course=ROUTE_COURSE.west, sideof_street_hint=[52.512149, 13.304076], match_sideof_street=ROUTE_MATCH_SIDEOF_STREET.always, radius=10, min_course_distance=10, ) assert json.loads(place_options.__str__()) == { "course": 270, "sideOfStreetHint": "52.512149,13.304076", "matchSideOfStreet": "always", "namehint": None, "radius": 10, "minCourseDistance": 10, } via_waypoint_options = WayPointOptions(stop_duration=0, pass_through=True) assert json.loads(via_waypoint_options.__str__()) == {"stopDuration": 0, "passThrough": True} dest_waypoint_options = WayPointOptions(stop_duration=10, pass_through=False) ls = LS(api_key=LS_API_KEY) _ = ls.car_route( origin=[52.51375, 13.42462], destination=[52.52332, 13.42800], via=[(52.52426, 13.43000), (52.123, 13.22), (52.343, 13.444)], origin_place_options=place_options, destination_place_options=place_options, via_place_options=place_options, via_waypoint_options=via_waypoint_options, destination_waypoint_options=dest_waypoint_options, return_results=[ROUTING_RETURN.polyline, ROUTING_RETURN.elevation], departure_time=datetime.now(), spans=[ROUTING_SPANS.names], )
def test_car_route(): """Test routing API for car route.""" ls = LS(api_key=LS_API_KEY) result = ls.car_route( origin=[52.51375, 13.42462], destination=[52.52332, 13.42800], via=[(52.52426, 13.43000)], return_results=[ROUTING_RETURN.polyline, ROUTING_RETURN.elevation], departure_time=datetime.now(), spans=[ROUTING_SPANS.names], ) assert result.response["routes"][0]["sections"][0]["departure"]["place"][ "location"] == { "lat": 52.5137479, "lng": 13.4246242, "elv": 76.0, } assert result.response["routes"][0]["sections"][1]["departure"]["place"][ "location"] == { "lat": 52.5242323, "lng": 13.4301462, "elv": 80.0, } assert type(result.to_geojson()) == FeatureCollection
def route( ctx, transport_mode, origin, destination, via, routing_mode, alternatives, lang, apikey, raw, display, ): """ find route between two or more locations. """ apikey = apikey or os.environ.get("HERE_APIKEY") if apikey is None: raise ApiKeyNotFoundError( "Please pass HERE API KEY as --apikey or set it as environment " "variable in HERE_APIKEY " ) ctx.obj["apikey"] = apikey ls = LS(api_key=apikey) if transport_mode == "car": result = ls.car_route( origin=origin.split(","), destination=destination.split(","), via=via if via else None, routing_mode=routing_mode, alternatives=alternatives, lang=lang, return_results=[ ROUTING_RETURN.polyline, ROUTING_RETURN.elevation, ROUTING_RETURN.instructions, ROUTING_RETURN.actions, ], ) elif transport_mode == "truck": result = ls.truck_route( origin=origin.split(","), destination=destination.split(","), via=via if via else None, routing_mode=routing_mode, alternatives=alternatives, lang=lang, return_results=[ ROUTING_RETURN.polyline, ROUTING_RETURN.elevation, ROUTING_RETURN.instructions, ROUTING_RETURN.actions, ], ) elif transport_mode == "pedestrian": result = ls.pedestrian_route( origin=origin.split(","), destination=destination.split(","), via=via if via else None, routing_mode=routing_mode, alternatives=alternatives, lang=lang, return_results=[ ROUTING_RETURN.polyline, ROUTING_RETURN.elevation, ROUTING_RETURN.instructions, ROUTING_RETURN.actions, ], ) elif transport_mode == "bicycle": result = ls.bicycle_route( origin=origin.split(","), destination=destination.split(","), via=via if via else None, routing_mode=routing_mode, alternatives=alternatives, lang=lang, return_results=[ ROUTING_RETURN.polyline, ROUTING_RETURN.elevation, ROUTING_RETURN.instructions, ROUTING_RETURN.actions, ], ) elif transport_mode == "scooter": result = ls.scooter_route( origin=origin.split(","), destination=destination.split(","), via=via if via else None, routing_mode=routing_mode, alternatives=alternatives, lang=lang, return_results=[ ROUTING_RETURN.polyline, ROUTING_RETURN.elevation, ROUTING_RETURN.instructions, ROUTING_RETURN.actions, ], ) if raw: click.secho(json.dumps(result.response, indent=2), fg="green") elif display: geo_display(json.dumps(result.to_geojson(), indent=2)) else: click.secho(json.dumps(result.routes, indent=2), fg="green")