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],
    )
Exemple #2
0
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
Exemple #5
0
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")