<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Patrick Yuen</title>
    <description>The latest articles on Forem by Patrick Yuen (@patrickyuen00).</description>
    <link>https://forem.com/patrickyuen00</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F955766%2F10a6f8ae-df83-4d96-b602-8795dc80fa7c.jpg</url>
      <title>Forem: Patrick Yuen</title>
      <link>https://forem.com/patrickyuen00</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/patrickyuen00"/>
    <language>en</language>
    <item>
      <title>Let’s try the HERE Routing API that has an amazing amount of functions</title>
      <dc:creator>Patrick Yuen</dc:creator>
      <pubDate>Fri, 02 Dec 2022 05:27:58 +0000</pubDate>
      <link>https://forem.com/mierune/lets-try-the-here-routing-api-that-has-an-amazing-amount-of-functions-2-2ii3</link>
      <guid>https://forem.com/mierune/lets-try-the-here-routing-api-that-has-an-amazing-amount-of-functions-2-2ii3</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;HERE Technologies is a global company that provides a number of map data and geolocation information services platform. As the API services that HERE provides have an amazing amount of functions, I would like to introduce a part of those functions to you. &lt;br&gt;
&lt;a href="https://www.here.com" rel="noopener noreferrer"&gt;https://www.here.com&lt;/a&gt;&lt;br&gt;
　&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufmcky9263uvdf4jpg56.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufmcky9263uvdf4jpg56.gif" alt="Image description" width="500" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;　&lt;/p&gt;
&lt;h3&gt;
  
  
  Table of contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Preparations&lt;/li&gt;
&lt;li&gt;HERE Routing API&lt;/li&gt;
&lt;li&gt;An amazing amount of parameters&lt;/li&gt;
&lt;li&gt;Official demo site&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;　&lt;/p&gt;
&lt;h3&gt;
  
  
  Preparations
&lt;/h3&gt;

&lt;p&gt;To use the API, there are 3 preparations&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Register in the Developer section for HERE&lt;/li&gt;
&lt;li&gt;Issue an API key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;　&lt;br&gt;
As there is a guide for registering in the official Routing API documents, let’s register!&lt;br&gt;
It is free of charge to register for an API key.&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
Below is the reference page for the Routing API:&lt;br&gt;
&lt;a href="https://developer.here.com/documentation/routing-api/dev_guide/index.html" rel="noopener noreferrer"&gt;HERE Routing API reference&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
There is also a document for swagger API references.&lt;br&gt;
&lt;a href="https://developer.here.com/documentation/routing-api/api-reference-swagger.html" rel="noopener noreferrer"&gt;Swagger API reference page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;　&lt;/p&gt;
&lt;h3&gt;
  
  
  HERE Routing API
&lt;/h3&gt;

&lt;p&gt;You might ask, what is a Routing API.&lt;br&gt;
Explaining simply, a routing API is an API for searching routes between a starting position and a goal position.&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
So, the most basic usage of the API requires us to set the&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Starting position&lt;/li&gt;
&lt;li&gt;Goal positon&lt;/li&gt;
&lt;li&gt;Method of movement
parameters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;　&lt;br&gt;
After that, we can call the API with curl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -X GET \
'https://router.hereapi.com/v8/routes?transportMode=car&amp;amp;origin=43.068411,141.350900&amp;amp;destination=43.064631,141.362023&amp;amp;apikey={YOUR_KEY}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;　&lt;br&gt;
*Please replace {YOUR_KEY} with your API key&lt;br&gt;
The starting position: origin&lt;br&gt;
The goal position: destination&lt;br&gt;
The mode of movement: transportMode&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
The modes of movement (transportation) are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pedestrian&lt;/li&gt;
&lt;li&gt;Car&lt;/li&gt;
&lt;li&gt;Truck&lt;/li&gt;
&lt;li&gt;Bicycle&lt;/li&gt;
&lt;li&gt;Scooter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;　&lt;br&gt;
Although being able to select scooter as the mode of transportation may be unique to the HERE API, the contents introduced here are mostly available in other Routing API as well.&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
The response that we receive is as below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"routes":[{
    "id":"fd8bf9ac-6994-4da6-bd19-65bf43ad6360",
    "sections":[{
        "id":"e60d4705-43bc-452e-bd40-cde37d6f005f",
        "type":"vehicle",
        "departure":{
            "time":"2022-06-24T17:20:33+09:00",
            "place":{
                "type":"place",
                "location":{
                    "lat":43.0668075,
                    "lng":141.3507903
                },
                "originalLocation"{
                    "lat":43.0684109,
                    "lng":141.3509
                }
            }
        },
        "arrival":{
            "time":"2022-06-24T17:24:10+09:00",
            "place":{
                "type":"place",
                "location":{
                    "lat":43.0646414,
                    "lng":141.3620202
                },
                "originalLocation":{
                    "lat":43.064631,
                    "lng":141.3620229
                }
            }
        },
        "transport":{"mode":"car"}
        }]
    }]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;　&lt;/p&gt;

&lt;h3&gt;
  
  
  A rich number of parameters
&lt;/h3&gt;

&lt;p&gt;From here on is the special thing about the HERE Routing API.&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
Even only by simply looking at the documents, it can be seen that the API has the following optional parameters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Getting the shape of the route&lt;/li&gt;
&lt;li&gt;Taking into consideration the elevation for the route&lt;/li&gt;
&lt;li&gt;Getting directions on when to turn&lt;/li&gt;
&lt;li&gt;Getting the name of the road&lt;/li&gt;
&lt;li&gt;Considering whether the destination is on the right or the left side of the road&lt;/li&gt;
&lt;li&gt;Considering whether there is a median barrier&lt;/li&gt;
&lt;li&gt;Calculating routes with multiple destinations&lt;/li&gt;
&lt;li&gt;Caching a previously calculated route and using it for calculation of a new route&lt;/li&gt;
&lt;li&gt;Changing the language and timezone&lt;/li&gt;
&lt;li&gt;Adding the usage of a ferry&lt;/li&gt;
&lt;li&gt;Setting the speed limit&lt;/li&gt;
&lt;li&gt;Setting places to avoid&lt;/li&gt;
&lt;li&gt;etc…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;　&lt;br&gt;
In the parameters, there are also some that are specialized for EVs (electric vehicles), such as the setting the charging situation of the vehicle. &lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
It can be said that the API is customized for being used in the logistics industry.&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
As conclusion, I would like to show you the result for waking from Sapporo station to our office.&lt;br&gt;
(Please replace YOUR_KEY with your API key)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -X GET \
'https://router.hereapi.com/v8/routes?transportMode=pedestrian&amp;amp;origin=43.068411,141.350900&amp;amp;destination=43.064631,141.362023&amp;amp;return=polyline,actions,instructions&amp;amp;lang=ja&amp;amp;apikey={YOUR_KEY}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;　&lt;br&gt;
Following is the response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "routes": [
        {
            "id": "e9942278-2dc3-42e9-8801-3e9b6c84f3fb",
            "sections": [
                {
                    "id": "faeea7a2-d775-4eb9-8287-2244707457d3",
                    "type": "pedestrian",
                    "actions": [
                        {
                            "action": "depart",
                            "duration": 56,
                            "length": 56,
                            "instruction": "Head south. Go for 56 m.",
                            "offset": 0
                        },
                        {
                            "action": "turn",
                            "duration": 70,
                            "length": 59,
                            "instruction": "Turn right. Go for 59 m.",
                            "offset": 1,
                            "direction": "right",
                            "severity": "quite"
                        },
                        {
                            "action": "turn",
                            "duration": 415,
                            "length": 405,
                            "instruction": "Turn left onto Kita 5Jo Teine-dori Street. Go for 405 m.",
                            "offset": 5,
                            "direction": "left",
                            "severity": "quite"
                        },
                        {
                            "action": "turn",
                            "duration": 267,
                            "length": 267,
                            "instruction": "Turn right onto Soseigawa-dori Street. Go for 267 m.",
                            "offset": 9,
                            "direction": "right",
                            "severity": "quite"
                        },
                        {
                            "action": "turn",
                            "duration": 142,
                            "length": 133,
                            "instruction": "Turn slightly left. Go for 133 m.",
                            "offset": 12,
                            "direction": "left",
                            "severity": "light"
                        },
                        {
                            "action": "turn",
                            "duration": 444,
                            "length": 444,
                            "instruction": "Turn left onto Kita 2Jo-dori Street. Go for 444 m.",
                            "offset": 15,
                            "direction": "left",
                            "severity": "quite"
                        },
                        {
                            "action": "arrive",
                            "duration": 0,
                            "length": 0,
                            "instruction": "Arrive at Kita 2Jo-dori Street.",
                            "offset": 23
                        }
                    ],
                    "departure": {
                        "time": "2022-11-22T10:34:38+09:00",
                        "place": {
                            "type": "place",
                            "location": {
                                "lat": 43.0675835,
                                "lng": 141.3511245
                            },
                            "originalLocation": {
                                "lat": 43.0684109,
                                "lng": 141.3509
                            }
                        }
                    },
                    "arrival": {
                        "time": "2022-11-22T10:57:52+09:00",
                        "place": {
                            "type": "place",
                            "location": {
                                "lat": 43.0646414,
                                "lng": 141.3620202
                            },
                            "originalLocation": {
                                "lat": 43.064631,
                                "lng": 141.3620229
                            }
                        }
                    },
                    "polyline": "BG-r0kyCqtsztI3eyH3BpV1CvEzF5B1HbiLgyCyMuiDqM0lDyDwYzoCyS7xB4MrZ2G5J6FnIgC72BiO2GywBoG4vBoGyuBqH8xBkGqwBiHkxB8BuMsE6gB",
                    "language": "en-us",
                    "transport": {
                        "mode": "pedestrian"
                    }
                }
            ]
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;　&lt;/p&gt;

&lt;h3&gt;
  
  
  Official demo site
&lt;/h3&gt;

&lt;p&gt;By the way, there is a website where you can try out the HERE API.&lt;br&gt;
&lt;a href="https://demo.routing.ext.here.com/" rel="noopener noreferrer"&gt;HERE Routing API demo site&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
Although it requires an authenticated HERE account, there is also an official page where support demos are shown.&lt;br&gt;
&lt;a href="https://demo.support.here.com/" rel="noopener noreferrer"&gt;HERE support site&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;　&lt;br&gt;
As the APIs can be tried out for free, I recommend everyone who is interested to try out the API.&lt;/p&gt;

&lt;p&gt;Original article: &lt;br&gt;
&lt;a href="https://qiita.com/northprint/items/837312c5ea7d0fd0966c" rel="noopener noreferrer"&gt;https://qiita.com/northprint/items/837312c5ea7d0fd0966c&lt;/a&gt;&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Let's try the HERE Route Matching API QGIS Plugin</title>
      <dc:creator>Patrick Yuen</dc:creator>
      <pubDate>Thu, 17 Nov 2022 07:02:41 +0000</pubDate>
      <link>https://forem.com/mierune/lets-try-the-here-route-matching-api-qgis-plugin-5ee0</link>
      <guid>https://forem.com/mierune/lets-try-the-here-route-matching-api-qgis-plugin-5ee0</guid>
      <description>&lt;p&gt;Original article (Japanese): &lt;a href="https://qiita.com/Kanahiro/items/7d588f238df9be1e8eea" rel="noopener noreferrer"&gt;https://qiita.com/Kanahiro/items/7d588f238df9be1e8eea&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknr030o54bzspriqampa.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknr030o54bzspriqampa.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the world of GIS, there is a technique called “map matching” or “route matching”, which fits GPS or other location data to roads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6malj1f2tmuhx90vip3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6malj1f2tmuhx90vip3n.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The simplest way to explain the technique of “route matching”, is that it is the operation used to move a point to the closest geographic feature. However, as shown below, it is not possible to create a suitable path simply by moving points. Matching based on the order of the points, and the deviation of each point is required.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixoh58n4vknao6l0phsw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixoh58n4vknao6l0phsw.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Route searching technique is necessary to solve this problem. Through some Googling, you may find that some people would suggest creating your own route searching server. However, it is a difficult task for not only ordinary users of GIS, but also GIS technicians and engineers. However, this operation can also be interpreted as “inputting a series of points, and receiving the most likely line”, and there are multiple services that provides WebAPI for such an operation. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.here.com/documentation/route-matching/dev_guide/index.html" rel="noopener noreferrer"&gt;HERE Route Matching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.mapbox.com/api/navigation/map-matching/" rel="noopener noreferrer"&gt;Mapbox Map Matching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.e-map.ne.jp/manuals/v3/?q=road_path_drive_api_man" rel="noopener noreferrer"&gt;Its-mo Navi map matching&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MIERUNE, which is great at developing QGIS plugins developed a plugin that uses such services to implement route matching in QGIS. In developing the plugin, we decided to use the HERE API, which is thought to be the strongest in route searching technology. This article discusses the technical details and how to use the HERE API plugin. &lt;/p&gt;

&lt;h2&gt;
  
  
  About HERE’s API
&lt;/h2&gt;

&lt;p&gt;HERE publishes a wide range of APIs on location information and services, including APIs for maps, geocoding and route searching.  HERE even publishes 5 APIs for route searching, which are shown below. (excluding the 2 deprecated APIs, as of July 2022)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HERE Routing API v8 (For route searching)&lt;/li&gt;
&lt;li&gt;HERE Isoline Routing API v8 (For calculating service areas)&lt;/li&gt;
&lt;li&gt;HERE Matrix Routing API v8 (For calculating routes when there are multiple points of departure and arrival)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HERE Route Matching v8&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;HERE Waypoints Sequence v8 (For solving the traveling salesman problem)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When only the types of APIs are considered, Mapbox also provides the same types of API. However, HERE’s route searching service also considers the realtime state of the traffic lights, search for routes that trucks can pass through, and even take in mind the range of electric vehicles (EV). It can be said that HERE’s API has a wide range of functionalities that are focused for logistics and transportation companies. &lt;/p&gt;

&lt;p&gt;The plugin that we developed uses the &lt;strong&gt;HERE Route matching v8&lt;/strong&gt; API, and if there is demand for other plugins, we are also considering the development of plugins for the other APIs as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  HERE Route API plugin
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MIERUNE" rel="noopener noreferrer"&gt;
        MIERUNE
      &lt;/a&gt; / &lt;a href="https://github.com/MIERUNE/qgis-here-api-plugin" rel="noopener noreferrer"&gt;
        qgis-here-api-plugin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      QGIS Plugin for HERE Route API
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;HERE Route API Plugin&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/MIERUNE/qgis-here-api-pluginimgs/icon.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FMIERUNE%2Fqgis-here-api-pluginimgs%2Ficon.png" alt="icon"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;QGIS Plugin for HERE API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://plugins.qgis.org/plugins/qgis-here-api-plugin" rel="nofollow noopener noreferrer"&gt;QGIS Python Plugins Repository&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Get Plugin&lt;/h3&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Install the plugin via &lt;a href="https://plugins.qgis.org/plugins/qgis-here-api-plugin" rel="nofollow noopener noreferrer"&gt;QGIS Python Plugins Repository&lt;/a&gt; or ZIP-file downloadable from releases.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Authentication&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Get API Key from &lt;a href="https://platform.here.com" rel="nofollow noopener noreferrer"&gt;HERE Platform&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;From the menu bar, select Plugin -&amp;gt; HERE Route API Plugin -&amp;gt; Config and enter your API Key.
&lt;a rel="noopener noreferrer" href="https://github.com/MIERUNE/qgis-here-api-pluginimgs/config.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FMIERUNE%2Fqgis-here-api-pluginimgs%2Fconfig.png" alt="config"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Functions&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Route matching&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Match any points in order to the most probably path, using the HERE Route Matching API.
&lt;a rel="noopener noreferrer" href="https://github.com/MIERUNE/qgis-here-api-plugin./imgs/mov.gif"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FMIERUNE%2Fqgis-here-api-plugin.%2Fimgs%2Fmov.gif" alt="mov"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Usage&lt;/h4&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Select Plugin -&amp;gt; HERE API Plugin -&amp;gt; Route Matching from the menu bar.&lt;/li&gt;
&lt;li&gt;Select a point layer.&lt;/li&gt;
&lt;li&gt;Select a sort field. (optional, default to &lt;code&gt;fid&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Select a route matching mode from car, bus, bicycle or pedestrian.&lt;/li&gt;
&lt;li&gt;Click OK and the trace will be added to the map canvas as a temporary layer.
&lt;a rel="noopener noreferrer" href="https://github.com/MIERUNE/qgis-here-api-pluginimgs/dialog.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FMIERUNE%2Fqgis-here-api-pluginimgs%2Fdialog.png" alt="dialog"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/MIERUNE/qgis-here-api-pluginimgs/export.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FMIERUNE%2Fqgis-here-api-pluginimgs%2Fexport.png" alt="export"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;br&gt;
This plugin can help you to match the trace of a large dataset, which including more than 400 points. However…&lt;/p&gt;


&lt;/blockquote&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MIERUNE/qgis-here-api-plugin" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
QGIS has to be install prior to using the plugin. Although the plugin works for any version of QGIS that starts with 3, we suggest using the latest LTR of QGIS, as the plugin may not work in versions that are too old.

&lt;h2&gt;
  
  
  Manual for the plugin
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open “manage and install plugins”&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqgxiy12y46erbm6816v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqgxiy12y46erbm6816v.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for HERE in the list of QGIS plugins and install the HERE Route API Plugin&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2d7ewnjis4y3vf0he8tf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2d7ewnjis4y3vf0he8tf.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm that the HERE Route API Plugin is installed in the plugin menu&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wfvgw8nbwmip9t53ng2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wfvgw8nbwmip9t53ng2.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Setting up the API key
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Get an API key at &lt;a href="https://platform.here.com/" rel="noopener noreferrer"&gt;HERE Platform&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;From the menu bar, open "Plugin", "HERE Route API Plugin", "Config", insert your API key and click on "OK"
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8rdh6aob4xelik378oql.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gc6q3ui23s2mfis6wow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gc6q3ui23s2mfis6wow.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Route matching
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jmxgh61sixilaedas4y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jmxgh61sixilaedas4y.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Route matching for this plugin conducts operations in which “The plugin takes any point layer as input, and outputs the likeliest line layer”. Because of the operation conducted by the plugin, this manual considers that a point layer exists in the QGIS project. (However, the number of features in the point layer is less than 10,000) The following explanation takes the point layer in the above image as the input. Moreover, as the API may only take 400 features at once, the request will be divided when the input layer has more than 400 features. More specifically, the plugin sends 400 features in each request, and then combine the results given by the APIs. From the menu bar open “plugin”, “HERE Route API Plugin”, and then “Route Matching”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foykksbpaql5zoe6bodtz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foykksbpaql5zoe6bodtz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the target point layer in the Layer pulldown list&lt;/li&gt;
&lt;li&gt;From the Sort Field pulldown list select the field that contains the order in which the points are lined up in (Optional, if it is empty, the fid field will automatically be used&lt;/li&gt;
&lt;li&gt;From the Mode pulldown list, select car, bus, bicycle or pedestrian&lt;/li&gt;
&lt;li&gt;Click on OK to start the operation&lt;/li&gt;
&lt;li&gt;When the operation is finished, the results will be shown&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8u7upf1gyg9qxr87b0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8u7upf1gyg9qxr87b0j.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With some acceptable deviations, the likeliest route that the points took will be shown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7lod599i7nwp6o1udz8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7lod599i7nwp6o1udz8.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Actually, the Route Matching API accepts a large amount of parameters. The input parameters used in the plugin is only the most general few of them. It is very difficult to utilize all of the input parameters, which also shows that the API supports a variety of use cases. As the QGIS plugin introduced in this article only covers a part of the functionalities, please also try the API yourself!&lt;/p&gt;

</description>
      <category>qgis</category>
      <category>gis</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
