আইসোক্রোন ম্যাপ হলো এমন একটি পলিগন, যা দেখতে সহজ এক প্রশ্নের উত্তর দেয়: এখান থেকে X মিনিটে কোথায় কোথায় যাওয়া যায়? কোনো কফির দোকানের চারপাশে ১৫ মিনিট গাড়িপথের আইসোক্রোন আঁকুন, দোকানটির আসল ক্রেতা-এলাকা দেখতে পাবেন। কোনো মেট্রো স্টেশনের চারপাশে ৩০ মিনিট হাঁটার আইসোক্রোন আঁকুন, দেখবেন হেঁটে স্টেশন থেকে কত দূর যাওয়া যায়। “আমার কাছাকাছি” ধরনের প্রতিটি ফিচার, দোকানের ক্রেতা-এলাকার প্রতিটি সমীক্ষা, অফিসে যাতায়াতের সময় দিয়ে বাড়ি খোঁজার প্রতিটি ফিল্টার এই ধারণার উপর তৈরি।
এই নির্দেশিকা ব্যাখ্যা করে আইসোক্রোন আসলে কী, সড়ক নেটওয়ার্কে এটি কীভাবে হিসাব হয়, বাস্তব সিস্টেমে কোথায় কাজে লাগে, আর কোন ভুলগুলো টিমের সময় ও টাকা নষ্ট করে।
আইসোক্রোন আসলে কী
শব্দটি এসেছে গ্রিক isos (সমান) আর chronos (সময়) থেকে: এমন রেখা, যার সব জায়গায় যাতায়াতের সময় এক। আজকের ম্যাপ সিস্টেমে আইসোক্রোন হলো একটি পলিগন (বা একটির ভেতরে আরেকটি বসানো কয়েকটি পলিগন)। এটি দেখায়, নির্দিষ্ট যাতায়াতের ধরনে আর নির্দিষ্ট সময়ের মধ্যে একটি শুরুর বিন্দু থেকে কোন কোন জায়গায় পৌঁছানো যায়।
দুটি জিনিস আইসোক্রোনকে কোনো বিন্দুর চারপাশের সাধারণ সীমা থেকে আলাদা করে। প্রথমত, এটি হিসাব হয় সড়ক নেটওয়ার্কে, সমতল কাগজে নয়। নদী, মহাসড়ক, পাহাড় আর একমুখী রাস্তা সবই আকৃতি বদলে দেয়। দ্বিতীয়ত, এটি যাতায়াতের ধরনের উপর নির্ভর করে: একই বিন্দু থেকে ২০ মিনিট গাড়িপথ, ২০ মিনিট সাইকেল আর ২০ মিনিট হাঁটার আইসোক্রোন সম্পূর্ণ আলাদা তিনটি পলিগন।
ফলাফল প্রায় সবসময় GeoJSON, যাতে থাকে Polygon বা MultiPolygon জ্যামিতি আর এমন বৈশিষ্ট্য, যা সময়সীমা ও যাতায়াতের ধরন জানায়। আপনার ফ্রন্টএন্ডের ম্যাপ এটিই দেখায়, আর আপনার স্থানিক ডেটাবেস এর উপরেই কোয়েরি চালায়।
আইসোক্রোন কীভাবে হিসাব হয়
সবচেয়ে সরল উপায় হলো শুরুর বিন্দু থেকে সংক্ষিপ্ততম পথের খোঁজ চালানো, আর মোট সময় সীমায় পৌঁছালে থেমে যাওয়া। বড় পরিসরে এটি খুব ধীর, তাই বাস্তব সিস্টেম আগে থেকে তৈরি সড়ক গ্রাফ আর দ্রুত খোঁজার অ্যালগরিদম ব্যবহার করে।
সড়ক গ্রাফ একবারই তৈরি হয়, OpenStreetMap বা কোনো বাণিজ্যিক সড়ক ডেটাসেট থেকে। প্রতিটি মোড় হয় নোড, আর রাস্তার প্রতিটি অংশ হয় এজ। প্রতিটি যাতায়াতের ধরনের জন্য সেই এজের ওজন হলো তা পার হতে লাগা সময়। শুরুর বিন্দু থেকে গ্রাফে খোঁজ (Dijkstra, A* বা এদের দুই দিক থেকে চলা রূপ) বাইরের দিকে এগোয়। প্রতিবার সবচেয়ে কম খরচের অদেখা নোডটি আগে খোলে, যতক্ষণ না সময় ফুরিয়ে যায়। যে নোডগুলোতে পৌঁছানো গেছে আর যে এজগুলো আংশিক পার হওয়া গেছে, সেগুলো মিলেই সীমানা ঠিক হয়।
আধুনিক ইঞ্জিন এই কাজ দ্রুত করতে কনট্রাকশন হায়ারার্কি (contraction hierarchies) বা এর কাছাকাছি কৌশল ব্যবহার করে। গ্রাফটিকে আগে থেকে স্তরে স্তরে সাজানো হয়, যেখানে শর্টকাট এজ কম গুরুত্বপূর্ণ নোডগুলো ডিঙিয়ে যায়। ফলে যে কোয়েরি অন্যথায় লাখো এজ ছুঁয়ে যেত, তার উত্তর আসে মিলিসেকেন্ডে। এরপর পৌঁছানো নোডগুলোকে একটি পলিগনে মোড়া হয়, সাধারণত concave hull বা alpha shape দিয়ে, যাতে কিনারা ফাঁকা জায়গায় না ফুলে রাস্তার আসল সীমা ধরে চলে।
ফলাফল একটি GeoJSON পলিগন, যা আপনি সরাসরি Leaflet, Mapbox GL বা MapLibre ম্যাপে পাঠাতে পারেন, অথবা স্থানিক জয়েনের জন্য PostGIS-এ তুলতে পারেন।
আইসোক্রোন কোথায় কাজে লাগে
অবস্থাননির্ভর অনেক ফিচারের পেছনে চুপচাপ কাজ করে আইসোক্রোন।
- দোকান ও জায়গার ক্রেতা-এলাকা: খুচরা বিক্রেতারা প্রতিটি শাখার চারপাশে গাড়িপথের আইসোক্রোন আঁকেন, যাতে বোঝা যায় শাখাটি বাস্তবে কত মানুষের কাছে পৌঁছায়। তারপর জনশুমারি বা খরচের ডেটা বসিয়ে বাজারের আকার মাপেন
- ইলেকট্রিক গাড়ির পাল্লা পরিকল্পনা: ব্যাটারির হিসাব ধরা আইসোক্রোন দেখায় বাকি চার্জে ইলেকট্রিক গাড়ি কত দূর যেতে পারবে, উচ্চতা, গতি আর বিদ্যুৎ খরচ ধরে
- বাড়ি খোঁজায় যাতায়াতের সময়ের ফিল্টার: “এই অফিস থেকে ৩০ মিনিটের মধ্যে সব ফ্ল্যাট দেখাও” মানে বাড়ির বিজ্ঞাপনের টেবিলের সঙ্গে একটি আইসোক্রোন মেলানো
- স্বাস্থ্যসেবায় নাগালের বিশ্লেষণ: পরিকল্পনাকারীরা হাসপাতাল আর ক্লিনিকের চারপাশের আইসোক্রোন জনসংখ্যার গ্রিডের সঙ্গে তুলনা করেন, যাতে সেবা কম পাওয়া এলাকা খুঁজে পাওয়া যায়
- লজিস্টিক্সের সেবা-এলাকা: কুরিয়ার, মাঠপর্যায়ের সেবা টিম আর চাহিদামতো ডেলিভারি প্ল্যাটফর্ম আইসোক্রোন দিয়ে ঠিক করে কোনো গুদাম থেকে কোন অর্ডার তারা নেবে
- নগর পরিকল্পনা ও গণপরিবহন: ১৫ মিনিটের শহর নিয়ে সমীক্ষা, স্টেশনের যাত্রী-এলাকার পরিকল্পনা আর নাগালের নিরীক্ষা, সবই চলে একাধিক যাতায়াতের ধরন মেলানো আইসোক্রোনে
প্রতিটি ক্ষেত্রেই আইসোক্রোন হলো স্থানিক ফিল্টার। “কতটা কাছে হলে যথেষ্ট কাছে?” এমন অস্পষ্ট প্রশ্নকে এটি পলিগনে পরিণত করে, যা আপনি অন্য ডেটার সঙ্গে মেলাতে, ম্যাপে দেখাতে আর যাচাই করতে পারেন।
হাঁটা, সাইকেল আর গাড়িতে আকৃতি আলাদা
একই শুরুর বিন্দু থেকে একই ১৫ মিনিট তিনটি একেবারে আলাদা আকৃতি দেয়। ঘণ্টায় প্রায় ৫ কিমি গতিতে হাঁটলে মোটামুটি ১ থেকে ১.২৫ কিমি যাওয়া যায়। তাই পলিগনটি প্রায় গোল, শুধু যেখানে নদী, রেললাইন বা মহাসড়ক পার হওয়ার জায়গা কম, সেখানে খাঁজ পড়ে। গাড়ি দ্রুতগতির রাস্তা ধরে লম্বা বাহু ছড়ায়, আর ঘিঞ্জি বা যানজটের রাস্তায় গুটিয়ে যায়। সাইকেল থাকে এই দুইয়ের মাঝামাঝি, আর রাস্তার স্তরবিন্যাস নয়, সাইকেলের পথ ধরে চলে। একই বিন্দুর জন্য তিনটি পাশাপাশি দেখালে সংশ্লিষ্টদের বোঝানো সবচেয়ে সহজ হয় কেন ব্যাসার্ধ বিভ্রান্তিকর ছিল।
আইসোক্রোনের রিকোয়েস্ট পাঠানো
MapAtlas গেটওয়েতে একটি আইসোক্রোন মানে একটিমাত্র POST রিকোয়েস্ট। অবস্থানগুলো {lat, lon} অবজেক্ট, costing যাতায়াতের ধরন বাছে (auto, bicycle বা pedestrian), আর contours-এর প্রতিটি উপাদানে মিনিটে একটি সময় দিতে হয়:
curl -X POST "https://gateway.mapmetrics-atlas.net/isochrone/?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"locations": [{"lat": 52.3791, "lon": 4.9001}],
"costing": "pedestrian",
"contours": [{"time": 15}, {"time": 10}, {"time": 5}],
"polygons": true
}'
উত্তর আসে GeoJSON FeatureCollection হিসেবে, প্রতিটি সময়ের জন্য একটি করে পলিগন, সবচেয়ে বড়টি আগে। প্রতিটি feature-এর বৈশিষ্ট্যে থাকে তার contour মান আর একটি ভরাট রঙ। তাই একে GeoJSON উৎস হিসেবে যোগ করে MapLibre-এর একটি fill লেয়ারে সরাসরি আঁকতে পারেন, বাড়তি কোনো প্রক্রিয়া ছাড়াই।
কয়েকটি গুদাম বা দোকানের নাগাল দেখতে হলে প্রতিটি শুরুর বিন্দুর জন্য একটি করে আইসোক্রোন নিন। তারপর feature-গুলো একটি সংগ্রহে মিলিয়ে নিন আর প্রতিটিতে তার শুরুর বিন্দু লিখে দিন। সবগুলো মিলিয়ে যে এলাকা হয়, সেটিই আপনার মোট সেবা-এলাকা। যে অংশে কেবল একটি শুরুর বিন্দু পৌঁছায়, সেখানে আপনার কোনো বিকল্প নেই। যেখানে পলিগনগুলো একে অপরের উপর পড়ে, সেখানে কোনো ঠিকানার সবচেয়ে কাছের শুরুর বিন্দু কোনটি তা বোঝা যায় না। এর সরাসরি উত্তর দেয় দূরত্ব ম্যাট্রিক্স।
বাস্তবে যে সমস্যাগুলো আসে
ডেমোতে আইসোক্রোন সহজ দেখায়, বাস্তব ব্যবহারে কঠিন হয়ে ওঠে।
যাতায়াতের ধরনে গরমিল। গাড়ির আইসোক্রোন মহাসড়কের গতি ধরে, আর পথচারীর নিয়মগুলো হিসাবে নেয় না। হাঁটার আইসোক্রোন ফুটপাত আর পায়ে চলার শর্টকাট ব্যবহার করে, যেখানে গাড়ি যেতে পারে না। দুটি গুলিয়ে ফেলাই “পলিগনটা ভুল দেখাচ্ছে” ধরনের অভিযোগের সবচেয়ে বড় কারণ। সবসময় যাতায়াতের ধরন স্পষ্ট করে পাঠান, আর ইউজার ইন্টারফেসেও তা দেখান।
দিনের সময় আর যানজট। ০৩:০০-এ ১৫ মিনিট গাড়ি চালিয়ে যতটা এলাকা যাওয়া যায়, ১৭:৩০-এ একই ১৫ মিনিটে তার চেয়ে অনেক কম। আপনার কাজ যদি যাতায়াতের সময়ের উপর নির্ভর করে (বাড়ি খোঁজার ফিল্টার, দোকানের সময়, চালক বরাদ্দ), তবে departure_time পাঠান আর যানজট ধরে এমন ইঞ্জিন ব্যবহার করুন। যানজট না ধরা আইসোক্রোন ভিড়ের সময়ের সঠিক এলাকা দেখায় না।
একাধিক ধরন জোড়া লাগানো। বাস্তবের যাত্রায় একাধিক ধরন মেশে: হেঁটে মেট্রো, দুই স্টেশন ট্রেনে, তারপর হেঁটে গন্তব্য। এক ধরনের সাধারণ আইসোক্রোন এটি পুরোপুরি বাদ দেয়। আসল বহুমুখী আইসোক্রোনের জন্য গণপরিবহনের সময়সূচি আর এমন গ্রাফ লাগে, যা হাঁটার পথ আর গণপরিবহনের এজ জুড়ে দেয়। এটি শুধু গাড়ির আইসোক্রোনের চেয়ে অনেক বেশি জটিল।
সীমানা বেশি মসৃণ করা। কিছু ইঞ্জিন পলিগনকে সুন্দর দেখাতে খুব বেশি মসৃণ করে। এতে চুপচাপ নাগাল বাড়িয়ে দেখানো হয়, কারণ এমন জায়গাও ঢুকে পড়ে যেখানে কোনো রাস্তা যায় না। জরুরি সিদ্ধান্তে, যেমন নতুন দোকান খোলা বা কোনো ডেলিভারি এলাকা নেওয়ার আগে, আঁকা আকৃতির উপর ভরসা না করে আসল সীমানা যাচাই করুন।
বড় পরিসরে পলিগনের আকার। দীর্ঘ সময়ের আইসোক্রোনে (৬০ বা ৯০ মিনিট) হাজার হাজার শীর্ষবিন্দু থাকতে পারে। ব্রাউজারে পাঠানোর আগে এগুলো সরল করুন বা সার্ভারেই আঁকুন, নইলে আপনার ম্যাপ ধীর হয়ে যাবে।
যা বদলায় না, তা বারবার হিসাব করা। কোনো নির্দিষ্ট গুদামের চারপাশের ডেলিভারি এলাকা ঘণ্টার পর ঘণ্টা, এমনকি কয়েক দিন একই পলিগন থাকে। তাই প্রতিবার পাতা খোলার সময় নতুন করে না চেয়ে ক্যাশে রাখুন। যেসব ম্যাপে ব্যবহারকারী ক্লিক করে শুরুর বিন্দু বসান, সেখানে ক্লিক হ্যান্ডলারে ডিবাউন্স দিন, যাতে পরপর অনেক ক্লিকে পরপর অনেক রিকোয়েস্ট না যায়।
MapAtlas-এ আইসোক্রোন
MapAtlas Isochrone API গাড়ি, হাঁটা, সাইকেল আর যানজটসহ গাড়িপথের সময়ের পলিগন GeoJSON আকারে ফেরত দেয়। এক রিকোয়েস্টে একাধিক সময়সীমা চাওয়া যায়, আর যাত্রা শুরুর সময় দিলে যানজট ধরে ফল পাওয়া যায়। পলিগনগুলো নিয়মিত হালনাগাদ হওয়া সড়ক গ্রাফে হিসাব হয়, আর এমন আকারে আসে যা আপনার ম্যাপ লাইব্রেরি বাড়তি কাজ ছাড়াই আঁকতে পারে।
যেখানে নাগালের এলাকার পলিগন আর জোড়ায় জোড়ায় যাতায়াতের সময় দুটোই দরকার, সেখানে Isochrone API-এর সঙ্গে Distance Matrix API ব্যবহার করুন। তাহলে একই কাজের ধারাতেই “২০ মিনিটে কোথায় কোথায় যেতে পারি?” আর “এই বিকল্পগুলো গাড়িপথের সময় অনুযায়ী সাজাও”, দুটো প্রশ্নেরই উত্তর মেলে।
শেষ পর্যন্ত আইসোক্রোন একটি পলিগন মাত্র। কিন্তু এই পলিগনই যাতায়াতের সময়কে এমন আকৃতিতে আনে, যা আপনার অ্যাপ ফিল্টার করতে, আঁকতে আর যাচাই করতে পারে। যাতায়াতের সময় বুঝে চলা একটি আসল ফিচার আর পিনের চারপাশে আঁকা একটি বৃত্তের মধ্যে পার্থক্য এখানেই।
সাধারণ জিজ্ঞাসা
আইসোক্রোন ম্যাপ কী?
আইসোক্রোন ম্যাপ হলো একটি পলিগন, বা একটির ভেতরে আরেকটি বসানো কয়েকটি পলিগন, যা দেখায় কোনো শুরুর বিন্দু থেকে নির্দিষ্ট যাতায়াতের সময়ের মধ্যে কোন কোন জায়গায় পৌঁছানো যায়। ধরুন কোনো দোকানের চারপাশে ১৫ মিনিট গাড়িপথের আইসোক্রোন আঁকলেন। ম্যাপে যে আকৃতি তৈরি হয়, তার ভেতরে থাকে সেই সব রাস্তা, যেখানে একজন ক্রেতা ১৫ মিনিট বা তার কম সময়ে পৌঁছাতে পারেন। আকৃতিটি প্রায় কখনোই বৃত্ত হয় না, কারণ বাস্তবের সড়ক নেটওয়ার্কে নদী, মহাসড়ক, কানাগলি আর একমুখী রাস্তা থাকে।
আইসোক্রোন আর ব্যাসার্ধের পার্থক্য কী?
ব্যাসার্ধ হলো কম্পাস দিয়ে আঁকা সরলরেখার সীমা: ভেতরের প্রতিটি বিন্দু কেন্দ্র থেকে একই সরলরেখা দূরত্বে থাকে। আইসোক্রোন হলো আসল সড়ক নেটওয়ার্কে হিসাব করা সময়ের সীমা: ভেতরের প্রতিটি বিন্দুতে একই সংখ্যক মিনিটে পৌঁছানো যায়। ১০ কিমি ব্যাসার্ধ আর ১০ মিনিট গাড়িপথের আইসোক্রোন প্রায় কখনোই মেলে না, কারণ ভূপ্রকৃতি, মহাসড়ক আর যানজট আকৃতিটা বদলে দেয়।
আইসোক্রোন API কী ফেরত দেয়?
আইসোক্রোন API এক বা একাধিক পলিগন GeoJSON আকারে ফেরত দেয়। প্রতিটি পলিগনে লেখা থাকে সেটি কোন সময়সীমার (যেমন ৫, ১০ বা ১৫ মিনিট)। পলিগনগুলো আপনার বেছে নেওয়া যাতায়াতের ধরন (গাড়ি, হাঁটা, সাইকেল, গণপরিবহন) অনুযায়ী সড়ক গ্রাফে হিসাব হয়। যানজট ধরলে নির্দিষ্ট যাত্রা শুরুর সময়ের জন্যও এগুলো পাওয়া যায়। GeoJSON সরাসরি ম্যাপে বসিয়ে দিন, অথবা PostGIS-এ স্থানিক ফিল্টার হিসেবে ব্যবহার করুন।
আইসোক্রোনের কিনারা এত খাঁজকাটা দেখায় কেন?
আইসোক্রোন তৈরি হয় রাস্তার অংশগুলোর গ্রাফ থেকে, কোনো নিরবচ্ছিন্ন তল থেকে নয়। সময়ের মধ্যে যে নোডগুলোতে সবচেয়ে দূরে পৌঁছানো যায়, সেগুলো থেকে পলিগনের সীমা টানা হয়, তাই কিনারা রাস্তার আকৃতি মেনে চলে। concave hull বা alpha shape দিয়ে আরও মসৃণ আকৃতি বানানো যায়। তবে একটু খাঁজকাটা কিনারাই বেশি নির্ভুল: এটি দেখায় নেটওয়ার্ক আসলে কোথায় শেষ, কোনো মসৃণ করার ফাংশন কোথায় শেষ হবে বলে আন্দাজ করেছে তা নয়।
যাতায়াতের ধরন আইসোক্রোনকে কীভাবে বদলায়?
ধরন বদলালে নাগাল আর আকৃতি দুটোই বদলায়। ঘণ্টায় প্রায় ৫ কিমি গতিতে ১৫ মিনিট হাঁটলে যে কোনো দিকে মোটামুটি ১ থেকে ১.২৫ কিমি যাওয়া যায়। তাই হাঁটার আইসোক্রোন প্রায় গোল দেখায়, শুধু নদী, রেললাইন আর পারাপারের জায়গা না থাকলে সেখানে খাঁজ পড়ে। গাড়ির আইসোক্রোন মহাসড়ক ধরে অনেক দূর লম্বা হয় আর ঘিঞ্জি শহরকেন্দ্রে গুটিয়ে যায়, তাই এর রূপ অনেকটা তারার মতো। সাইকেল থাকে এই দুইয়ের মাঝামাঝি আর সাইকেলের পথ ধরে চলে। যেসব শহরে সাইকেলের পথ ভালোভাবে জোড়া, সেখানে এর নাগাল শুধু রাস্তার জাল দেখে যা মনে হয় তার চেয়েও বেশি।

