در حال بارگذاری

پرش به مطلب اصلی

سرویس مسیریابی پیش‌بینی براساس الگوهای ترافیکی

این سرویس با تحلیل داده‌های ترافیکی جمع‌آوری‌شده، بهترین مسیر را براساس زمان حرکت از مبدأ یا زمان رسیدن به مقصد پیشنهاد می‌دهد. این قابلیت به کاربران کمک می‌کند تا با تعیین زمان سفر برای روزهای آینده (در بازه‌ یک هفته‌ پیش‌رو)، برنامه‌ریزی دقیق‌تری برای سفرهای خود داشته باشند.

نکته

درحال‌حاضر، این سرویس برای سه شهر تهران، مشهد و کرج فعال است.

اطلاع
  1. ۱

    اولین قدم ثبت‌نام و دریافت API KEY برای اپلیکیشنی است که قصد دارید در آن از Map Api نشان استفاده کنید. کافیست در لینک فوق فرم مربوطه را تکمیل کنید تا بلافاصله API KEY را دریافت نمایید.

  2. ۲

    Api Key دریافتی از پنل توسعه‌دهندگان نشان را به صورتی که در ادامه مشاهده می‌کنید از طریق کلید Api-Key در header درخواست سرویس بگنجانید.

  3. ۳

    درخواست خود را با توجه به پارامترهایی که مربوط به سرویس موردنظرتان است با متد GET فراخوانی کنید.

  4. ۴

    چنانچه درخواست شما با موفقیت پردازش و پاسخ داده شود، خروجی با فرمت JSON دریافت خواهید کرد و چنانچه به هر دلیل خطایی رخ دهد، کد خطا بصورت HTTP Status Code و نوع آن با فرمت JSON ارسال می‌گردد. کدهای خطای احتمالی نیز در ادامه به صورت کامل توضیح داده شده‌اند.

شیوه‌ فراخوانی

برای استفاده از این سرویس، یک درخواست GET به اندپوینت زیر ارسال کنید:

https://api.neshan.org/v1/direction/historical?origin=35.72084257271665,51.432258666992766&destination=35.67032306940622,51.29844587298737&avoidTrafficZone=false&avoidOddEvenZone=false&alternative=false&dateTime=2025-03-18T14:00&routingType=DepartAt

هدرهای درخواست (Headers)

در هدر درخواست، باید کلید API خود را ارسال کنید:

Api-Key: YOUR_SERVICE_API_KEY

پارامترهای ورودی

پارامترتوضیحاتنوع پارامتر
originمختصات مبدأ به‌صورت Lat,Lngاجباری
destinationمختصات مقصد به‌صورت Lat,Lngاجباری
routingTypeنوع تخمین مسیریابی را مشخص می‌کند و یکی از دو مقدار DepartAt یا ArriveAt را می‌پذیرد. DepartAt تخمین را بر اساس زمان حرکت و ArriveAt تخمین را بر اساس زمان رسیدن به مقصد انجام می‌دهد.اجباری
dateTimeزمان و تاریخ مد نظر برای دریافت ترافیک با فرمت استاندارد (YYYY-MM-DDThh:mm). این بازه از لحظه حال تا یک هفته آینده معتبر است. (بدون در نظر گرفتن منطقه زمانی UTC-0)اجباری
avoidTrafficZoneمشخص می‌کند که آیا مسیر پیشنهادی از داخل طرح ترافیک عبور کند یا خیر. مقادیر مجاز true و false هستند. (مقدار پیش‌فرض false)اختیاری
alternativeمشخص می‌کند که آیا علاوه‌بر مسیر اصلی، حداکثر تا دو مسیر جایگزین نیز پیشنهاد داده شود. (مقدار پیش‌فرض false)اختیاری

نمونه درخواست

curl --location 'https://api.neshan.org/v1/direction/historical?origin=35.72084257271665%2C51.432258666992766&destination=35.67032306940622%2C51.29844587298737&routingType%09=DepartAt&dateTime=2025-03-18T14%3A00&avoidTrafficZone=false&alternative=false' \
--header 'Api-Key: YOUR_API_KEY'

فرمت پاسخ

پاسخ این سرویس در قالب یک آبجکت JSON بازگردانده می‌شود.

{
"routes": [
{
"duration": 139.0,
"distance": 694.459,
"legs": [
{
"summary": "آزادی, کارگر شمالی",
"distance": 694.459,
"duration": 139.814,
"steps": [
{
"direction": "E",
"type": "depart",
"location": { "longitude": 51.388078, "latitude": 35.700804 },
"distance": 261.564,
"duration": 56.603,
"name": "آزادی",
"geometry": "_y{xEovsxHAOCmFAmBDa@BKHs@BWD]J{@"
},
{
"direction": "E",
"type": "rotary",
"modifier": "straight",
"location": { "longitude": 51.390955, "latitude": 35.700632 },
"distance": 145.0,
"duration": 31.482,
"name": "کارگر شمالی",
"geometry": "}w{xEohtxHDSBUCUESEKGKSOUEW@UJORKXAN?N",
"exit": 2,
"rotaryName": "میدان انقلاب اسلامی"
},
{
"direction": "N",
"type": "exit rotary",
"modifier": "right",
"location": { "longitude": 51.391154, "latitude": 35.701293 },
"distance": 287.895,
"duration": 51.729,
"name": "کارگر شمالی",
"geometry": "a|{xEuitxH_ADaBLO@{BR}BPwAJ"
},
{
"direction": "N",
"type": "arrive",
"modifier": "left",
"location": { "longitude": 51.39079, "latitude": 35.703867 },
"name": "کارگر شمالی",
"geometry": "el|xEmgtxH??"
}
]
}
],
"dateTime": "2025-03-18T10:32:19Z",
"geometry": "_y{xEovsxHAOCmFAmBDa@BKHs@BWD]J{@DSBUCUESEKGKSOUEW@UJORKXAN?N_ADaBLO@{BR}BPwAJ"
}
]
}

اجزای پاسخ

آبجکت اصلی

پارامترتوضیحات
routesآرایه‌ای از مسیرهای پیشنهادی.

آبجکت route

پارامترتوضیحات
durationمدت زمان کل مسیر (برحسب دقیقه).
distanceمسافت کل مسیر (برحسب متر).
legsآرایه‌ای متشکل از بخش‌های اصلی مسیر.
dateTimeزمان رسیدن به مقصد یا زمان خروج از مبدأ.
geometryکل ژئومتری مسیر به‌صورت Encoded Polyline.

آبجکت leg

پارامترتوضیحات
summaryخلاصه‌ای از نام خیابان‌های اصلی در این بخش.
distanceمسافت کل بخش (برحسب متر).
durationمدت زمان کل بخش (برحسب دقیقه).
stepsآرایه‌ای از گام‌های جزئی برای پیمودن این بخش.

آبجکت step

پارامترتوضیحات
directionجهت جغرافیایی این گام از مسیر (مثلاً N برای شمال).
typeنوع مانور در این گام. توضیحات کامل در بخش type آمده است.
modifierنوع و جهت تغییر مسیر. توضیحات کامل در بخش modifier آمده است.
locationیک آبجکت شامل longitude و latitude نقطه‌ی شروع این گام.
distanceمسافت این گام (برحسب متر).
durationمدت زمان این گام (برحسب دقیقه).
nameنام معبری که این گام در آن شروع می‌شود.
geometryژئومتری این گام به‌صورت Encoded Polyline.
exitشماره خروجی در میدان‌ها. (فقط در typeهای مرتبط با میدان وجود دارد)
rotaryNameنام میدان. (فقط در typeهای مرتبط با میدان وجود دارد)

توضیحات تکمیلی پارامترها

پارامتر type

این پارامتر نوع مانور را در هر گام مشخص می‌کند:

  • depart: شروع حرکت.
  • arrive: رسیدن به مقصد.
  • turn: یک گردش ساده که جهت آن با modifier مشخص می‌شود.
  • new name: ادامه مسیر مستقیم اما با تغییر نام خیابان.
  • merge: پیوستن به یک خیابان جدید (مانند ورود از رمپ به بزرگراه).
  • on ramp / off ramp: ورود یا خروج از بزرگراه از طریق رمپ.
  • fork: انتخاب مسیر در یک دوراهی.
  • end of road: رسیدن به انتهای خیابان در یک تقاطع T شکل.
  • roundabout / rotary: عبور از میدان.
  • exit roundabout / exit rotary: مانور خروج از میدان.
  • roundabout turn: گردش در یک میدان کوچک که مانند یک گردش عادی است.
  • continue: ادامه مسیر در راستای modifier.
  • notification: نشان‌دهنده تغییر در شرایط رانندگی.

پارامتر modifier

این پارامتر جهت تغییر مسیر را در هر گام مشخص می‌کند:

  • right: گردش به راست
  • slight-right: گردش به راست با زاویه کم
  • sharp-right: گردش به راست با زاویه تند
  • left: گردش به چپ
  • slight-left: گردش به چپ با زاویه کم
  • sharp-left: گردش به چپ با زاویه تند
  • uturn: دوربرگردان
  • straight: مسیر مستقیم

دیکد کردن Polyline

پارامتر geometry در پاسخ به‌صورت Encoded Polyline ارائه می‌شود. برای دیکد کردن و نمایش مسیر بر روی نقشه، می‌توانید از منابع زیر استفاده کنید:

کد خطاهای سرویس

HTTP CodeStatusDescription
404NOT_FOUNDکد پستی با این مشخصات یافت نشده است
400INVALID_ARGUMENTخطا در پارامتر های ورودی
470CoordinateParseErrorچنانچه مختصات جغرافیایی ارسالی معتبر نباشد رخ خواهد داد.
480KeyNotFoundدر صورتی که در فراخوانی وب‌سرویس از یک Api Key نامعتبر استفاده کنید یا Api Key خود را در header ارسال نکنید رخ خواهد داد.
481LimitExceededدر صورتی که تعداد فراخوانی وب‌سرویس‌ها از میزان مجازی که برای شما تعیین شده‌است عبور کند رخ خواهد داد.
482RateExceededچنانچه تعداد درخواست وب‌سرویس در دقیقه از حد مجاز عبور کند رخ خواهد داد.
483ApiKeyTypeErrorکلید دسترسی استفاده شده با سرویس فراخوانی شده همخوانی ندارد. بایستی از کلید دسترسی مرتبط با سرویس مورد نظر استفاده کنید.
484ApiWhiteListErrorبا توجه به اسکوپ تعریف‌شده برای این کلید، شما مجاز به استفاده نیستید.
485ApiServiceListErrorسرویس فراخوانی شده با سرویس‌های تعریف‌شده برای این کلید دسترسی همخوانی ندارد.
500GenericErrorوقوع خطای ناشناخته