TAS:Pokročilé/Pluginy/SolverTech.Tasha.Plugins.Distances.HERE - Router: Porovnání verzí
Řádek 1: | Řádek 1: | ||
<languages /> | <languages /> | ||
= '''Plugin pro výpočet matice a trasy s využitím služeb HERE''' = <!--T:1--> | = '''Plugin pro výpočet matice a trasy s využitím služeb HERE''' = <!--T:1--> | ||
Řádek 403: | Řádek 403: | ||
</Vehicle> | </Vehicle> | ||
</DistancesHERESettings> | </DistancesHERESettings> | ||
Verze z 30. 8. 2022, 07:48
Plugin pro výpočet matice a trasy s využitím služeb HERE
Instalace
Automaticky ve výchozí instalaci. K manuální instalaci je potřeba nainstalovat tři soubory do složky Plugins:
SolverTech.Distances.HERE.dll (samostatný router)
SolverTech.Tasha.Plugins.Distances.HERE.dll (plugin pro Tashu využívající router)
SolverTech.Tasha.Plugins.Distances.HERE.config (nastavení pluginu, viz níže)
Přihlášení k HERE
Plugin využívá služeb HERE, je tedy nutné vyplnit Api Key (Tasha-Nastavení->HERE->Api Key)
Legacy HERE účty
Starší účty, které ještě nebyly převedeny na novou autorizaci pomocí jediného Api Key a využívají k přihlášení dvojici App ID/App Code (Tasha-Nastavení->HERE->App ID, App Code), je možné stále použít, je ale třeba změnit URL pro matici a trasu v nastavení:
<Matrix><BaseUrl>https://matrix.route.api.here.com</BaseUrl></Matrix> … <Route><BaseUrl>https://route.api.here.com</BaseUrl></Route>
HERE API verze 8
Novější verze HERE (v8) je zpětně kompatibilní se stávající konfigurací. APIv8 nabízí přesnější a rychlejší výpočty, ale některé funkce nejsou plně implementovány (např. ExcludeCountries), proto je ve výchozím stavu vypnuta a používá se stále v7. Pro přepnutí na výpočet pomocí APIv8 je nutné povolit Enable v ApiV8Settings na true:
<ApiV8Settings>
<Enable>true</Enable> <V8MatrixURL><https://matrix.router.hereapi.com/v8/matrix</V8MatrixURL> <V8RouteURL><https://router.hereapi.com/v8/routes</V8RouteURL>
</ApiV8Settings>
Jednotky pro váhu a rozměry u trucků
APIv7, ze kterého vychází i konfigurace pluginu, využívá pro jednotku hmotnost tuny a pro rozměry metry. V rámci zachování zpětné kompatibility se tedy vždy počítá s tím, že v konfiguraci jsou jednotky zadavány jako float číslo udávající tuny/metry a dojde-li ke změně formátu ze strany HERE (jako např. při přechodu na APIv8), plugin si konverzi provede vnitřně, bez zásahu a vědomí uživatele.
Mýtné
- APIv8 zatím nepodporuje upřesnění parametrů pro správný výpočet mýtného, proto se pro výpočet mýta stále používá verze 7.
Konfigurace
Globální
Parametr | Typ | Význam |
PersistentRoutes | bool | Uloží již jednou vypočtené RouteID a WKT tras do samostatného souboru <Scenario>.routes. Mnohonásobně zrychluje opakované zobrazení trasy na mapě za cenu velikosti DB. |
CrowFlyFirst | bool | Pro případy, kdy je důležitější mít výsledky okamžitě, je možné spočítat vzdálenosti vzdušnou čarou, dle hodnot pro konkrétní typ vozdila, viz parametry DistanceCoefficient a ApproxSpeedInKilometersPerHour. Přesné hodnoty se pak počítají na pozadí. |
Sanity check
Pro každou vypočtenou distanci se spočítá crowfly a liší-li se výrazně tyto hodnoty, vyskočí upozornění. Adresy dotčených míst lze vyčíst z logu.
Parametr | Typ | Význam |
Enable | bool | Povolit sanity check |
MaxMultipleDifference | float | Liší-li se crowfly o tento násobek oproti vypočtené distanci, vyskočí varování. Defaultní hodnota: 10.0 |
MinimumDistanceInMeters | int | Ignoruj kontrolu, je-li vzdálenost menší než nastavená hodnota (V metrech). Defaultní hodnota 1000. |
Matice vzdálenosti
Parametr | Typ | Význam |
SearchRange | int | Omezení okruhu oblasti, ve které lze hledat trasu. Nižší číslo urychluje výpočet, ale může mít za následek suboptimální řešení. V metrech. |
UseDynamicRange | bool | Stejný význam jako SearchRange, jen se hodnota pro SearchRange vypočítá dynamicky, dle vzdálenosti dvou nejvzdálenějších bodů v matici. Při použití UseDynamicRange nesmí být SearchRange vyplněný |
SearchRangeDistanceCoefficient | float | Koeficient pro vynásobení vzdálenosti dvou nevzdálenějších bodů v matici pro vypočtení SearchRange při užití UseDynamicRange. Musí být větší než 1. Typicky 1.5-2.0 |
AllowedTimeRangeInMinutes | int | Povolené časové okno. |
EnableLastMileComputing | bool | Zohlední vzdálenosti a času tzv. poslední míle - úseku, který musí překonat jiným způsobem (pěšky, s vozíkem) mezi posledním navigačním bodem (silnice před zákazem vjezdu) a zadanou adresou (vchodem objektu). Je třeba nastavit “LastMileSpeedInMetersPerSecond” |
LastMileSpeedInMetersPerSecond | float | Rychlost v m/s, pro výpočet času stráveného přesunem na poslední míli |
LastMileRadiusInMeters | int | Maximální rádius okolo zadaného místa v metrech, ve kterém se bude provádět reverse geokóding k určení navigačního místa. |
UseCrowFlyCalculation | bool | Vždy vrátí vzdálenost a čas. Nenajde-li trasu, vypočítá hodnoty |
UseCarIfTruckNotFound | bool | Nenajde-li trasu pro truck, použij hodnoty času a vzdálenosti jako by šlo o auto |
CrowFlyDistanceCoefficient | float | Koeficient, kterým se vynásobí přímá vzdálenost mezi dvěmi body, při užití UseCrowFlyCalculation |
CrowFlyFirst | bool |
Vypočte nejdříve vzdálenosti přes crowfly a poté dopočítává vzdálenosti. Pokud používáme je nutné mít i vydefinované parametry v “<Vehicle>” (DistanceCoefficient a CrowflyApproxSpeedInKilometersPerHour) |
CrowFlyApproxSpeedInKilometersPerHour | float | Rychlost v km/h pro určení doby při užití UseCrowFlyCalculation |
MinColumnCountInMtoNDistanceMatrixAPIRequest | int | Snižuje velikost požadavku na HERE servery, z optimalizačních důvodů. Optimální hodnota se hledá empiricky, může se časem změnit. Možný rozsah hodnot 10-100. Defaultní hodnota:15 |
NavigateCloserNumberOfSteps | int |
Nenajde-li router trasu např. kvůli tomu, že je cílová adresa v zákazu vjezdu, přesune navigační bod blíže k startovní pozici a zopakuje požadavek. Určuje počet opakování tohoto procesu, než najde trasu nebo proces vzdá a přejde k dalšímu kroku (výpočet přes crowfly, je-li povolen). Pro vypnutí funkcionality je nutné zadat '0'. Defaultní hodnota: 0 (vypnuto) |
NavigateCloserStepInMeters | int |
Vzdálenost v metrech, o kterou se posune navigační bod, viz parametr ‘NavigateCloserNumberOfSteps’. Výchozí hodnota: 20 |
Zbylé parametry jsou definované ze strany HERE a jsou popsané na https://developer.here.com/documentation/routing/dev_guide/topics/resource-calculate-matrix.html
Large scale matrix
Pro výpočet velkých matic, kdy klasický způsob výpočtu trvá dlouho, je možné použít výpočet pomocí Large Scale Matrix API (dále jen LSM). Pomocí LSM lze vypočítat obrovské matice (10 000 x 10 000) v řádu několika minut. Omezení:
- LSM lze použít pouze na HERE účtech s plánem “Managed Assets with Optimization”, které používají OAuth autorizaci (v nastavení Tashi mají vyplněné HERE údaje “Access Key ID” a “Key Secret”)
- Prozatím nelze použít predikci dopravní situace
- Sebemenší požadavek se počítá minimálně jako 100 000 transakcí, u plánů, kde se platí za každou transakci je vhodné používát LSM u scénářů, kde je minimálně 317 míst (317x317 > 100 000 transakcí). Případně omezit minimální počet požadavků pomocí parametru MinElementsForLargeScaleMatrix.
Parametr | Typ | Význam |
EnableLargeScaleMatrix | bool |
Umožní pro určité matice výpočet pomocí LSM. Výchozí hodnota: false |
MinElementsForLargeScaleMatrix | int | Obsahuje-li požadavek méně než zadaný počet elementů, matice se nebude počítat pomocí LSM. Výchozí hodnota: 1500 |
LargeScaleMatrixURL | string |
URL pro LSM API, pro případ, kdyby se v budoucnu změnila Výchozí hodnota: https://largescalematrix.router.hereapi.com/v1/matrix |
Příklad konfigurace
<?xml version="1.0" encoding="utf-8"?> <DistancesHERESettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PersistentRoutes>true</PersistentRoutes> <SanityCheck> <Enable>true</Enable> <MaxMultipleDifference>5.0</MaxMultipleDifference>
<MinimumDistanceInMeters>1000</MinimumDistanceInMeters>
</SanityCheck>
<Matrix>
<BaseUrl>https://matrix.route.ls.hereapi.com</BaseUrl> <Path>/routing/7.2</Path> <Resource>/calculatematrix</Resource> <Format>.json</Format> <Parameters> <Parameter> <Name>searchRange</Name> <Value>1000000</Value> </Parameter> <Parameter> <Name>matrixAttributes</Name> <Value>none,su</Value> </Parameter> <Parameter> <Name>summaryAttributes</Name> <Value>none,tt,di</Value> </Parameter> <Parameter> <Name>AllowedTimeRangeInMinutes</Name> <Value>60</Value> </Parameter> <Parameter> <Name>EnableLastMileComputing</Name> <Value>true</Value> </Parameter> <Parameter> <Name>NavigateCloserNumberOfSteps</Name> <Value>3</Value> </Parameter> <Parameter> <Name>NavigateCloserStepInMeters</Name> <Value>20</Value> </Parameter> <Parameter>
<Name>EnableLargeScaleMatrix</Name> <Value>false</Value> </Parameter> <Parameter> <Name>MinElementsForLargeScaleMatrix</Name> <Value>1500</Value> </Parameter> <Parameter> <Name>LargeScaleMatrixURL</Name> <Value>https://largescalematrix.router.hereapi.com/v1/matrix</Value> </Parameter> <Parameter>
<Name>CrowFlyFirst</Name> <Value>true</Value> </Parameter> </Parameters> </Matrix> <Route> <BaseUrl>https://route.ls.hereapi.com</BaseUrl> <Parameters> <Parameter> <Name>representation</Name> <Value>overview</Value> </Parameter> <Parameter> <Name>routeAttributes</Name> <Value>none,sm,sh</Value> </Parameter> <Parameter> <Name>alternatives</Name> <Value>9</Value> </Parameter> <Parameter> <Name>language</Name> <Value>cs-cz</Value> </Parameter> </Parameters> </Route> <Vehicle> <ArrayOfParameter> <Parameter> <Name>mode</Name> <Value>fastest;car;traffic:enabled</Value> </Parameter> <Parameter> <Name>DistanceCoefficient</Name> <Value>2.0</Value> </Parameter> <Parameter> <Name>CrowflyApproxSpeedInKilometersPerHour</Name> <Value>60.0</Value> </Parameter> </ArrayOfParameter> </Vehicle> </DistancesHERESettings>