একটি isochrone map হলো একটি পলিগন যা একটি প্রতারণামূলকভাবে সহজ প্রশ্নের উত্তর দেয়: এখান থেকে X মিনিটে আমি কোথায় পৌঁছাতে পারি? একটি কফি শপের চারপাশে ১৫ মিনিটের drive-time isochrone আঁকুন এবং আপনি তার বাস্তব catchment পেয়ে যাবেন। একটি metro station-এর চারপাশে ৩০ মিনিটের walk-time isochrone আঁকুন এবং আপনি এর pedestrian reach পেয়ে যাবেন। প্রতিটি "near me" feature, প্রতিটি store catchment study, প্রতিটি commute-time real estate filter এই idea-র উপর তৈরি।
এই guide ব্যাখ্যা করে একটি isochrone আসলে কী, কীভাবে isochrone road network-এ গণনা করা হয়, কোথায় production system-এ এগুলি দেখা যায়, এবং কোন সমস্যাগুলি team-এর সময় ও অর্থ নষ্ট করে।
একটি Isochrone আসলে কী
শব্দটি Greek isos (সমান) এবং chronos (সময়) থেকে এসেছে: একটি curve যার বরাবর travel time একই। আধুনিক mapping-এ, একটি isochrone হলো একটি পলিগন (বা nested পলিগনের একটি সেট) যা একটি নির্বাচিত travel mode-এ একটি নির্বাচিত time budget-এর মধ্যে একটি origin থেকে পৌঁছানো যায় এমন প্রতিটি location প্রতিনিধিত্ব করে।
দুটি জিনিস একটি isochrone-কে একটি সাধারণ buffer থেকে আলাদা করে। প্রথমত, এটি একটি সমতল প্লেনে নয়, road network-এ গণনা করা হয়। নদী, motorway, পাহাড় এবং one-way street সবই আকৃতিকে বিকৃত করে। দ্বিতীয়ত, এটি mode-aware: একই বিন্দু থেকে ২০ মিনিটের drive isochrone, ২০ মিনিটের cycle isochrone এবং ২০ মিনিটের walk isochrone তিনটি সম্পূর্ণ ভিন্ন পলিগন।
Output প্রায় সবসময় GeoJSON হয়, একটি Polygon বা MultiPolygon geometry এবং properties বহনকারী travel-time threshold ও mode সহ। আপনার front-end map এটিই render করে এবং আপনার spatial database এর বিরুদ্ধেই query করে।
কীভাবে Isochrone গণনা করা হয়
সরল approach হলো origin থেকে একটি shortest-path search চালানো এবং cumulative travel time threshold-এ পৌঁছালে থামানো। বাস্তবে, এটি scale-এ অনেক ধীর, তাই production system precomputed road-network graph এবং accelerated search algorithm ব্যবহার করে।
Road graph একবার OpenStreetMap বা একটি commercial road dataset-এর মতো source থেকে তৈরি করা হয়: প্রতিটি intersection একটি node হয়ে যায়, প্রতিটি road segment প্রতিটি mode-এর জন্য travel time দ্বারা weighted একটি edge হয়ে যায়। একটি origin থেকে, একটি graph search (Dijkstra, A*, বা একটি bidirectional variant) বাইরের দিকে walk করে, time budget শেষ না হওয়া পর্যন্ত সবচেয়ে সস্তা unvisited node প্রথমে expand করে। reached node-এর সেট plus partially-reached edge সীমানা সংজ্ঞায়িত করে।
আধুনিক engine এটি দ্রুত করতে contraction hierarchies বা সংশ্লিষ্ট technique ব্যবহার করে। Graph একটি hierarchy-তে preprocess করা হয় যেখানে shortcut edge কম গুরুত্বপূর্ণ node-গুলিকে skip করে, তাই একটি query যা অন্যথায় millions of edge স্পর্শ করত তা milliseconds-এ উত্তর দেওয়া যেতে পারে। পৌঁছানো node-গুলিকে তারপর একটি পলিগনে wrap করা হয়, সাধারণত একটি concave hull বা alpha-shape দিয়ে যাতে outline খালি জায়গায় ballooning না হয়ে প্রকৃত road extent-কে hug করে।
ফলাফল হলো একটি GeoJSON পলিগন যা আপনি সরাসরি Leaflet, Mapbox GL, বা MapLibre map-এ stream করতে পারেন, অথবা spatial join-এর জন্য PostGIS-এ load করতে পারেন।
Isochrone কোথায় দেখা যায়
Isochrone নীরবে অনেক location-aware product feature চালাচ্ছে।
- Store ও venue catchment: retailer প্রতিটি location-এর চারপাশে drive-time isochrone আঁকে যাতে তারা যুক্তিসঙ্গতভাবে পরিবেশন করে এমন population-এর হিসাব করা যায়, তারপর market size-এর জন্য census বা spending data overlay করে
- EV range planning: battery-aware isochrone দেখায় একটি EV তার অবশিষ্ট charge-এ কতদূর drive করতে পারে, elevation, speed এবং consumption বিবেচনা করে
- Real estate commute filter: "এই office থেকে ৩০ মিনিটের commute-এর মধ্যে প্রতিটি flat দেখাও" হলো একটি property listings table-এর সাথে intersect করা একটি isochrone
- Healthcare access analysis: planner হাসপাতাল এবং clinic-এর চারপাশে isochrone-কে population grid-এর সাথে তুলনা করে underserved এলাকা খুঁজে বের করে
- Logistics service area: courier, field-service team এবং on-demand delivery platform isochrone ব্যবহার করে নির্ধারণ করে কোন order তারা একটি প্রদত্ত depot থেকে গ্রহণ করবে
- Urban planning ও transit: ১৫-মিনিটের শহর study, station catchment plan এবং accessibility audit সবই multimodal isochrone-এ চলে
প্রতিটি ক্ষেত্রে, isochrone হলো spatial filter। এটি একটি অস্পষ্ট প্রশ্নকে ("কতটা কাছে যথেষ্ট কাছে?") একটি পলিগনে পরিণত করে যা আপনি intersect, render এবং reason করতে পারেন।
Production-এ সমস্যা
Demo-তে isochrone সহজ দেখায় এবং production-এ কঠিন হয়ে যায়।
Mode mismatch. একটি drive isochrone motorway গতি ব্যবহার করে এবং পথচারীদের জন্য one-way restriction উপেক্ষা করে। একটি walk isochrone footpath এবং pedestrian shortcut ব্যবহার করে যা গাড়ি ব্যবহার করতে পারে না। দুটি মিশ্রিত করা "পলিগনটি ভুল দেখাচ্ছে" bug report-এর সবচেয়ে সাধারণ উৎস। সর্বদা explicit mode pass করুন এবং UI-তে surface করুন।
Time of day এবং traffic. ০৩:০০-এ একটি ১৫-মিনিটের drive ১৭:৩০-এ একই ১৫-মিনিটের drive-এর চেয়ে অনেক বড় এলাকা cover করে। যদি আপনার use case commute-aware হয় (real estate filter, store hour, dispatch), একটি departure_time pass করুন এবং একটি traffic-aware engine ব্যবহার করুন। Static isochrone rush hour সম্পর্কে মিথ্যা বলে।
Multimodal stitching. বাস্তব journey mode একত্রিত করে: metro পর্যন্ত walk, দুটি stop ride করুন, destination পর্যন্ত walk করুন। সরল single-mode isochrone এটি সম্পূর্ণভাবে miss করে। True multimodal isochrone-এর জন্য একটি transit timetable এবং একটি graph প্রয়োজন যা pedestrian ও transit edge join করে, যা drive-only-এর চেয়ে উল্লেখযোগ্যভাবে বেশি জটিল।
Coverage simplification. কিছু engine আক্রমণাত্মকভাবে পলিগনকে মসৃণ করে যাতে এটি সুন্দর দেখায়, যা নীরবে এমন এলাকা অন্তর্ভুক্ত করে coverage-কে বাড়িয়ে বলে যেখানে কোনো road আসলে পৌঁছায় না। গুরুত্বপূর্ণ সিদ্ধান্তের জন্য (একটি দোকান খোলা, একটি delivery zone গ্রহণ করা), render করা আকৃতিকে বিশ্বাস না করে raw সীমানা পরীক্ষা করুন।
Scale-এ পলিগনের আকার. দীর্ঘ সময়ের isochrone (৬০, ৯০ মিনিট)-এ হাজার হাজার vertices থাকতে পারে। browser-এ পাঠানোর আগে simplify করুন, বা server-side render করুন, না হলে আপনার map stutter করবে।
MapAtlas-এ Isochrone
MapAtlas Isochrone API drive, walk, cycle এবং traffic-aware drive-time পলিগন GeoJSON হিসাবে return করে, একটি single request-এ একাধিক time threshold-এর support এবং traffic-aware result-এর জন্য departure-time input সহ। পলিগন ক্রমাগত আপডেট হওয়া road graph-এ গণনা করা হয় এবং এমন একটি আকৃতিতে return করা হয় যা আপনার map library আরও processing ছাড়াই render করতে পারে।
যে workflow-এর জন্য reachable-area পলিগন এবং pairwise travel time উভয়ই প্রয়োজন, তাদের জন্য Isochrone API Distance Matrix API-এর সাথে pair হয় যাতে একটি single workflow একটি pipeline-এ "আমি ২০ মিনিটে কোথায় পৌঁছাতে পারি?" এবং "এই candidate-গুলিকে drive time অনুযায়ী rank করুন" উত্তর দিতে পারে।
একটি isochrone শেষ পর্যন্ত শুধু একটি পলিগন। কিন্তু এটিই সেই পলিগন যা travel time-কে এমন একটি আকৃতিতে পরিণত করে যা আপনার application filter, render এবং reason করতে পারে, এবং এটিই একটি true commute-aware feature এবং একটি pin-এর চারপাশে আঁকা একটি বৃত্তের মধ্যে পার্থক্য।
সাধারণ জিজ্ঞাসা
Isochrone map কী?
একটি isochrone map হলো একটি পলিগন বা একগুচ্ছ nested পলিগন, যা একটি শুরুর বিন্দু থেকে নির্দিষ্ট travel time-এর মধ্যে পৌঁছানো যায় এমন প্রতিটি জায়গা দেখায়। উদাহরণস্বরূপ, একটি দোকানের চারপাশে ১৫ মিনিটের drive-time isochrone সেই আকৃতিটি অঙ্কন করে যেখানে একজন গ্রাহক ১৫ মিনিট বা তার কম সময়ে পৌঁছাতে পারে এমন প্রতিটি road segment অন্তর্ভুক্ত থাকে। আকৃতিটি প্রায় কখনোই বৃত্তাকার হয় না, কারণ বাস্তব road network-এ নদী, motorway, dead end এবং one-way street থাকে।
Isochrone এবং radius-এর মধ্যে পার্থক্য কী?
একটি radius হলো compass দিয়ে আঁকা একটি সরলরেখার buffer: ভেতরের প্রতিটি বিন্দু কেন্দ্র থেকে একই সরলরেখা দূরত্বে থাকে। একটি isochrone হলো প্রকৃত road network-এ গণনা করা travel-time buffer: ভেতরের প্রতিটি বিন্দু একই সংখ্যক মিনিটের মধ্যে পৌঁছানো যায়। ১০ কিমি radius এবং ১০ মিনিটের drive-time isochrone প্রায় কখনোই মিলে না, কারণ ভূখণ্ড, motorway এবং traffic আকৃতিকে বিকৃত করে।
একটি isochrone API কী return করে?
একটি isochrone API এক বা একাধিক পলিগন GeoJSON হিসাবে return করে, প্রতিটিতে travel-time threshold ট্যাগ করা থাকে (যেমন ৫, ১০, ১৫ মিনিট)। পলিগনগুলি একটি নির্বাচিত travel mode (drive, walk, cycle, transit)-এর জন্য road graph-এ গণনা করা হয় এবং traffic বিবেচনা করা হলে একটি নির্দিষ্ট departure time-এর জন্য return করা যেতে পারে। আপনি GeoJSON-কে সরাসরি একটি map-এ drop করতে পারেন বা PostGIS-এ একটি spatial filter হিসাবে ব্যবহার করতে পারেন।
Isochrone এত jagged দেখায় কেন?
Isochrone একটি ক্রমাগত পৃষ্ঠ থেকে নয়, road segment-এর একটি graph থেকে derived হয়। পলিগনের সীমানা time budget-এর মধ্যে সবচেয়ে দূরে পৌঁছানো node থেকে interpolate করা হয়, তাই edge গুলি road geometry অনুসরণ করে। concave hull বা alpha shape দিয়ে আরও মসৃণ আকৃতি তৈরি করা যেতে পারে, তবে কিছুটা jagged outline সৎ: এটি দেখায় network আসলে কোথায় শেষ হয়, একটি smoothing function কোথায় কল্পনা করেছে তা নয়।

