ad_map_access
Classes | Typedefs | Enumerations | Functions
ad::map::lane Namespace Reference

namespace lane More...

Classes

struct  ContactLane
 DataType ContactLane. More...
 
struct  ECEFBorder
 DataType ECEFBorder. More...
 
struct  ENUBorder
 DataType ENUBorder. More...
 
struct  GeoBorder
 DataType GeoBorder. More...
 
struct  Lane
 DataType Lane. More...
 
struct  LaneAltitudeRange
 Struct to hold the altitude range of a lane. More...
 
class  LaneId
 DataType LaneId. More...
 

Typedefs

typedef uint64_t ComplianceVersion
 DataType ComplianceVersion. More...
 
typedef std::vector<::ad::map::lane::ContactLaneContactLaneList
 DataType ContactLaneList.
 
typedef std::vector<::ad::map::lane::ContactLocationContactLocationList
 DataType ContactLocationList. More...
 
typedef std::vector<::ad::map::lane::ContactTypeContactTypeList
 DataType ContactTypeList. More...
 
typedef std::vector<::ad::map::lane::ECEFBorderECEFBorderList
 DataType ECEFBorderList. More...
 
typedef std::vector<::ad::map::lane::ENUBorderENUBorderList
 DataType ENUBorderList. More...
 
typedef std::vector<::ad::map::lane::GeoBorderGeoBorderList
 DataType GeoBorderList. More...
 
typedef std::vector<::ad::map::lane::LaneIdLaneIdList
 DataType LaneIdList. More...
 
typedef std::set< LaneIdLaneIdSet
 

Enumerations

enum  ContactLocation : int32_t {
  ContactLocation::INVALID = 0, ContactLocation::UNKNOWN = 1, ContactLocation::LEFT = 2, ContactLocation::RIGHT = 3,
  ContactLocation::SUCCESSOR = 4, ContactLocation::PREDECESSOR = 5, ContactLocation::OVERLAP = 6
}
 DataType ContactLocation. More...
 
enum  ContactType : int32_t {
  ContactType::INVALID = 0, ContactType::UNKNOWN = 1, ContactType::FREE = 2, ContactType::LANE_CHANGE = 3,
  ContactType::LANE_CONTINUATION = 4, ContactType::LANE_END = 5, ContactType::SINGLE_POINT = 6, ContactType::STOP = 7,
  ContactType::STOP_ALL = 8, ContactType::YIELD = 9, ContactType::GATE_BARRIER = 10, ContactType::GATE_TOLBOOTH = 11,
  ContactType::GATE_SPIKES = 12, ContactType::GATE_SPIKES_CONTRA = 13, ContactType::CURB_UP = 14, ContactType::CURB_DOWN = 15,
  ContactType::SPEED_BUMP = 16, ContactType::TRAFFIC_LIGHT = 17, ContactType::CROSSWALK = 18, ContactType::PRIO_TO_RIGHT = 19,
  ContactType::RIGHT_OF_WAY = 20, ContactType::PRIO_TO_RIGHT_AND_STRAIGHT = 21
}
 DataType ContactType. More...
 
enum  LaneDirection : int32_t {
  LaneDirection::INVALID = 0, LaneDirection::UNKNOWN = 1, LaneDirection::POSITIVE = 2, LaneDirection::NEGATIVE = 3,
  LaneDirection::REVERSABLE = 4, LaneDirection::BIDIRECTIONAL = 5, LaneDirection::NONE = 6
}
 DataType LaneDirection. More...
 
enum  LaneType : int32_t {
  LaneType::INVALID = 0, LaneType::UNKNOWN = 1, LaneType::NORMAL = 2, LaneType::INTERSECTION = 3,
  LaneType::SHOULDER = 4, LaneType::EMERGENCY = 5, LaneType::MULTI = 6, LaneType::PEDESTRIAN = 7,
  LaneType::OVERTAKING = 8, LaneType::TURN = 9, LaneType::BIKE = 10
}
 DataType LaneType. More...
 

Functions

std::ostream & operator<< (std::ostream &os, ContactLane const &_value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, ContactLocation const &value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, ContactType const &value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, ECEFBorder const &_value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, ENUBorder const &_value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, GeoBorder const &_value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, Lane const &_value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, LaneDirection const &value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, LaneId const &_value)
 standard ostream operator More...
 
std::ostream & operator<< (std::ostream &os, LaneType const &value)
 standard ostream operator More...
 
point::ENUEdge getLateralAlignmentEdge (ENUBorder const &border, physics::ParametricValue const lateralAlignment)
 Get the ENUEdge between the given border with corresponding lateralAlignment. More...
 
physics::Distance getDistanceEnuPointToLateralAlignmentEdge (point::ENUPoint const &enuPoint, point::ENUEdge const &lateralAlignmentEdge)
 Get the distance between an ENU point and the lateral alignment edge. More...
 
void normalizeBorder (ENUBorder &border, ENUBorder const *previousBorder=nullptr)
 normalizes the border More...
 
void makeTransitionToSecondEdgeContinuous (point::ENUEdge const &first, point::ENUEdge &second)
 operation to make the transition between two edges continuous More...
 
void makeTransitionToSecondBorderContinuous (ENUBorder const &first, ENUBorder &second)
 operation to make the transition between two borders continuous More...
 
void makeTransitionFromFirstEdgeContinuous (point::ENUEdge &first, point::ENUEdge const &second)
 operation to make the transition between two edges continuous More...
 
void makeTransitionFromFirstBorderContinuous (ENUBorder &first, ENUBorder const &second)
 operation to make the transition between two borders continuous More...
 
physics::Distance calcLength (ENUBorder const &border)
 calculate the length of the provided border as distance value More...
 
physics::Distance calcLength (ECEFBorder const &border)
 calculate the length of the provided border as distance value More...
 
physics::Distance calcLength (GeoBorder const &border)
 calculate the length of the provided border as distance value More...
 
physics::Distance calcLength (ENUBorderList const &borderList)
 calculate the length out of the provided ENU border List as distance value More...
 
point::ENUHeading getENUHeading (ENUBorderList const &borderList, point::ENUPoint const &enuPoint)
 calculate the ENUHeading of the vector<ENUBorder> at the given ENUPoint More...
 
ContactLocation oppositeLocation (ContactLocation const &e)
 Provides opposite Location. More...
 
bool isAccessOk (ContactLane const &contactLane, restriction::VehicleDescriptor const &vehicle)
 Checks if vehicle fits the restriction criteria of the contact lane. More...
 
bool isValid (ContactLane const &contactLane, bool const logErrors=true)
 checks if the given ContactLane is valid More...
 
bool isValid (LaneId const &laneId, bool const logErrors=true)
 checks if the given LaneId is valid More...
 
bool isValid (Lane const &lane, bool const logErrors=true)
 checks if the given Lane is valid More...
 
Lane::ConstPtr getLanePtr (LaneId const &id)
 Method to be called to retrieve Lane from the Store. More...
 
const LanegetLane (lane::LaneId const &id)
 Method to be called to retrieve Lane from the Store. More...
 
LaneIdList getLanes ()
 Method to be called to retrieve identifiers of all Lanes in the Store. More...
 
point::ECEFHeading getLaneECEFHeading (match::MapMatchedPosition const &mapMatchedPosition)
 
point::ECEFHeading getLaneECEFHeading (point::ParaPoint const &paraPoint)
 
point::ENUHeading getLaneENUHeading (match::MapMatchedPosition const &mapMatchedPosition)
 
point::ENUHeading getLaneENUHeading (point::ParaPoint const &paraPoint, point::GeoPoint const &gnssReference)
 
LaneId uniqueLaneId (point::GeoPoint const &point)
 
point::ParaPoint uniqueParaPoint (point::GeoPoint const &point)
 
bool isAccessOk (Lane const &lane, restriction::VehicleDescriptor const &vehicle)
 Checks if vehicle fits the lanes restriction criteria. More...
 
bool isNear (Lane const &lane, point::BoundingSphere const &boundingSphere)
 Checks if given sphere intersects with lane bounding ball. More...
 
physics::Distance getWidth (Lane const &lane, physics::ParametricValue const &longitudinalOffset)
 
physics::Speed getMaxSpeed (Lane const &lane, physics::ParametricRange const &range)
 
restriction::SpeedLimitList getSpeedLimits (Lane const &lane, physics::ParametricRange const &range)
 
physics::Duration getDuration (Lane const &lane, physics::ParametricRange const &range)
 
restriction::PassengerCount getHOV (Lane const &lane)
 
ContactLaneList getContactLanes (Lane const &lane, ContactLocation const &location)
 Find contact lanes at specific relative location. More...
 
ContactLaneList getContactLanes (Lane const &lane, ContactLocationList const &locations)
 Find contact lanes at specific relative locations. More...
 
ContactLocation getContactLocation (Lane const &lane, LaneId const &to_lane_id)
 Check nature of contact between this lane and another lane. More...
 
bool isLaneDirectionPositive (Lane const &lane)
 
bool isLaneDirectionNegative (Lane const &lane)
 
bool isRouteable (Lane const &lane)
 
bool isLanePartOfAnIntersection (Lane const &lane)
 
bool isLeftMost (Lane const &lane)
 
bool isRightMost (Lane const &lane)
 
point::ECEFPoint getParametricPoint (Lane const &lane, physics::ParametricValue const &longitudinalOffset, physics::ParametricValue const &lateralOffset)
 Calculates parametric point on the lane. Point is calculated by first calculating t_long parametric point on the left and on the right boundary, and then parametric point t_lat between those two points. More...
 
bool projectParametricPointToEdges (Lane const &lane, point::ECEFPoint const &referencePoint, point::ECEFPoint &point_on_left_edge, point::ECEFPoint &point_on_right_edge)
 Calculates the projection on left and right boundary of the given referencePoint. More...
 
bool projectParametricPointToEdges (Lane const &lane, physics::ParametricValue const &longitudinalOffset, point::ECEFPoint &point_on_left_edge, point::ECEFPoint &point_on_right_edge)
 Calculates the projection on left and right boundary of the parametric point on the center of the lane. More...
 
point::ECEFPoint getProjectedParametricPoint (Lane const &lane, physics::ParametricValue const &longitudinalOffset, physics::ParametricValue const &lateralOffset)
 Calculates projected parametric point on the lane. Point is calculated by first calculating the projected points on left and right boundary using ProjectParametricPointToEdges(), and then parametric point t_lat between those two points. More...
 
point::ECEFPoint getStartPoint (Lane const &lane)
 
point::ECEFPoint getEndPoint (Lane const &lane)
 
bool isPyhsicalSuccessor (Lane const &lane, Lane const &other)
 Checks if Lane is longitudinally connected with another Lane at the end. More...
 
bool isPhysicalPredecessor (Lane const &lane, Lane const &other)
 Checks if Lane is longitudinally connected with another Lane at the start. More...
 
bool isVanishingLaneStart (Lane const &lane)
 
bool isVanishingLaneEnd (Lane const &lane)
 
bool satisfiesFilter (Lane const &lane, std::string const &typeFilter, bool isHov)
 Checks if Lane satisfies filter condition. More...
 
ContactLocation getDirectNeighborhoodRelation (LaneId const laneId, LaneId const checkLaneId)
 get the neighborhood relation to the other lane More...
 
bool isSuccessorOrPredecessor (LaneId const laneId, LaneId const checkLaneId)
 Check if a lane is successor or predecessor of a lane. More...
 
bool isSameOrDirectNeighbor (LaneId const id, LaneId const neighbor)
 Check if two lanes are direct neighbors of even the same. More...
 
bool isLaneDirectionPositive (LaneId const &laneId)
 Check if the lane direction is positive. More...
 
bool isLaneDirectionNegative (LaneId const &laneId)
 Check if the lane direction is negative. More...
 
physics::Distance getDistanceToLane (LaneId laneId, match::Object const &object)
 Get the distance of an object to the lane boundaries. More...
 
point::ENUHeading getLaneENUHeading (point::ParaPoint const &position)
 
bool isHeadingInLaneDirection (point::ParaPoint const &position, point::ENUHeading const &heading)
 Check if the provided heading is along the lane direction. More...
 
bool projectPositionToLaneInHeadingDirection (point::ParaPoint const &position, point::ENUHeading const &heading, point::ParaPoint &projectedPosition)
 project a position to a neighboring lane (incl. the lane itself), which has the provided heading More...
 
bool findNearestPointOnLane (Lane const &lane, point::ECEFPoint const &pt, match::MapMatchedPosition &mmpos)
 Finds point on the lane nearest to the given point. More...
 
bool findNearestPointOnLaneInterval (route::LaneInterval const &laneInterval, point::ECEFPoint const &pt, match::MapMatchedPosition &mmpos)
 Finds point on the lane interval nearest to the given point. More...
 
point::ENUPoint getENULanePoint (point::ParaPoint const parametricPoint, physics::ParametricValue const &lateralOffset=physics::ParametricValue(0.5))
 get the ENU point of a lane More...
 
physics::Distance calcLength (LaneId const &laneId)
 calculate length of a lane with a given id
 
physics::Distance calcLength (match::LaneOccupiedRegion const &laneOccupiedRegion)
 calculate length of a lane occupied region
 
physics::Distance calcWidth (point::ParaPoint const &paraPoint)
 calculate the width of the lane at the provided lanePoint
 
physics::Distance calcWidth (LaneId const &laneId, physics::ParametricValue const &longOffset)
 calculate the width of the provided lane at the provided longitudinal position
 
physics::Distance calcWidth (point::ENUPoint const &enuPoint)
 calculate the width of a lane at the provided ENU position More...
 
physics::Distance calcWidth (match::LaneOccupiedRegion const &laneOccupiedRegion)
 calculate width of a lane occupied region scales the with at the center of the occupied region by the lateral extend of the region
 
LaneAltitudeRange calcLaneAltitudeRange (Lane const &lane)
 Calculates the altitude range of a lane. More...
 
bool isLaneRelevantForExpansion (lane::LaneId const &laneId, lane::LaneIdSet const &relevantLanes)
 Checks if the laneId is relevant for expansion given the set of relevant lanes. More...
 

Detailed Description

namespace lane

Handling of lanes

Typedef Documentation

◆ ComplianceVersion

DataType ComplianceVersion.

Compliance version

◆ ContactLocationList

DataType ContactLocationList.

List of contact locations

◆ ContactTypeList

DataType ContactTypeList.

List of Contact Types

◆ ECEFBorderList

DataType ECEFBorderList.

List of ECEFBorder elements

◆ ENUBorderList

DataType ENUBorderList.

List of ENUBorder elements

◆ GeoBorderList

DataType GeoBorderList.

List of GeoBorder elements

◆ LaneIdList

DataType LaneIdList.

List of lane identifiers

Enumeration Type Documentation

◆ ContactLocation

enum ad::map::lane::ContactLocation : int32_t
strong

DataType ContactLocation.

Specification of the location of the contact of an object.

Enumerator
INVALID 

Invalid value.

UNKNOWN 

Unknown value.

LEFT 

Another object is on Left from this object.

RIGHT 

Another object is on Right from this object.

SUCCESSOR 

Another object is an Successor of this object.

PREDECESSOR 

Another object is an Predecessor of this object.

OVERLAP 

Another object Overlaps this object.

◆ ContactType

enum ad::map::lane::ContactType : int32_t
strong

DataType ContactType.

Type of the contact between two objects.

Enumerator
INVALID 

Invalid value.

UNKNOWN 

Unknown value.

FREE 

There is no physical or legal obstacles between two objects.

LANE_CHANGE 

Transition between one lane to direct lateral neighboor.

LANE_CONTINUATION 

Transition between one lane to longitudinal direct neighboor.

LANE_END 

End of the Lane - line.

SINGLE_POINT 

End of the Lane - point.

STOP 

STOP regulation at the end of the lane.

STOP_ALL 

STOP 3-way, 4-way etc regulation at the end of the lane.

YIELD 

YIELD regulation at the end of the lane.

GATE_BARRIER 

Gate with barrier at the end of the lane.

GATE_TOLBOOTH 

Tolbooth barrier at the end of the lane.

GATE_SPIKES 

Spikes (in direction) at the end of the lane.

GATE_SPIKES_CONTRA 

Spikes (in opposite direction) at the end of the lane.

CURB_UP 

Curb up at the object side.

CURB_DOWN 

Curb down at the object.

SPEED_BUMP 

Speed bump at the end of the lane.

TRAFFIC_LIGHT 

Traffic light at the end of the lane.

CROSSWALK 

Crosswalk at the end of the lane.

PRIO_TO_RIGHT 

Priority to the right regulation at the end of the lane.

RIGHT_OF_WAY 

Right of way regulation at the end of the lane.

PRIO_TO_RIGHT_AND_STRAIGHT 

Priority to right and to straight regulation at the end of the lane (Singapore).

◆ LaneDirection

enum ad::map::lane::LaneDirection : int32_t
strong

DataType LaneDirection.

Direction of a lane

Enumerator
INVALID 

INVALID

UNKNOWN 

UNKNOWN

POSITIVE 

POSITIVE

NEGATIVE 

NEGATIVE

REVERSABLE 

REVERSABLE

BIDIRECTIONAL 

BIDIRECTIONAL

NONE 

NONE

◆ LaneType

enum ad::map::lane::LaneType : int32_t
strong

DataType LaneType.

Type of lane

Enumerator
INVALID 

INVALID

UNKNOWN 

UNKNOWN

NORMAL 

NORMAL

INTERSECTION 

INTERSECTION

SHOULDER 

SHOULDER

EMERGENCY 

EMERGENCY

MULTI 

MULTI

PEDESTRIAN 

PEDESTRIAN

OVERTAKING 

OVERTAKING

TURN 

TURN

BIKE 

BIKE

Function Documentation

◆ calcLaneAltitudeRange()

LaneAltitudeRange ad::map::lane::calcLaneAltitudeRange ( Lane const &  lane)

Calculates the altitude range of a lane.

Returns
The range of the lanes altitude

◆ calcLength() [1/4]

physics::Distance ad::map::lane::calcLength ( ECEFBorder const &  border)
inline

calculate the length of the provided border as distance value

For length calculation the average between left and right edge of the border is returned. Length calculation is performed within Cartesian ECEF coordinate frame.

◆ calcLength() [2/4]

physics::Distance ad::map::lane::calcLength ( ENUBorder const &  border)
inline

calculate the length of the provided border as distance value

For length calculation the average between left and right edge of the border is returned. Length calculation is performed within Cartesian ENU coordinate frame.

◆ calcLength() [3/4]

physics::Distance ad::map::lane::calcLength ( ENUBorderList const &  borderList)

calculate the length out of the provided ENU border List as distance value

calculate the length out of the provided GEO border List as distance value

calculate the length out of the provided ECEF border List as distance value

For length calculation the average between left and right edge of the border is returned. Length calculation is performed within Cartesian ENU coordinate frame.

For length calculation the average between left and right edge of the border is returned. Length calculation is performed within Cartesian ECEF coordinate frame.

For length calculation the average between left and right edge of the border is returned. Length calculation is performed within GEO coordinate frame.

◆ calcLength() [4/4]

physics::Distance ad::map::lane::calcLength ( GeoBorder const &  border)
inline

calculate the length of the provided border as distance value

For length calculation the average between left and right edge of the border is returned. Length calculation is performed within Cartesian ECEF coordinate frame.

◆ calcWidth()

physics::Distance ad::map::lane::calcWidth ( point::ENUPoint const &  enuPoint)

calculate the width of a lane at the provided ENU position

Returns
-1 in case the enuPoint could not be found on a lane

◆ findNearestPointOnLane()

bool ad::map::lane::findNearestPointOnLane ( Lane const &  lane,
point::ECEFPoint const &  pt,
match::MapMatchedPosition mmpos 
)

Finds point on the lane nearest to the given point.

Parameters
[in]lanethe lane.
[in]ptGiven point.
[out]mmposResulting map-matched position. The resulting probability of the map matched position is derived from lateralT value: spans between [0.5; 1.0] for LANE_IN matches spans between [0.1; 0.5] for LANE_RIGHT/LANE_LEFT matches
Returns
true if successful.

◆ findNearestPointOnLaneInterval()

bool ad::map::lane::findNearestPointOnLaneInterval ( route::LaneInterval const &  laneInterval,
point::ECEFPoint const &  pt,
match::MapMatchedPosition mmpos 
)

Finds point on the lane interval nearest to the given point.

Parameters
[in]laneIntervalthe interval of the lane to be considered.
[in]ptGiven point.
[out]mmposResulting map-matched position. The resulting probability of the map matched position is derived from lateralT value: spans between [0.5; 1.0] for LANE_IN matches spans between [0.1; 0.5] for LANE_RIGHT/LANE_LEFT matches
Returns
true if successful.

◆ getContactLanes() [1/2]

ContactLaneList ad::map::lane::getContactLanes ( Lane const &  lane,
ContactLocation const &  location 
)

Find contact lanes at specific relative location.

Parameters
[in]lanethe lane.
[in]locationLocation of interest.
Returns
Contacts to lane at specified location.

◆ getContactLanes() [2/2]

ContactLaneList ad::map::lane::getContactLanes ( Lane const &  lane,
ContactLocationList const &  locations 
)

Find contact lanes at specific relative locations.

Parameters
[in]locationsLocations of interest.
Returns
Contacts to lanes at specified locations.

◆ getContactLocation()

ContactLocation ad::map::lane::getContactLocation ( Lane const &  lane,
LaneId const &  to_lane_id 
)

Check nature of contact between this lane and another lane.

Parameters
[in]to_lane_idAnother lane identifier.
Returns
Type of the contact. Can be INVALID if there is no contact between lanes.

◆ getDirectNeighborhoodRelation()

ContactLocation ad::map::lane::getDirectNeighborhoodRelation ( LaneId const  laneId,
LaneId const  checkLaneId 
)

get the neighborhood relation to the other lane

Parameters
[in]laneIdthe main lane
[in]checkLaneIdthe lane to be checked on the
Return values
lane::ContactLocation::OVERLAPif it's the same lane
lane::ContactLocation::LEFTif it's a left neighbor
lane::ContactLocation::RIGHTif it's a right neighbor
lane::ContactLocation::SUCCESSORif it a successor lane
lane::ContactLocation::PREDECESSORif it's a predecessor lane
lane::ContactLocation::INVALIDif it's nothing of the above

◆ getDistanceEnuPointToLateralAlignmentEdge()

physics::Distance ad::map::lane::getDistanceEnuPointToLateralAlignmentEdge ( point::ENUPoint const &  enuPoint,
point::ENUEdge const &  lateralAlignmentEdge 
)

Get the distance between an ENU point and the lateral alignment edge.

Parameters
[in]enuPointis the point for which the distance should be calculated
[in]lateralAlignmentEdgethe lateral alignment in ENU form
Returns
calculated Distance

◆ getDistanceToLane()

physics::Distance ad::map::lane::getDistanceToLane ( LaneId  laneId,
match::Object const &  object 
)

Get the distance of an object to the lane boundaries.

If the object provides a map matched bounding box, this information is used first (speed-up and more accurate). If the object's map matched bounding box is not touching the laneId at all, the object's center distance to the lane is calculated and reduced by max(width, length)/2 to obtain a good estimate for the shortest distance to the lane.

◆ getDuration()

physics::Duration ad::map::lane::getDuration ( Lane const &  lane,
physics::ParametricRange const &  range 
)
Returns
minimum duration to drive the provided parametric range along the lane based on the speed limits of the lane.

◆ getEndPoint()

point::ECEFPoint ad::map::lane::getEndPoint ( Lane const &  lane)
inline
Returns
Middle of the lane at the end.

◆ getENUHeading()

point::ENUHeading ad::map::lane::getENUHeading ( ENUBorderList const &  borderList,
point::ENUPoint const &  enuPoint 
)

calculate the ENUHeading of the vector<ENUBorder> at the given ENUPoint

If the given ENUPoint is not within the given borders, an ENUHeading(2*M_PI) is returned.

◆ getENULanePoint()

point::ENUPoint ad::map::lane::getENULanePoint ( point::ParaPoint const  parametricPoint,
physics::ParametricValue const &  lateralOffset = physics::ParametricValue(0.5) 
)

get the ENU point of a lane

◆ getHOV()

restriction::PassengerCount ad::map::lane::getHOV ( Lane const &  lane)
inline
Returns
Maximum of HOV restriction for the lane

◆ getLane()

const Lane& ad::map::lane::getLane ( lane::LaneId const &  id)

Method to be called to retrieve Lane from the Store.

Parameters
[in]idLane identifier.
Returns
Lane with given identifier. Throws std::invalid_argument if id is not valid or if lane does not exist in the store.

◆ getLaneECEFHeading() [1/2]

point::ECEFHeading ad::map::lane::getLaneECEFHeading ( match::MapMatchedPosition const &  mapMatchedPosition)
Returns
lane heading at a mapMatchedPosition

◆ getLaneECEFHeading() [2/2]

point::ECEFHeading ad::map::lane::getLaneECEFHeading ( point::ParaPoint const &  paraPoint)
Returns
lane heading at a paraPoint

◆ getLaneENUHeading() [1/3]

point::ENUHeading ad::map::lane::getLaneENUHeading ( match::MapMatchedPosition const &  mapMatchedPosition)
Returns
lane heading at a mapMatchedPosition

◆ getLaneENUHeading() [2/3]

point::ENUHeading ad::map::lane::getLaneENUHeading ( point::ParaPoint const &  paraPoint,
point::GeoPoint const &  gnssReference 
)
Returns
lane heading at a paraPoint with given gnssReference

◆ getLaneENUHeading() [3/3]

point::ENUHeading ad::map::lane::getLaneENUHeading ( point::ParaPoint const &  position)
Returns
the ENU heading of the lane at the given position

◆ getLanePtr()

Lane::ConstPtr ad::map::lane::getLanePtr ( LaneId const &  id)

Method to be called to retrieve Lane from the Store.

Parameters
[in]idLane identifier.
Returns
Lane with given identifier. Throws std::invalid_argument if id is not valid or if lane does not exist in the store.

◆ getLanes()

LaneIdList ad::map::lane::getLanes ( )

Method to be called to retrieve identifiers of all Lanes in the Store.

Returns
Identifiers of all lanes in the store.

◆ getLateralAlignmentEdge()

point::ENUEdge ad::map::lane::getLateralAlignmentEdge ( ENUBorder const &  border,
physics::ParametricValue const  lateralAlignment 
)

Get the ENUEdge between the given border with corresponding lateralAlignment.

Parameters
[in]borderthe ENU border, the edge is calculated from
[in]lateralAlignmentthe lateral alignment as TParam [0.;1.] used to calculate the resulting edge. The lateral alignment is relative to the left edge. If lateralAlignment is 1., the left edge is returned, if lateralAlignment is 0., the right edge is returned
Exceptions
std::invalid_argumentif the lateralAlignment parameter is smaller than 0. or larger than 1.

◆ getMaxSpeed()

physics::Speed ad::map::lane::getMaxSpeed ( Lane const &  lane,
physics::ParametricRange const &  range 
)
Returns
Speed limits on the provided parametric range along the lane.

◆ getParametricPoint()

point::ECEFPoint ad::map::lane::getParametricPoint ( Lane const &  lane,
physics::ParametricValue const &  longitudinalOffset,
physics::ParametricValue const &  lateralOffset 
)

Calculates parametric point on the lane. Point is calculated by first calculating t_long parametric point on the left and on the right boundary, and then parametric point t_lat between those two points.

Parameters
[in]t_longLongitudinal parameter.
[in]t_latLateral parameter relative to the left edge.
Returns
Parametric point on the lane. Can be invalid.

◆ getProjectedParametricPoint()

point::ECEFPoint ad::map::lane::getProjectedParametricPoint ( Lane const &  lane,
physics::ParametricValue const &  longitudinalOffset,
physics::ParametricValue const &  lateralOffset 
)

Calculates projected parametric point on the lane. Point is calculated by first calculating the projected points on left and right boundary using ProjectParametricPointToEdges(), and then parametric point t_lat between those two points.

Parameters
[in]longitudinalOffsetLongitudinal parameter.
[in]lateralOffsetLateral parameter relative to the left edge.
Returns
Parametric point on the lane. Can be invalid.

◆ getSpeedLimits()

restriction::SpeedLimitList ad::map::lane::getSpeedLimits ( Lane const &  lane,
physics::ParametricRange const &  range 
)
Returns
Speed limits on the provided parametric range along the lane.

◆ getStartPoint()

point::ECEFPoint ad::map::lane::getStartPoint ( Lane const &  lane)
inline
Returns
Middle of the lane at the start.

◆ getWidth()

physics::Distance ad::map::lane::getWidth ( Lane const &  lane,
physics::ParametricValue const &  longitudinalOffset 
)
Parameters
[in]lanethe lane.
[in]longitudinalOffsetthe longitudinal parametric offset
Returns
Width of the lane at the given longitudinal parametric offset longitudinalOffset

◆ isAccessOk() [1/2]

bool ad::map::lane::isAccessOk ( ContactLane const &  contactLane,
restriction::VehicleDescriptor const &  vehicle 
)
inline

Checks if vehicle fits the restriction criteria of the contact lane.

Parameters
[in]contactLanecontact lane.
[in]vehicleDescription of the vehicle.
Returns
true of vehicle fits the restrictions criteria.

◆ isAccessOk() [2/2]

bool ad::map::lane::isAccessOk ( Lane const &  lane,
restriction::VehicleDescriptor const &  vehicle 
)
inline

Checks if vehicle fits the lanes restriction criteria.

Parameters
[in]lanethe lane.
[in]vehicleDescription of the vehicle.
Returns
true of vehicle fits the restrictions criteria.

◆ isHeadingInLaneDirection()

bool ad::map::lane::isHeadingInLaneDirection ( point::ParaPoint const &  position,
point::ENUHeading const &  heading 
)

Check if the provided heading is along the lane direction.

Parameters
[in]positionis the position at which the lane heading is obtained
[in]headingis the heading to be checked
Returns
true if the heading is within 90° of the lane direction, false otherwise

◆ isLaneDirectionNegative() [1/2]

bool ad::map::lane::isLaneDirectionNegative ( Lane const &  lane)
inline
Returns
true if direction is NEGATIVE or BIDIRECTIONAL.

◆ isLaneDirectionNegative() [2/2]

bool ad::map::lane::isLaneDirectionNegative ( LaneId const &  laneId)

Check if the lane direction is negative.

Parameters
[in]laneIdthe id of the lane to be checked
Returns
true if the lane direction is negative (negative || bidirectional)

◆ isLaneDirectionPositive() [1/2]

bool ad::map::lane::isLaneDirectionPositive ( Lane const &  lane)
inline
Returns
true if direction is POSITIVE or BIDIRECTIONAL.

◆ isLaneDirectionPositive() [2/2]

bool ad::map::lane::isLaneDirectionPositive ( LaneId const &  laneId)

Check if the lane direction is positive.

Parameters
[in]laneIdthe id of the lane to be checked
Returns
true if the lane direction is positive (positive || bidirectional)

◆ isLanePartOfAnIntersection()

bool ad::map::lane::isLanePartOfAnIntersection ( Lane const &  lane)
inline
Returns
true if lane is part of an intersection.

◆ isLaneRelevantForExpansion()

bool ad::map::lane::isLaneRelevantForExpansion ( lane::LaneId const &  laneId,
lane::LaneIdSet const &  relevantLanes 
)

Checks if the laneId is relevant for expansion given the set of relevant lanes.

Returns
true if the relevantLanes set is empty, or if the laneId can be found in the set of relevantLanes.

◆ isLeftMost()

bool ad::map::lane::isLeftMost ( Lane const &  lane)
inline
Returns
true if there are no lanes left of this one.

◆ isNear()

bool ad::map::lane::isNear ( Lane const &  lane,
point::BoundingSphere const &  boundingSphere 
)
inline

Checks if given sphere intersects with lane bounding ball.

Parameters
[in]lanethe lane.
[in]boundingSphereinput sphere
Returns
true given sphere intersects with lane bounding ball.

◆ isPhysicalPredecessor()

bool ad::map::lane::isPhysicalPredecessor ( Lane const &  lane,
Lane const &  other 
)

Checks if Lane is longitudinally connected with another Lane at the start.

Parameters
[in]otherOther object. Must be IsValid()!
Returns
True if this Lane longitudinally connected with another Lane at the start.

◆ isPyhsicalSuccessor()

bool ad::map::lane::isPyhsicalSuccessor ( Lane const &  lane,
Lane const &  other 
)

Checks if Lane is longitudinally connected with another Lane at the end.

Parameters
[in]otherOther object. Must be IsValid()!
Returns
True if this Lane longitudinally connected with another Lane at the end.

◆ isRightMost()

bool ad::map::lane::isRightMost ( Lane const &  lane)
inline
Returns
true if there are no lanes right of this one.

◆ isRouteable()

bool ad::map::lane::isRouteable ( Lane const &  lane)
inline
Returns
true if lane can be used in Routing.

◆ isSameOrDirectNeighbor()

bool ad::map::lane::isSameOrDirectNeighbor ( LaneId const  id,
LaneId const  neighbor 
)

Check if two lanes are direct neighbors of even the same.

Returns
true if the ids belong to the same or neighboring lanes, false otherwise

◆ isSuccessorOrPredecessor()

bool ad::map::lane::isSuccessorOrPredecessor ( LaneId const  laneId,
LaneId const  checkLaneId 
)

Check if a lane is successor or predecessor of a lane.

Parameters
[in]laneIdthe main lane
[in]checkLaneIdthe lane to be checked if it's a successor or predecessor of the main lane
Returns
true if the checkLaneId is a successor or predecessor of laneId

◆ isValid() [1/3]

bool ad::map::lane::isValid ( ContactLane const &  contactLane,
bool const  logErrors = true 
)
inline

checks if the given ContactLane is valid

The contactLane is valid if it's within valid input range.

◆ isValid() [2/3]

bool ad::map::lane::isValid ( Lane const &  lane,
bool const  logErrors = true 
)
inline

checks if the given Lane is valid

The lane is valid if it's within valid input range.

◆ isValid() [3/3]

bool ad::map::lane::isValid ( LaneId const &  laneId,
bool const  logErrors = true 
)
inline

checks if the given LaneId is valid

The laneId is valid if it's within valid input range.

◆ isVanishingLaneEnd()

bool ad::map::lane::isVanishingLaneEnd ( Lane const &  lane)
Returns
true if this lane is vanishing at the end.

◆ isVanishingLaneStart()

bool ad::map::lane::isVanishingLaneStart ( Lane const &  lane)
Returns
true if this lane is vanishing at the start.

◆ makeTransitionFromFirstBorderContinuous()

void ad::map::lane::makeTransitionFromFirstBorderContinuous ( ENUBorder first,
ENUBorder const &  second 
)

operation to make the transition between two borders continuous

This executes the makeTransitionToSecondEdgeContinuous() for left and right edges. In addition, adds interpolation points to the respective other edge if required.

Parameters
[in]firstthe first border to be adapted if required to make the transition continuous
[in]secondthe second border (is untouched by the algorithm)

◆ makeTransitionFromFirstEdgeContinuous()

void ad::map::lane::makeTransitionFromFirstEdgeContinuous ( point::ENUEdge first,
point::ENUEdge const &  second 
)

operation to make the transition between two edges continuous

If the end point of first is near (<=0.1m) to the end point of second or one of the edges has less than two points, nothing is done. Otherwise the first point of the second edge will exchanged by the last point of the first edge. The second point of the second edge is placed at some distance along the edge which is calculated using:

  • the distance of the displacement of the two edges
  • the direction of the displacement of the two edges compared to the the corresponding direction of the edges
Parameters
[in]firstthe first edge to be adapted if required to make the transition continuous
[in]secondthe second edge (is untouched by the algorithm)

◆ makeTransitionToSecondBorderContinuous()

void ad::map::lane::makeTransitionToSecondBorderContinuous ( ENUBorder const &  first,
ENUBorder second 
)

operation to make the transition between two borders continuous

This executes the makeTransitionToSecondEdgeContinuous() for left and right edges. In addition, adds interpolation points to the respective other edge if required.

Parameters
[in]firstthe first border (is untouched by the algorithm)
[in]secondthe second border to be adapted if required to make the transition continuous

◆ makeTransitionToSecondEdgeContinuous()

void ad::map::lane::makeTransitionToSecondEdgeContinuous ( point::ENUEdge const &  first,
point::ENUEdge second 
)

operation to make the transition between two edges continuous

If the end point of first is near (<=0.1m) to the end point of second or one of the edges has less than two points, nothing is done. Otherwise the first point of the second edge will exchanged by the last point of the first edge. The second point of the second edge is placed at some distance along the edge which is calculated using:

  • the distance of the displacement of the two edges
  • the direction of the displacement of the two edges compared to the the corresponding direction of the edges
Parameters
[in]firstthe first edge (is untouched by the algorithm)
[in]secondthe second edge to be adapted if required to make the transition continuous

◆ normalizeBorder()

void ad::map::lane::normalizeBorder ( ENUBorder border,
ENUBorder const *  previousBorder = nullptr 
)

normalizes the border

At first the left and right edges of the border are checked for irregular directional vectors (scalarproduct of the vectors of three consecutive edge points has to be positive) Irregular points are dropped.

Then, the number of points of the left and right edge of the border are made equal by extending the smaller edge. If an edge has less than 2 points, nothing is done.

The previousBorder (optional parameter) is used to extend the irregular directional vector check to the beginning of the border edges; here leading to an potential overwrite of the first edge point by the end of the previousBorder.

◆ operator<<() [1/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
ContactLane const &  _value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]_valueContactLane value
Returns
The stream object.

◆ operator<<() [2/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
ContactLocation const &  value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]valueContactLocation value
Returns
The stream object.

◆ operator<<() [3/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
ContactType const &  value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]valueContactType value
Returns
The stream object.

◆ operator<<() [4/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
ECEFBorder const &  _value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]_valueECEFBorder value
Returns
The stream object.

◆ operator<<() [5/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
ENUBorder const &  _value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]_valueENUBorder value
Returns
The stream object.

◆ operator<<() [6/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
GeoBorder const &  _value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]_valueGeoBorder value
Returns
The stream object.

◆ operator<<() [7/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
Lane const &  _value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]_valueLane value
Returns
The stream object.

◆ operator<<() [8/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
LaneDirection const &  value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]valueLaneDirection value
Returns
The stream object.

◆ operator<<() [9/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
LaneId const &  _value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]_valueLaneId value
Returns
The stream object.

◆ operator<<() [10/10]

std::ostream& ad::map::lane::operator<< ( std::ostream &  os,
LaneType const &  value 
)
inline

standard ostream operator

Parameters
[in]osThe output stream to write to
[in]valueLaneType value
Returns
The stream object.

◆ oppositeLocation()

ContactLocation ad::map::lane::oppositeLocation ( ContactLocation const &  e)
inline

Provides opposite Location.

Parameters
[in]eBase location.
Returns
Opposite location. INVALID if there is no opposite.

◆ projectParametricPointToEdges() [1/2]

bool ad::map::lane::projectParametricPointToEdges ( Lane const &  lane,
physics::ParametricValue const &  longitudinalOffset,
point::ECEFPoint point_on_left_edge,
point::ECEFPoint point_on_right_edge 
)

Calculates the projection on left and right boundary of the parametric point on the center of the lane.

Parameters
[in]longitudinalOffsetLongitudinal parameter on the lane.
[out]point_on_left_edgeprojected point on the left boundary
[out]point_on_right_edgeprojected point on the right boundary
Returns
True if the operation succeeded.

◆ projectParametricPointToEdges() [2/2]

bool ad::map::lane::projectParametricPointToEdges ( Lane const &  lane,
point::ECEFPoint const &  referencePoint,
point::ECEFPoint point_on_left_edge,
point::ECEFPoint point_on_right_edge 
)

Calculates the projection on left and right boundary of the given referencePoint.

Parameters
[in]referencePointreference point.
[out]point_on_left_edgeprojected point on the left boundary
[out]point_on_right_edgeprojected point on the right boundary
Returns
True if the operation succeeded.

◆ projectPositionToLaneInHeadingDirection()

bool ad::map::lane::projectPositionToLaneInHeadingDirection ( point::ParaPoint const &  position,
point::ENUHeading const &  heading,
point::ParaPoint projectedPosition 
)

project a position to a neighboring lane (incl. the lane itself), which has the provided heading

Parameters
[in]positionto be projected
[in]headingto be checked
[out]projectedPositionis the projected position (can be position, if the lane is already in heading direction)
Returns
true if a valid projection was found, false otherwise

◆ satisfiesFilter()

bool ad::map::lane::satisfiesFilter ( Lane const &  lane,
std::string const &  typeFilter,
bool  isHov 
)

Checks if Lane satisfies filter condition.

Parameters
[in]typeFilterType of the lane as string.
[in]isHovTrue if only lanes with HOV restriction shall be returned.
Returns
true if Lane satisfies filter condition.

◆ uniqueLaneId()

LaneId ad::map::lane::uniqueLaneId ( point::GeoPoint const &  point)
Returns
lane id at given location

Throws if there is more than one lane at the given position

◆ uniqueParaPoint()

point::ParaPoint ad::map::lane::uniqueParaPoint ( point::GeoPoint const &  point)
Returns
parametric point at given location

Throws if there is more than one lane at the given position