SolverTech.Tasha.Plugins.Distances.HERE - Router
Wtyczka do wyznaczania matryc i tras z wykorzystaniem usług HERE
Instalacja
Automatycznie w instalacji domyślnej. W przypadku instalacji ręcznej musisz zainstalować trzy pliki w folderze Wtyczki:
SolverTech.Distances.HERE.dll (samodzielny router)
SolverTech.Tasha.Plugins.Distances.HERE.dll (wtyczka routera Tasha)
SolverTech.Tasha.Plugins.Distances.HERE.config (ustawienia wtyczek, patrz poniżej)
Zaloguj się HERE
Wtyczka korzysta z usług HERE, dlatego konieczne jest wypełnienie klucza Api (Ustawienia Tasha-> HERE> Klucz Api)
Starsze konta HERE
Starsze konta, które nie zostały jeszcze autoryzowane jednym kluczem API i używają identyfikatora aplikacji / kodu aplikacji do logowania dla matrycy i trasy w ustawieniach:
<Matrix><BaseUrl>https://matrix.route.api.here.com</BaseUrl></Matrix> … <Route><BaseUrl>https://route.api.here.com</BaseUrl></Route>
HERE API wersja 8
Nowsza wersja HERE (v8) jest wstecznie kompatybilna z obecną konfiguracją. APIv8 oferuje dokładniejsze i szybsze obliczenia, ale niektóre funkcje nie są w pełni zaimplementowane (np. ExcludeCountries), więc jest domyślnie wyłączony, a v7 jest nadal używany. Aby przejść na obliczenia APIv8, musisz włączyć Enable w 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>
Jednostki wagi i wymiarów samochodów ciężarowych
APIv7, na którym oparta jest konfiguracja wtyczki, używa ton dla masy jednostkowej i metrów dla wymiarów. Aby zachować kompatybilność wsteczną, dlatego zawsze zakłada się, że jednostki są określone w konfiguracji jako liczba float wskazująca tony / metry, a jeśli format zostanie zmieniony przez TUTAJ (np. Podczas przejścia na APIv8), wtyczka wykona konwersję wewnętrznie, bez interwencji lub wiedzy użytkownika.
Tolle
- APIv8 nie obsługuje jeszcze określania parametrów dla prawidłowego naliczania opłat drogowych, dlatego do naliczania opłat drogowych nadal wykorzystywana jest wersja 7.
Konfigurace
Globální
Parametr | Typ | Význam |
PersistentRoutes | bool | Zapisuje już obliczone trasy RouteID i WKT w osobnym pliku <Scenario> .routes. Przyspiesza wielokrotne wyświetlanie trasy na mapie wielokrotnie szybciej za cenę DB. |
CrowFlyFirst | bool | W przypadkach, gdy ważniejsze jest, aby wyniki były natychmiastowe, możliwe jest obliczenie odległości w linii prostej, zgodnie z wartościami dla konkretnego typu pojazdu, patrz parametry DistanceCoefficient i ApproxSpeedInKilometersPerHour. Dokładne wartości są następnie obliczane w tle. |
Sanity check
Dla każdej obliczonej odległości obliczany jest crowfly, a jeśli wartości różnią się znacząco, wyskakuje ostrzeżenie. Adresy miejsc dotkniętych problemem można odczytać z dziennika.
Parametr | Typ | Význam |
Enable | bool | Włącz sanity check |
MaxMultipleDifference | float | Jeśli crowfly różni się o tę wielokrotność od obliczonej odległości, pojawi się ostrzeżenie. Wartość domyślna: 10.0 |
MinimumDistanceInMeters | int | Ignoruj sprawdzanie, jeśli odległość jest mniejsza niż ustawiona wartość (W metrach). Wartość domyślna 1000. |
Macierz odległości
Parametr | Typ | Význam |
SearchRange | int | Ogranicz promień obszaru, w którym można wyszukać trasę. Niższa liczba przyspiesza obliczenia, ale może spowodować nieoptymalne rozwiązanie. W metrach |
UseDynamicRange | bool | To samo co SearchRange, z tą różnicą, że wartość SearchRange jest obliczana dynamicznie na podstawie odległości dwóch najdalszych punktów w macierzy. Podczas korzystania z UseDynamicRange SearchRange nie może być wypełniony |
SearchRangeDistanceCoefficient | float | Współczynnik do pomnożenia odległości między dwoma najbardziej zewnętrznymi punktami w macierzy SearchRange podczas korzystania z UseDynamicRange. Zazwyczaj 1,5-2,0 |
AllowedTimeRangeInMinutes | int | Dozwolone okno czasowe. |
EnableLastMileComputing | bool | Uwzględnia odległość i czas tzw. Ostatniej mili - odcinka, który musi pokonać w inny sposób (pieszo, na wózku inwalidzkim) między ostatnim punktem (droga bez wjazdu) a podanym adresem (wejście do budynku). Musisz ustawić „LastMileSpeedInMetersPerSecond” |
LastMileSpeedInMetersPerSecond | float | Prędkość wm / s, aby obliczyć czas spędzony na przejściu do ostatniej mili |
LastMileRadiusInMeters | int | Maksymalny promień wokół określonej lokalizacji w metrach, przy którym zostanie wykonane odwrotne geokodowanie w celu ustalenia lokalizacji nawigacji. |
UseCrowFlyCalculation | bool | Zawsze zwraca odległość i czas. Jeśli nie znajdzie trasy, oblicza wartości |
UseCarIfTruckNotFound | bool | Jeśli nie znajdzie trasy dla ciężarówki, użyj wartości czasu i odległości, jakby to był samochód |
CrowFlyDistanceCoefficient | float | Współczynnik, który zwielokrotnia bezpośrednią odległość między dwoma punktami podczas używania UseCrowFlyCalculation |
CrowFlyFirst | bool |
Najpierw oblicza odległości przez łom, a następnie oblicza odległości. Jeśli korzystamy z niego, konieczne jest posiadanie zdefiniowanych parametrów w “<Vehicle>” (DistanceCoefficient a CrowflyApproxSpeedInKilometersPerHour) |
CrowFlyApproxSpeedInKilometersPerHour | float | Prędkość km/h, aby określić czas za pomocą UseCrowFlyCalculation |
MinColumnCountInMtoNDistanceMatrixAPIRequest | int | Zmniejsza rozmiar wymagań dla serwerów HERE ze względu na optymalizację. Optymalnej wartości poszukuje się empirycznie i może ona zmieniać się z czasem. Możliwy zakres wartości to 10-100. Wartość domyślna: 15 |
NavigateCloserNumberOfSteps | int |
Jeśli router nie może znaleźć trasy, na przykład dlatego, że adres docelowy znajduje się w strefie zakazu wstępu, przesuwa punkt nawigacyjny bliżej pozycji wyjściowej i powtarza żądanie. Określa liczbę powtórzeń tego procesu, zanim znajdzie trasę lub porzuci proces i przejdzie do następnego kroku (obliczenia crowfly, jeśli włączone). Aby wyłączyć funkcjonalność, należy wpisać "0". Wartość domyślna: 0 (wyłączony) |
NavigateCloserStepInMeters | int |
Odległość w metrach, o którą przesuwany jest punkt nawigacyjny, patrz parametr ‘NavigateCloserNumberOfSteps’. Wartość domyślna: 20 |
Pozostałe parametry są zdefiniowane HERE i są opisane na strone https://developer.here.com/documentation/routing/dev_guide/topics/resource-calculate-matrix.html
Large scale matrix
Do obliczania dużych macierzy, gdzie klasyczna metoda obliczeniowa zajmuje dużo czasu, można wykorzystać Large Scale Matrix API (dalej LSM). Za pomocą LSM można obliczyć ogromne macierze (10,000 x 10,000) w ciągu kilku minut. Ograniczenia:
- LSM może być używany tylko na kontach HERE z planem "Zarządzane aktywa z optymalizacją", które korzystają z autoryzacji OAuth (mają wypełnione pola HERE "ID klucza dostępu" i "Sekret klucza" w ustawieniach Tashi)
- Na razie nie można stosować przewidywania ruchu drogowego
- Najmniejszy wymóg jest obliczany jako minimum 100 000 transakcji, w przypadku planów, w których każda transakcja jest płatna, zaleca się stosowanie LSM dla scenariuszy, w których jest minimum 317 miejsc (317x317 > 100 000 transakcji). Alternatywnie, ogranicz minimalną liczbę żądań za pomocą parametru MinElementsForLargeScaleMatrix.
Parametr | Typ | Význam |
EnableLargeScaleMatrix | bool |
Umożliwia obliczanie niektórych macierzy za pomocą LSM. Wartość domyślna: false |
MinElementsForLargeScaleMatrix | int | Jeśli zapytanie zawiera mniej niż określoną liczbę elementów, macierz nie zostanie obliczona przy użyciu LSM. Wartość domyślna: 1500 |
LargeScaleMatrixURL | string |
Adres URL interfejsu API LSM, na wypadek gdyby w przyszłości uległ zmianie Wartość domyślna: https://largescalematrix.router.hereapi.com/v1/matrix |
Przykład konfiguracji
<?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>