Uzun rotalar ve çok sayıda nokta
Birçok TMS ve planlama sistemi rotayı kendisi hesaplar (ör. Azure Maps, Google veya TomTom ile) ve ardından yalnızca tam olarak bu rota için geçiş ücretine ihtiyaç duyar. Bunun için planlanan koordinatlar nokta olarak TollCalc API'sine gönderilir.
Noktaların gönderilmesi
POST /api/calculate, origin, destination ve isteğe bağlı via (ara noktalar) kabul eder. Her nokta bir adres ya da "lat;lon" biçiminde bir koordinattır.
curl -X POST https://app.tollcalc.eu/api/calculate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"origin": "48.1374;11.5755",
"destination": "52.5200;13.4050",
"via": ["49.0134;12.1016", "50.1109;8.6821"],
"vehicle": { "weight": 40, "axles": 5, "emission_class": "euro6", "co2_class": "class_1" }
}'
Sınırlar ve sunucu tarafında downsampling
Yönlendirme motoru istek başına sınırlı sayıda nokta işler (şu anda toplam 50, yani başlangıç + hedef + 48 via). TollCalc bunu akıllıca yönetir:
- Adresler (önce geokodlanması gerekir): en fazla 48
via. Daha fazla adres → HTTP 400. - Koordinatlar (
"lat;lon"): daha fazla gönderebilirsiniz. TollCalc zinciri sunucu tarafında sınıra indirir (downsampling). Başlangıç ve hedef her zaman korunur ve rotanın şekli Douglas-Peucker ön seçimiyle önceliklendirilir. Hiçbir kesim kesilmez.
Önemli: Downsampling yalnızca tüm noktalar koordinat (
"lat;lon") olduğunda çalışır. Bir adres dahil olduğu anda 48viasınırı geçerli olmaya devam eder.
Sapma kontrolü (kalite güvencesi)
İndirgenmiş nokta zinciri teorik olarak rotayı bozabileceğinden, TollCalc kaliteyi otomatik olarak kontrol eder: hesaplanan rota orijinal noktalarınızla karşılaştırılır ve maksimum sapma rota uzunluğuna göre değerlendirilir.
- ≤ %2 → normal yanıt; sapma
geometry_deviation_kmalanındadır. - > %2 → HTTP 400,
errorve açıklayıcıwarningile.
Reddedilen bir istek örneği:
{
"error": "Downsampling-Abweichung zu groß",
"warning": "Die aus den Stützpunkten berechnete Route weicht zu stark von der Eingabe ab: max. 67.87 km bzw. 2.14 % der Strecke (erlaubt 2 %). Bitte dichtere oder mehr Koordinaten im Format \"lat;lon\" senden."
}
(API mesajı şu anda Almanca'dır.)
Başarılı bir downsampling sonrasında yanıt ayrıca şunları içerir:
| Alan | Anlam |
|---|---|
route_source |
"downsampled" (azaltma gerekmediyse yok) |
waypoints_submitted |
gönderilen destek noktası sayısı |
waypoints_used |
gerçekte yönlendirilen nokta sayısı |
geometry_deviation_km |
noktalarınızın hesaplanan rotadan maksimum sapması |
Neden map matching yerine noktalarla yönlendirme?
Gönderilen bir polilini, kendimiz yönlendirmek yerine map matching ile yol ağına oturtulabilirdi. TollCalc bunu bilinçli olarak yapmaz – basit bir nedenden: geçiş ücreti tam olarak kat edilen rotaya bağlıdır.
Ücret; ilgili otoyol kesimine, işletmeciye, tünellere ve özel ücretlere, sisteme (açık/kapalı) ve ülkeye göre değişir. Başka bir çıkış veya paralel bir yol bile yanlış geçiş ücreti demektir. Rota bu nedenle %100 doğru olmalıdır – "yaklaşık" değil.
Ancak map matching sonucu girişin kalitesine büyük ölçüde bağlıdır:
- GPS gürültüsü, örnekleme oranı ve gönderilen noktaların projeksiyonu,
- tüneller, feribotlar veya sinyal kaybından kaynaklanan boşluklar,
- üçüncü taraf sistemlerden gelen "basitleştirilmiş" veya yumuşatılmış polilinler.
Dışarıdan bakıldığında bilemeyiz: gönderilen geometri gerçekten kat edilen rota mı, yoksa basitleştirilmiş/bozulmuş bir sürüm mü? garbage in, garbage out ilkesine göre, müşterinin hiç gitmediği bir rota için ücret bildiririz – hem de fark edilmeden.
Bu nedenle bilinçli yaklaşım:
- Gönderilen noktalar bağlayıcı noktalardır, sadece "öneri" değil. Motor bunlardan, her noktadan doğru sırayla geçen garantili sürülebilir bir rota oluşturur.
- Sonuç yeniden üretilebilirdir ve orijinal noktalarınıza göre sapma ölçülebilir ve bildirilir.
- Kalite güvencesini (downsampling + sapma kontrolü) biz üstleniriz – müşteri değil. Müşteri %100 doğru bir rota vermek veya map matching çalıştırmak zorunda değildir: planladığı rotayı gönderir, geçiş ücretine uygun doğru rotayı biz sağlarız.
Ödünleşim bilinçlidir: gönderilen noktaların net bir rota vermediği durumda şeffaf bir reddetme (gerekçeli HTTP 400), sessizce yanlış bir geçiş ücretinden daha iyidir. Map matchingimiz kanıtlanabilir şekilde sağlam olduğunda yeniden değerlendireceğiz – o zamana kadar noktalarla yönlendirme güvenilir seçim olarak kalır.
Ne zaman zorlaşır
Downsampling normal uzun mesafe seferlerinde çok güvenilirdir. Şu durumlarda zorlaşır:
- Çok uzun, birkaç günlük seferler – rota uzadıkça downsampling sonrası nokta aralığı büyür.
- Çok sayıda küçük durak ve döngü içeren dağıtım seferleri.
- Feribot veya yükleme kesimleri (GPS izinde büyük boşluklar): karayolu rotası belirgin şekilde sapabilir.
- GPS aykırı değerleri (kötü fix, tünel): tek bir hatalı nokta sapmayı yükseltebilir.
- Bilinçli ücretsiz rotalar: motor başka bir yola girerse ücret de değişir.
TMS entegrasyonları için en iyi uygulamalar
- İstek başına bir sefer – birkaç günün konum geçmişini göndermeyin.
- Çok noktanız varsa adres yerine koordinat kullanın.
- Yeterince yoğun örnekleme – kilometre başına yaklaşık 1 nokta yeterlidir.
- GPS'i temizleyin: hatalı fix'leri (
gpsFix=false, yüksekaccuracy) kaldırın. - Feribot/yükleme kesimlerini ayrı istekler olarak ele alın.
- Veri kalitesini izlemek için
geometry_deviation_kmdeğerini loglayın/izleyin.
Dürüst değerlendirme
TollCalc, yönlendirme motorunun kat ettiği rota için geçiş ücretini hesaplar. Yoğun koordinat zincirlerinde uyum çok yüksektir (pratikte genellikle %1'in altında), ancak – map matchingden farklı olarak – 1:1 garanti değildir. Sapma kontrolü bu belirsizliği şeffaf kılar.