"Jāņa sēta" piedāvā vairākus uz Valhalla bāzes veidotus servisus kravas (smagā) autotransporta maršrutēšanai.
- Maršruta izveides serviss (route) ļauj izveidot maršrutu starp diviem vai vairākiem punktiem.
- Attāluma tabulas serviss (table) atgriež attāluma un ceļā pavadāmā laika vērtības starp definētajiem sākumpunktiem un galapunktiem, ļaujot atrast katram sākumpunktam tuvākos galapunktus.
Kā maršrutēšanas dzinējs tiek izmantota Valhalla. Maršrutu veidošanai un citiem servisiem tiek izmantoti "Jāņa sētas" ceļu dati Latvijā un OSM (OSM contributors) dati Igaunijā un Lietuvā. Maršrutēšanā Pēc noklusējuma tiek ņemti vērā gan masas, gan gabarītu (augstums, platums, garums) ierobežojumi. Papildu šiem datiem reizi dienā tiek atjaunoti dinamiskie un virtuālie masas un gabarītu ierobežojumi no Latvijas Valsts ceļu Nacionālā piekļuves punkta. Atšķirībā no parastās maršrutēšanas, kravas maršrutēšanā ir vairāki citi pieprasījuma parametri, kas specifiski pielāgoti kravas pārvadāšanas vajadzībām.
Maršruta izveides serviss
Maršruta izveides serviss ļauj izveidot maršrutu starp diviem vai vairākiem punktiem.
Servisa URL
Servisa saitei jāatbilst šādai formai:
https://api.kartes.lv/v3//directions/cargo/{service}/{coordinates}?
Atgriezto datu formāts ir JSON.
HTTP metode var būt GET vai POST.
Standarta maršruta izveide
Standarta maršruta izveides serviss (route) ļauj izveidot kravas (smagā autotransporta) maršrutu starp diviem vai vairākiem punktiem (maksimāli 50 punkti).
Servisa saitei jāatbilst šādai formai:
https://api.kartes.lv/v3//directions/cargo/route/{coordinates}?
Pieprasījuma parametri
Iespējams padot šādus GET parametrus:
| Parametrs | Skaidrojums | Vērtības |
|---|---|---|
| profile | Maršrutēšanas veids. | cargo Obligāts |
| coordinates | Maršruta galapunktu koordinātas (koordināšu pāri WGS-84 (EPSG:4326) koordinātu sistēmā). Iespējams padot līdz 50 punktiem. | x1,y1;x2,y2;…;xn,yn, kur:
|
| alternatives | Alternatīvo maršrutu skaits. Alternatīvos maršrutus atgriež atkarībā no maršruta (visiem maršrutiem var neatgriezt) |
|
| geometries | Atgrieztās ģeometrijas formāts. |
|
| steps | Maršruta informācija pa tā posmiem. | Formāts: true/false
|
| overview | Pārskata ģeometrija — vienkāršota vai detalizēta. |
|
| continue_straight | Norāda, vai maršruta galapunktos drīkst apgriezties braukšanai pretējā virzienā. |
|
| exclude_unpaved | Vai izvairīties no neasfaltētiem ceļiem | Formāts: true/false
|
| weight | Transportlīdzekļa masa (t) | Formāts: jebkurš pozitīvs decimālskaitlis. Pēc noklusējuma: 21.77. Neobligāts |
| height | Transportlīdzekļa augstums (m) | Formāts: jebkurš pozitīvs decimālskaitlis. Pēc noklusējuma: 4.0. Neobligāts |
| length | Transportlīdzekļa garums (m) | Formāts: jebkurš pozitīvs decimālskaitlis. Pēc noklusējuma: 21.5. Neobligāts |
| width | Transportlīdzekļa platums (m) | Formāts: jebkurš pozitīvs decimālskaitlis. Pēc noklusējuma: 2.6. Neobligāts |
| axle_load | Maksimālā slodze uz vienas ass | Formāts: jebkurš pozitīvs decimālskaitlis. Pēc noklusējuma: 9 Neobligāts |
| axle_count | Asu skaits (lai aprēķinātu slodzi uz ass) | Formāts: jebkurš pozitīvs vesels skaitlis. Pēc noklusējuma: 5
|
| top_speed | Transportlīdzekļa maksimālais ātrums (km/h) | Formāts: jebkurš pozitīvs skaitlis. Pēc noklusējuma: 90 Neobligāts |
| use_ferry | Vēlme izmantot prāmjus | Formāts: skaitlis starp 0 un 1 Pēc noklusējuma: 1 Neobligāts |
| use_highways | Vēlme izmantot automaģistrāles | Formāts: skaitlis starp 0 un 1 Pēc noklusējuma: 1 Neobligāts |
| use_tolls | Vēlme izmantot izmantot maksas ceļus | Formāts: skaitlis starp 0 un 1 Pēc noklusējuma: 1 Neobligāts |
| use_living_streets | Vēlme izmantot izmantot dzīvojamo zonu ielas | Formāts: skaitlis starp 0 un 1 Pēc noklusējuma: 0.5 Neobligāts |
| use_tracks | Vēlme izmantot grūti izbraucamus zemesceļus | Formāts: skaitlis starp 0 un 1 Pēc noklusējuma: 0 Neobligāts |
| ignore_access | Ignorēt piekļuves ierobežojumus | Formāts: true/false
|
| exclude_polygons | Šķērsošanai aizliegtā teritorija | Formāts: daudzstūra virsotņu koordinātas JSON formātā (piemēram, [[[24.175294481,56.926900345],[24.175347848,56.927333544],[24.174760811,56.927260738],[24.175294481,56.926900345]]]) Pēc noklusējuma: nav izmantots. Neobligāts |
| country_crossing_penalty | Sods par valsts robežas šķērsošanu sekundēs (mudina izvairīties no tranzīta caur kaimiņvalsti). Sods neietekmē maršruta ilguma aprēķinu. | Formāts: jebkurš pozitīvs skaitlis starp 0 un 10 000. Pēc noklusējuma: 0. Neobligāts |
| date_time | Laika zīmogs (timestamp) ar sekundēm un laika zonu. Ļauj veidot precīzākus maršrutus ārpus pašreizējā laika, ņemot vērā ierobežojumus ar laika logiem, kā arī vidējo satiksmes ātrumu. | Formāts: 2026-04-09T00:00:00Z", "2026-04-09T14:30:00+02:00" Pēc noklusējuma: pašreizējais laiks. Neobligāts |
| date_time_type | Padotā laika zīmoga nozīme |
|
Atbildes parametri
Atbildē tiek atgriezti šādi parametri un objekti:
| Parametrs | Skaidrojums |
|---|---|
| code | Pieprasījuma sekmīgums. Ja sekmīgs, atbilde ir ok. |
| waypoints | Galapunktu objekts |
| distance | Attālums no dotajām koordinātām līdz galapunkta koordinātām metros. |
| location | Atrašanās vietas (galapunkta, krustojuma, manevra) koordinātas, kuras tiek izmantotas doto koordinātu vietā (atrodas uz dotā ceļa tīkla). |
| name | Galapunkta ielas nosaukums (ja ir). |
| routes | Maršrutu objekts. |
| legs | Maršruta posma starp diviem galapunktiem (RoutLeg) objekts. Posmam vai posmiem (ja ir vairāk nekā divi galapunkti) seko distance, duration, weight, summary parametri. |
| steps | Maršruta soļu apraksta objekts. Solim seko vairāki parametri (to skaitā location (atrašanās vietas (galapunkta, krustojuma, manevra) koordinātas, kuras tiek izmantotas doto koordinātu vietā (atrodas uz ceļa tīkla)). |
| weight | Svars (tiek izmantots prioritizēšanā). |
| distance | Garums metros. |
| summary | Maršruta posma aprakstošs nosaukums (piemēram, "Daugavgrīvas iela, Krišjāņa Valdemāra iela"). |
| duration | Ilgums sekundēs. |
| weight_name | Svara profila nosaukums. |
| geometry | Maršruta ģeometrija. Atkarīga no overview parametra, formātu nosaka geometries parametrs. |
| weight | Svars (tiek izmantots maršrutu prioritizēšanā). |
| distance | Garums metros. |
| duration | Ilgums sekundēs. |
Statusa kodi
| Kods | Skaidrojums |
|---|---|
| 200 | Wrong input data. Tiek atgriezts, ja vaicājumā nav ievadīti vai nav korekti ievadīti pieprasījuma parametri. |
| 404 | No location found. Tiek atgriezts, ja nekas nav ticis atrasts. |
| 5xx | Servera kļūda. |
Paraugi
Pieprasījums:
https://api.kartes.lv/v3//directions/cargo/route/24.063475,56.815017;24.506378,56.802025?overview=full&steps=true
Atbilde:
{
"routes": [
{
"weight_name": "truck",
"weight": 1186.615,
"duration": 1284.275,
"distance": 30271.357,
"legs": [
{
"via_waypoints": [],
"admins": [
[]
],
"weight": 1186.615,
"duration": 1284.275,
"steps": [],
"distance": 30271.357,
"summary": "A5, Rīgas HES–Jaunjelgava"
}
],
"geometry": "mxujkBoou{l@mWfEkR~Cct@vLw|AjWwLvBo_E~p@wQrDkCz@{OnFwLzEwGrDwBnAcGzEsD~C_IbGoP~Rs|BzyDcBjC{JbLg@RoFzEcG~CsIrDoAf@oFjCoFnA{Ez@gr@nFoKwG_D{E_DsIwB_N?oKf@_IRcQ~f@skCrDgTbt@kkEfm@gyDrv@w|Fns@kbG~MoqAfTczBvQwuBrjAobPnlAkqQ~iAwmPbQcnCzdBocWj\\_{Eb[svE~iAwwPjoC_fa@z@cLbe@wdHr]ccFjz@c_MzTkmDfEcy@bGwhAfJw_CvLsiDbBwy@jCchAbBw~@z@{w@z@co@bBcqDRcuGkC_rBScL?sDgEopDwBccA_SouI_Ic}CwBwcA{@sSs{@ku^_NgzF_I{jDsNs~F_D_tA_DsyA_NsoFoFskC?wLRcGRsDf@sDnAoFjC{JRg@nAcBz@oARg@z@wBz@kCz@_Df@_DR_Df@sD?_DRsDSsD?sDScBS{@SsDg@_D{@kC{@kC{@kC{@wBoAcBoAcBSS_DoFwB{EcBoFoAkHoAoK{@wLcBwQcB{h@wGktCoK{cEwL{kFs]w`OwBsq@kCw~@wBkp@{JkqBsDkz@fEwBrDsD~C{EvBkHbBsIf@cGf@cBRgJ?g@?oAS{E?cBS{@g@kHcBsIkCwG_DcGsDsDgEcB{Eg@{Ef@gJknAoP_|BwGco@oFoi@oFoi@_NkxAgY{}Bs]g}BkWoeB{@sD_yA_uHsXstAwxCcxMsoAg_GkRg|@w`@{dBcrAscGwG{YoZguA_]w|AwQ_`AgTs`AwQgaAcLsv@_Icj@wG{r@kH{|@kCsg@cGsmBg@sl@Rg}BzEgrE?sDzE_lEbB{gCz@obAbGwyEf@stAvB{iBbGk|DbQ{qMzEopDnAgaAjCscBjMceJbB{fArDwmAzE_tAjHwwAjHguAbcAwcPrDgm@fEsl@~HsoAzEsv@rN{xBjk@kpJnA_SrIo`BnPowC?wBrD_{@bBct@?sD~CwuB~CkjC~CwgDjC_xDbBc_Cz@ku@bBsyAR_Sz@soARco@f@s]f@w~@R{^Rce@nA{pAz@kz@z@knAbGsrGRsXbBg}B~CouDnFggHrIg}L~CcuBrIwbDrDwt@~HolAbG_`AbL_tAnPoeBnKkdArDc`@v`@kaE~p@kvGb`@{eDfTc|AvV_~Aja@{sB~z@snD~a@guAzr@w_CbGgTnKo_@~k@wpBrI{Y~_AowCv`@wmAjM_b@vBkHf@cBz{C_eKvt@o~BzbCofIjW_v@bmAceEzm@{lCjCoPve@{vCbBoKpL{I"
}
],
"waypoints": [
{
"distance": 14.43,
"name": "Baloži–Plakanciems–Iecava",
"location": [24.06324, 56.814999]
},
{
"distance": 8.933,
"name": "",
"location": [24.506244, 56.801993]
}
],
"code": "Ok"
}
Pielietošanas piemērs
Pielietošanas piemērs maršrutēšanas servisa pielietošanai un attēlošanai Leaflet karšu bibliotēkā.
Jāimportē Leaflet bibliotēka (vajadzētu izmantot aktuālo versiju atbilstoši dokumentācijai):
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
crossorigin=""/>
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
crossorigin=""></script>
HTML kodā jāizveido kartes elements:
<div id="map" style="width: 100%; height: 100vh;"></div>
JavaScript kodā jāizveido karte im jādefinē maršrutēšanas API klase:
const api_key = 'your_api_key_here'; // Replace with your actual API key
const map = L.map('map', {
layers: [
L.tileLayer.wms(`https://wms{s}.kartes.lv/${api_key}/wgs/15bw/`, {
subdomains: ['', '1', '2', '3', '4'],
attribution: '<a href="https://balticmaps.eu" target="_blank">Jāņa sēta</a>',
}),
],
center: [56.96, 24.11],
zoom: 12,
})
class DirectionsApi {
constructor() {
this.apiKey = api_key;
this.baseUrl = 'https://api.kartes.lv/v3';
}
// Method to fetch directions
async getDirections(coordinates, options = {}) {
const coords = coordinates.map(innerArray => innerArray.join(',')).join(';');
// Allow various options to be passed to the API
const queryString = new URLSearchParams({
overview: options.overview || 'full',
steps: options.steps || 'true',
geometries: options.geometries || 'geojson',
source: options.source || 'first',
destination: options.destination || 'last',
}).toString();
const url = `${this.baseUrl}/${this.apiKey}/directions/cargo/route/${coords}?${queryString}`;
try {
const response = await fetch(url);
// Check if the response is ok (status code 200-299)
if (!response.ok) {
throw new Error(`Error fetching data: ${response.statusText}`);
}
const data = await response.json();
return { success: true, data };
} catch (error) {
console.error('Fetch error:', error);
return { success: false, error: error.message };
}
}
}
Vēl nepieciešams maršrutu pārveidot attēlojamā GeoJSON formātā. To var izdarīt, piemēram, ar šādu funkciju, kas GeoJSON formātā ieraksta gan visu maršrutu, gan tā posmus, gan pieturpunktus:
const convertToGeoJSON = (data) => {
if (data.code !== "Ok") {
throw new Error("Invalid data");
}
const geojson = {
type: "FeatureCollection",
features: []
};
// Convert trips to GeoJSON features
data.trips.forEach(trip => {
// Add the main trip route as a LineString
geojson.features.push({
type: "Feature",
geometry: trip.geometry,
properties: {
type: "trip",
summary: trip.legs.map(leg => leg.summary).join(", "),
weight: trip.weight,
duration: trip.duration,
distance: trip.distance
}
});
// Add each step in the trip as a separate feature
trip.legs.forEach(leg => {
leg.steps.forEach(step => {
geojson.features.push({
type: "Feature",
geometry: step.geometry,
properties: {
type: "step",
mode: step.mode,
maneuver: step.maneuver,
name: step.name,
duration: step.duration,
distance: step.distance,
drivingSide: step.driving_side,
intersections: step.intersections
}
});
});
});
});
// Convert waypoints to GeoJSON features
data.waypoints.forEach(waypoint => {
geojson.features.push({
type: "Feature",
geometry: {
type: "Point",
coordinates: waypoint.location
},
properties: {
type: "waypoint",
waypoint_index: waypoint.waypoint_index,
trips_index: waypoint.trips_index,
distance: waypoint.distance,
name: waypoint.name
}
});
});
return geojson;
}
Visbeidzot iespējams pielietot izveidoto API klasi:
// Instantiate the DirectionsAPI class with your API key
const api = new DirectionsAPI(api_key);
// Example stops
const coordinates = [
[24.063475, 56.815017],
[24.506378, 56.802025],
[23.792679, 56.768295]
];
api.getDirections(coordinates)
.then(result => {
if (!result.success) {
console.error('Error:', result.error); // Handle the error
return;
}
// Add the route in GeoJSON format to the map
L.geoJSON(convertToGeoJSON(result.data), {
style: (feature) => {
color: "rgba(20, 137, 255, 0.7)",
weight: 5
}
}).bindPopup((layer) => {
return `${layer.feature.properties.distance} m`
}).addTo(map);
});
Attālumu tabulas (distance matrix) serviss
Attālumu tabulas jeb matricas (distance matrix) serviss ļauj saņemt kravas auto maršruta attālumu un pārvietošanās laiku starp visiem norādītajiem koordināšu pāriem (piem., novērtēt visus attālumus starp četrām Latvijas pilsētām, iegūstot vērtības Rīga—Cēsis, Rīga—Valmiera, Rīga—Sigulda, Valmiera—Cēsis, Valmiera—Sigulda, Sigulda—Cēsis; atrast ātrāk sasniedzamo veikalu no konkrētas vietas (piem., pašreizējās atrašanās vietas koordinātām)). Servisam var padot ne vairāk kā 50 koordinātu pāru. Pieprasījumā jādefinē, kuras koordinātas ir "izejas punkti"/sākumpunkti (sources) un uz kuriem punktiem jāveic ceļš (destinations). Var izmantot gan autobraucēju, gan gājēju profilu.
Attālumu tabulas pieprasījuma papildu parametri
Servisa saitei jāatbilst šādai formai:
https://api.kartes.lv/v3//directions/cargo/table/{coordinates}?
Papildu maršrutu izveides servisam padotajiem parametriem, jāizmanto šādi papildu parametri:
| Parametrs | Skaidrojums | Vērtības |
|---|---|---|
| sources | Definē, kuri no koordinātu pāriem ir sākumpunkti, no kurienes jārēķina pārvietošanās ilgums vai attālums. Tie jānorāda, balstoties ievadīto koordināšu secībā. |
|
| destinations | Definē, kuri no koordinātu pāriem ir galamērķi, uz kuriem jārēķina pārvietošanās ilgums vai attālums. Tie jānorāda, balstoties ievadīto koordināšu secībā. |
|
Attālumu tabulas papildu parametri
| Parametrs | Skaidrojums |
|---|---|
| code | Pieprasījuma izpildes statuss. Ja sekmīgs, atbilde ir Ok. Ja maršrutu nav iespējams aprēķināt, var tikt atgriezta vērtība NoTable. |
| sources | Masīvs ar sākumpunktu objektiem. Katrs objekts satur punkta koordinātas (location), punkta nosaukumu (atvasinās no ielas; name) un attālumu no ceļa tīkla metros (distance) |
| destinations | Masīvs ar galamērķu objektiem. Katrs objekts satur punkta koordinātas (location), punkta nosaukumu (atvasinās no ielas; name) un attālumu no ceļa tīkla metros (distance) |
| durations | Divdimensiju masīvs ar matricu, kas atgriež pārvietošanās laika vērtības sākumpunkts-galapunkts secībā. Rezultātu secību nosaka ievadīto sākumpunktu secība. Ilgums tiek atgriezts sekundēs. |
| distances | Divdimensiju masīvs ar matricu, kas atgriež attāluma vērtības sākumpunkts-galapunkts secībā. Rezultātu secību nosaka ievadīto sākumpunktu secība. Attālums tiek atgriezts metros. |
Paraugi
Pieprasījums (lai atgrieztu ilgumus starp atrašanās vietām — ⚠️ nav pieejams ar DEMO atslēgu):
https://api.kartes.lv/v3//directions/cargo/table/24.003239,56.933707;24.282145,57.003296;23.125405,57.333013;24.405398,57.317922?sources=0;1&destinations=2;3
Atbilde:
{
"code": "Ok",
"sources": [
{
"location": [24.00324, 56.9337],
"name": "Grenču iela",
"distance": 0.781
},
{
"location": [24.282183, 57.00326],
"name": "",
"distance": 4.552
}
],
"destinations": [
{
"location": [23.12539, 57.33297],
"name": "Lielā iela",
"distance": 4.87
},
{
"location": [24.4054, 57.317933],
"name": "",
"distance": 1.313
}
],
"durations": [
[6252, 6210],
[8356, 3904]
],
"distances": [
[86174, 75406],
[110802, 51336]
]
}