Maps SDK for C++ 1.0.0
Loading...
Searching...
No Matches
gem::sense::IImprovedPosition Class Referenceabstract

Definition of ImprovedPosition interface. More...

Inheritance diagram for gem::sense::IImprovedPosition:
Collaboration diagram for gem::sense::IImprovedPosition:

Public Types

enum  ERoadModifier {
  None = 0 , Tunnel = 0x1 , Bridge = 0x2 , Ramp = 0x4 ,
  Tollway = 0x8 , Roundabout = 0x10 , OneWay = 0x20 , NoUTurn = 0x40 ,
  LeftDriveSide = 0x80 , Motorway = 0x100 , MotorwayLink = 0x200
}
 Current position road modifiers. More...
enum class  EProvider {
  Unknown , GPS , Network , SensorFusion ,
  MapMatching , Simulation
}
 Values that represent the type of position provider. More...
enum class  EFixQuality { Invalid , Inertial , Low , High }
 Values that represent position data quality. More...

Public Member Functions

EDataType getType () const override
 Get data type.
virtual bool hasRoadLocalization () const =0
 Check if improved position has a road localization.
virtual const AddressInfoRef getRoadAddress () const =0
 Get position road address.
virtual int getRoadModifier () const =0
 Get position road modifiers as an integer of packed ERoadModifier flags.
int getRoadModifiers () const
 Get position road modifiers as an integer of packed ERoadModifier flags.
virtual double getRoadSpeedLimit () const =0
 Get position road speed limit in m/s.
virtual const RoadInfoListRef getRoadInfo () const =0
 Get position road info details.
virtual class RoadInfoImage getRoadInfoImage () const =0
 Get road info image.
virtual bool hasTerrainData () const =0
 Check if improved position has terrain data.
virtual double getTerrainAltitude () const =0
 Get terrain altitude.
virtual double getTerrainSlope () const =0
 Get terrain slope.
virtual LargeInteger getSatelliteTime () const =0
 Satellite timestamp, milliseconds since 1970.
LargeInteger getSatelliteTimestamp () const
 Satellite timestamp, milliseconds since 1970.
virtual EProvider getProvider () const =0
 Provider type: GPS, Network, Unknown.
virtual double getLatitude () const =0
 Geographical latitude.
virtual double getLongitude () const =0
 Geographical longitude.
Coordinates getCoordinates () const
 Latitude and longitude.
virtual double getAltitude () const =0
 Altitude above main sea level.
virtual double getSpeed () const =0
 Travel speed.
virtual double getSpeedAccuracy () const =0
 Travel speed accuracy.
virtual double getCourse () const =0
 The course of the movement.
virtual double getCourseAccuracy () const =0
 Course accuracy.
virtual double getHorizontalAccuracy () const =0
 Horizontal accuracy of position.
virtual double getVerticalAccuracy () const =0
 Vertical accuracy of position.
virtual EFixQuality getFixQuality () const =0
 Fix quality (whether this position is trustworthy); see the explanations at EFixQuality.
bool isValid () const
virtual bool hasCoordinates () const =0
 Query if this object has valid coordinates.
virtual bool hasAltitude () const =0
 Query if this object has altitude.
virtual bool hasSpeed () const =0
 Query if this object has speed.
virtual bool hasSpeedAccuracy () const =0
 Query if this object has speed accuracy.
virtual bool hasCourse () const =0
 Query if this object has course.
virtual bool hasCourseAccuracy () const =0
 Query if this object has course accuracy.
virtual bool hasHorizontalAccuracy () const =0
 Query if this object has horizontal accuracy.
virtual bool hasVerticalAccuracy () const =0
 Query if this object has vertical accuracy.
virtual LargeInteger getAcquisitionTimestamp () const =0
Time getTime () const
template<typename TDerivedType>
StrongPointer< TDerivedType > cast ()
 Cast to a derived type.

Static Public Member Functions

static bool isSameType (const IData *ptr)
 Check if a certain data element is of ImprovedPosition type.

Detailed Description

Definition of ImprovedPosition interface.

Member Enumeration Documentation

◆ EFixQuality

enum class gem::sense::IPosition::EFixQuality
stronginherited

Values that represent position data quality.

Invalid means the position can not or should not be processed (for instance, invalid coordinates)

Inertial means position has resulted from inertial extrapolation; there is a GPS outage (e.g. tunnel)

Low means the position is valid but cannot be trusted because of bad GPS accuracy (e.g. urban canyon)

High means the position is valid and can be trusted (is recent and has a good accuracy)

Enumerator
Invalid 

The position data is invalid and should not be processed.

Inertial 

The position data is inertial.

Low 

The position is valid but has low accuracy and cannot be fully trusted.

High 

The position is valid and can be trusted due to good accuracy and recency.

◆ EProvider

enum class gem::sense::IPosition::EProvider
stronginherited

Values that represent the type of position provider.

GPS means that the position comes from a GPS sensor.

Network means that the position comes from a network source, but not GPS.

Enumerator
Unknown 

The position provider is unknown.

GPS 

The position is obtained from a GPS sensor.

Network 

The position is obtained from a network-based source.

SensorFusion 

The position is improved using inertial sensors for better accuracy.

MapMatching 

The position is matched with a map for better accuracy.

Simulation 

The position data comes from a simulation environment.

◆ ERoadModifier

Current position road modifiers.

Enumerator
None 

No modifiers apply to the current position.

Tunnel 

The road is a tunnel.

Bridge 

The road is a bridge.

Ramp 

The road is a ramp.

Tollway 

The road is a tollway, requiring payment for access.

Roundabout 

The road includes a roundabout.

OneWay 

The road is a one-way street.

NoUTurn 

U-turns are not allowed on this road.

LeftDriveSide 

The road has left-hand driving rules.

Motorway 

The road is a motorway.

MotorwayLink 

The road is a motorway link, connecting to a motorway.

Member Function Documentation

◆ cast()

template<typename TDerivedType>
StrongPointer< TDerivedType > gem::sense::IData::cast ( )
inlineinherited

Cast to a derived type.

Returns
The requested derived type as a shared pointer.

◆ getAcquisitionTimestamp()

virtual LargeInteger gem::sense::IData::getAcquisitionTimestamp ( ) const
pure virtualinherited
Returns
Acquisition timestamp in milliseconds since 1970 ( epoch )

Implemented in gem::sense::MockPosition.

◆ getAltitude()

virtual double gem::sense::IPosition::getAltitude ( ) const
pure virtualinherited

Altitude above main sea level.

Returns
The altitude in meters.

Implemented in gem::sense::MockPosition.

◆ getCoordinates()

Coordinates gem::sense::IPosition::getCoordinates ( ) const
inlineinherited

Latitude and longitude.

If both values are equal to 0, the position is considered invalid

Returns
Coordinate pair, both latitude and longitude in degrees

◆ getCourse()

virtual double gem::sense::IPosition::getCourse ( ) const
pure virtualinherited

The course of the movement.

Represents true heading, not magnetic heading.

0 means true north, 90 east, 180 south, 270 west.

A negative value (-1 by default) means the position has no course information.

Returns
The course in degrees.

Implemented in gem::sense::MockPosition.

◆ getCourseAccuracy()

virtual double gem::sense::IPosition::getCourseAccuracy ( ) const
pure virtualinherited

Course accuracy.

Typical accuracy for consumer GPS is 25 degrees at high speeds.

Valid course accuracy should always be positive.

Returns
The course accuracy in degrees.

Implemented in gem::sense::MockPosition.

◆ getFixQuality()

virtual EFixQuality gem::sense::IPosition::getFixQuality ( ) const
pure virtualinherited

Fix quality (whether this position is trustworthy); see the explanations at EFixQuality.

Returns
The fix quality.

Implemented in gem::sense::MockPosition.

◆ getHorizontalAccuracy()

virtual double gem::sense::IPosition::getHorizontalAccuracy ( ) const
pure virtualinherited

Horizontal accuracy of position.

Typical accuracy for consumer GPS is 5-20 meters.

Valid position accuracy should always be positive.

Returns
The horizontal position accuracy in meters.

Implemented in gem::sense::MockPosition.

◆ getLatitude()

virtual double gem::sense::IPosition::getLatitude ( ) const
pure virtualinherited

Geographical latitude.

From -90 to +90; positive on northern hemisphere

If value is out of the -90...90 range, the position is considered invalid.

Returns
The latitude in degrees

Implemented in gem::sense::MockPosition.

◆ getLongitude()

virtual double gem::sense::IPosition::getLongitude ( ) const
pure virtualinherited

Geographical longitude.

From -180 to +180; positive on eastern hemisphere

If value is out of the -180...180 range, the position is considered invalid.

Returns
The longitude in degrees

Implemented in gem::sense::MockPosition.

◆ getProvider()

virtual EProvider gem::sense::IPosition::getProvider ( ) const
pure virtualinherited

Provider type: GPS, Network, Unknown.

Returns
The provider type.

Implemented in gem::sense::MockPosition.

◆ getRoadAddress()

virtual const AddressInfoRef gem::sense::IImprovedPosition::getRoadAddress ( ) const
pure virtual

Get position road address.

Returns
The address info reference.

◆ getRoadInfo()

virtual const RoadInfoListRef gem::sense::IImprovedPosition::getRoadInfo ( ) const
pure virtual

Get position road info details.

The road info list is in ascending priority order.

Returns
The road info reference.

◆ getRoadInfoImage()

virtual class RoadInfoImage gem::sense::IImprovedPosition::getRoadInfoImage ( ) const
pure virtual

Get road info image.

Returns
The road info image.

◆ getRoadModifier()

virtual int gem::sense::IImprovedPosition::getRoadModifier ( ) const
pure virtual

Get position road modifiers as an integer of packed ERoadModifier flags.

Deprecated
Use getRoadModifiers() instead.
Returns
The modifier.
See also
sense::IImprovedPosition::ERoadModifier.

◆ getRoadModifiers()

int gem::sense::IImprovedPosition::getRoadModifiers ( ) const
inline

Get position road modifiers as an integer of packed ERoadModifier flags.

Returns
The modifier.
See also
sense::IImprovedPosition::ERoadModifier.

◆ getRoadSpeedLimit()

virtual double gem::sense::IImprovedPosition::getRoadSpeedLimit ( ) const
pure virtual

Get position road speed limit in m/s.

If speed limit doesn't exist in map data, 0 is returned.

Returns
The speed limit in meter/second.

◆ getSatelliteTime()

virtual LargeInteger gem::sense::IPosition::getSatelliteTime ( ) const
pure virtualinherited

Satellite timestamp, milliseconds since 1970.

Deprecated
Use instead getSatelliteTimestamp().

Timestamps are expected to increase monotonously for subsequent positions; data with timestamp from the past will be discarded.

Returns
The satellite time in milliseconds

Implemented in gem::sense::MockPosition.

◆ getSatelliteTimestamp()

LargeInteger gem::sense::IPosition::getSatelliteTimestamp ( ) const
inlineinherited

Satellite timestamp, milliseconds since 1970.

Timestamps are expected to increase monotonously for subsequent positions; data with timestamp from the past will be discarded.

Returns
The satellite time in milliseconds

◆ getSpeed()

virtual double gem::sense::IPosition::getSpeed ( ) const
pure virtualinherited

Travel speed.

Valid speed information should always be non-negative.

A negative value (-1 by default) means the position has no speed information.

If car is going backwards, the course should change by 180, but the speed should still be non-negative.

Returns
The speed, in m/s.

Implemented in gem::sense::MockPosition.

◆ getSpeedAccuracy()

virtual double gem::sense::IPosition::getSpeedAccuracy ( ) const
pure virtualinherited

Travel speed accuracy.

Typical accuracy for consumer GPS is 2 m/s at steady speed and high position accuracy.

Valid speed accuracy should always be positive.

Returns
The speed accuracy in m/s.

Implemented in gem::sense::MockPosition.

◆ getTerrainAltitude()

virtual double gem::sense::IImprovedPosition::getTerrainAltitude ( ) const
pure virtual

Get terrain altitude.

This a map data based value comparing to getAltitude which is GPS sensor data.

Returns
The terrain altitude in meters.

◆ getTerrainSlope()

virtual double gem::sense::IImprovedPosition::getTerrainSlope ( ) const
pure virtual

Get terrain slope.

The current slope in degrees, positive value for ascent, negative for descent.

Returns
The terrain slope in degrees.

◆ getTime()

Time gem::sense::IData::getTime ( ) const
inlineinherited
Returns
System acquisition time

◆ getType()

EDataType gem::sense::IImprovedPosition::getType ( ) const
inlineoverridevirtual

Get data type.

Returns
The type.

Implements gem::sense::IData.

◆ getVerticalAccuracy()

virtual double gem::sense::IPosition::getVerticalAccuracy ( ) const
pure virtualinherited

Vertical accuracy of position.

Valid position accuracy should always be positive.

Returns
The vertical position accuracy in meters.

Implemented in gem::sense::MockPosition.

◆ hasAltitude()

virtual bool gem::sense::IPosition::hasAltitude ( ) const
pure virtualinherited

Query if this object has altitude.

Returns
True if altitude is available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ hasCoordinates()

virtual bool gem::sense::IPosition::hasCoordinates ( ) const
pure virtualinherited

Query if this object has valid coordinates.

Returns
True if latitude and longitude are available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ hasCourse()

virtual bool gem::sense::IPosition::hasCourse ( ) const
pure virtualinherited

Query if this object has course.

Returns
True if course is available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ hasCourseAccuracy()

virtual bool gem::sense::IPosition::hasCourseAccuracy ( ) const
pure virtualinherited

Query if this object has course accuracy.

Returns
True if course accuracy is available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ hasHorizontalAccuracy()

virtual bool gem::sense::IPosition::hasHorizontalAccuracy ( ) const
pure virtualinherited

Query if this object has horizontal accuracy.

Returns
True if horizontal accuracy is available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ hasRoadLocalization()

virtual bool gem::sense::IImprovedPosition::hasRoadLocalization ( ) const
pure virtual

Check if improved position has a road localization.

Returns
True of false accordingly.

◆ hasSpeed()

virtual bool gem::sense::IPosition::hasSpeed ( ) const
pure virtualinherited

Query if this object has speed.

Returns
True if speed is available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ hasSpeedAccuracy()

virtual bool gem::sense::IPosition::hasSpeedAccuracy ( ) const
pure virtualinherited

Query if this object has speed accuracy.

Returns
True if speed accuracy is available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ hasTerrainData()

virtual bool gem::sense::IImprovedPosition::hasTerrainData ( ) const
pure virtual

Check if improved position has terrain data.

Returns
True of false accordingly.

◆ hasVerticalAccuracy()

virtual bool gem::sense::IPosition::hasVerticalAccuracy ( ) const
pure virtualinherited

Query if this object has vertical accuracy.

Returns
True if vertical accuracy is available and valid, false if not.

Implemented in gem::sense::MockPosition.

◆ isSameType()

bool gem::sense::IImprovedPosition::isSameType ( const IData * ptr)
inlinestatic

Check if a certain data element is of ImprovedPosition type.

Parameters
ptrThe other IData pointer to check against.
Returns
True if the examined data is of type ImprovedPosition.

◆ isValid()

bool gem::sense::IPosition::isValid ( ) const
inlineinherited
Returns
Whether this position is valid.