Skip to content

Route Matching API

Client for the HERE Route Matching API.

RmeApi

Bases: HEREApi

A python interface into the RME API.

Source code in src/herepy/rme_api.py
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
class RmeApi(HEREApi):
    """A python interface into the RME API."""

    def __init__(self, api_key: str = None, timeout: int = None):
        """
        Initialize the Route Matching API client.

        Args:
          api_key (str):
            API key taken from HERE Developer Portal.
          timeout (int):
            Timeout limit for requests.

        """
        super().__init__(api_key, timeout)
        self._base_url = "https://m.fleet.ls.hereapi.com/2/matchroute.json"

    def __get(self, data):
        url = Utils.build_url(self._base_url, extra_params=data)
        response = requests.get(url, timeout=self._timeout)
        try:
            json_data = json.loads(response.content.decode("utf8"))
            if json_data.get("TracePoints") is not None:
                return RmeResponse.new_from_jsondict(json_data)
            else:
                raise HEREError(
                    json_data.get(
                        "Details",
                        "Error occurred on function " + sys._getframe(1).f_code.co_name,
                    )
                )
        except ValueError as err:
            raise HEREError("Error occurred on function " + sys._getframe(1).f_code.co_name + " " + str(err))

    def match_route(self, gpx_file_content: str, route_mode: str = "car", pde_layers: list[str] = []) -> RmeResponse | None:
        """
        Retrieve miscellaneous information about the route in a GPX file.

        Args:
          gpx_file_content (str):
            gpx file content as string
          route_mode (str):
            route mode ('car')
          pde_layers (str list):
            PDE layers to retrieve e.g.:
              ROAD_GEOM_FCn(TUNNEL)
              SPEED_LIMITS_FCn(FROM_REF_SPEED_LIMIT,TO_REF_SPEED_LIMIT)
              ADAS_ATTRIB_FCn(SLOPES).

              or e.g.,

              ROAD_GEOM_FCn(*)
              SPEED_LIMITS_FCn(*)

        Returns:
          RmeResponse
        Raises:
          HEREError

        """
        data = {
            "file": Utils.get_zipped_base64(gpx_file_content),
            "routemode": route_mode,
            "attributes": ",".join(pde_layers),
            "apikey": self._api_key,
        }
        return self.__get(data)

    async def __get_async(self, data):
        url = Utils.build_url(self._base_url, extra_params=data)
        response = await self._get_async_client().get(url, timeout=self._timeout)
        try:
            json_data = json.loads(response.content.decode("utf8"))
            if json_data.get("TracePoints") is not None:
                return RmeResponse.new_from_jsondict(json_data)
            else:
                raise HEREError(
                    json_data.get(
                        "Details",
                        "Error occurred on function " + sys._getframe(1).f_code.co_name,
                    )
                )
        except ValueError as err:
            raise HEREError("Error occurred on function " + sys._getframe(1).f_code.co_name + " " + str(err))

    async def async_match_route(self, gpx_file_content: str, route_mode: str = "car", pde_layers: list[str] = []) -> RmeResponse | None:
        """
        Retrieve miscellaneous information about the route in a GPX file.

        Args:
          gpx_file_content (str):
            gpx file content as string
          route_mode (str):
            route mode ('car')
          pde_layers (str list):
            PDE layers to retrieve e.g.:
              ROAD_GEOM_FCn(TUNNEL)
              SPEED_LIMITS_FCn(FROM_REF_SPEED_LIMIT,TO_REF_SPEED_LIMIT)
              ADAS_ATTRIB_FCn(SLOPES).

              or e.g.,

              ROAD_GEOM_FCn(*)
              SPEED_LIMITS_FCn(*)

        Returns:
          RmeResponse
        Raises:
          HEREError

        """
        data = {
            "file": Utils.get_zipped_base64(gpx_file_content),
            "routemode": route_mode,
            "attributes": ",".join(pde_layers),
            "apikey": self._api_key,
        }
        return await self.__get_async(data)

__init__(api_key=None, timeout=None)

Initialize the Route Matching API client.

Parameters:

Name Type Description Default
api_key str

API key taken from HERE Developer Portal.

None
timeout int

Timeout limit for requests.

None
Source code in src/herepy/rme_api.py
18
19
20
21
22
23
24
25
26
27
28
29
30
def __init__(self, api_key: str = None, timeout: int = None):
    """
    Initialize the Route Matching API client.

    Args:
      api_key (str):
        API key taken from HERE Developer Portal.
      timeout (int):
        Timeout limit for requests.

    """
    super().__init__(api_key, timeout)
    self._base_url = "https://m.fleet.ls.hereapi.com/2/matchroute.json"

async_match_route(gpx_file_content, route_mode='car', pde_layers=[]) async

Retrieve miscellaneous information about the route in a GPX file.

Parameters:

Name Type Description Default
gpx_file_content str

gpx file content as string

required
route_mode str

route mode ('car')

'car'
pde_layers str list

PDE layers to retrieve e.g.: ROAD_GEOM_FCn(TUNNEL) SPEED_LIMITS_FCn(FROM_REF_SPEED_LIMIT,TO_REF_SPEED_LIMIT) ADAS_ATTRIB_FCn(SLOPES).

or e.g.,

ROAD_GEOM_FCn() SPEED_LIMITS_FCn()

[]

Returns:

Type Description
RmeResponse | None

RmeResponse

Raises: HEREError

Source code in src/herepy/rme_api.py
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
async def async_match_route(self, gpx_file_content: str, route_mode: str = "car", pde_layers: list[str] = []) -> RmeResponse | None:
    """
    Retrieve miscellaneous information about the route in a GPX file.

    Args:
      gpx_file_content (str):
        gpx file content as string
      route_mode (str):
        route mode ('car')
      pde_layers (str list):
        PDE layers to retrieve e.g.:
          ROAD_GEOM_FCn(TUNNEL)
          SPEED_LIMITS_FCn(FROM_REF_SPEED_LIMIT,TO_REF_SPEED_LIMIT)
          ADAS_ATTRIB_FCn(SLOPES).

          or e.g.,

          ROAD_GEOM_FCn(*)
          SPEED_LIMITS_FCn(*)

    Returns:
      RmeResponse
    Raises:
      HEREError

    """
    data = {
        "file": Utils.get_zipped_base64(gpx_file_content),
        "routemode": route_mode,
        "attributes": ",".join(pde_layers),
        "apikey": self._api_key,
    }
    return await self.__get_async(data)

match_route(gpx_file_content, route_mode='car', pde_layers=[])

Retrieve miscellaneous information about the route in a GPX file.

Parameters:

Name Type Description Default
gpx_file_content str

gpx file content as string

required
route_mode str

route mode ('car')

'car'
pde_layers str list

PDE layers to retrieve e.g.: ROAD_GEOM_FCn(TUNNEL) SPEED_LIMITS_FCn(FROM_REF_SPEED_LIMIT,TO_REF_SPEED_LIMIT) ADAS_ATTRIB_FCn(SLOPES).

or e.g.,

ROAD_GEOM_FCn() SPEED_LIMITS_FCn()

[]

Returns:

Type Description
RmeResponse | None

RmeResponse

Raises: HEREError

Source code in src/herepy/rme_api.py
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def match_route(self, gpx_file_content: str, route_mode: str = "car", pde_layers: list[str] = []) -> RmeResponse | None:
    """
    Retrieve miscellaneous information about the route in a GPX file.

    Args:
      gpx_file_content (str):
        gpx file content as string
      route_mode (str):
        route mode ('car')
      pde_layers (str list):
        PDE layers to retrieve e.g.:
          ROAD_GEOM_FCn(TUNNEL)
          SPEED_LIMITS_FCn(FROM_REF_SPEED_LIMIT,TO_REF_SPEED_LIMIT)
          ADAS_ATTRIB_FCn(SLOPES).

          or e.g.,

          ROAD_GEOM_FCn(*)
          SPEED_LIMITS_FCn(*)

    Returns:
      RmeResponse
    Raises:
      HEREError

    """
    data = {
        "file": Utils.get_zipped_base64(gpx_file_content),
        "routemode": route_mode,
        "attributes": ",".join(pde_layers),
        "apikey": self._api_key,
    }
    return self.__get(data)