डॉट डेंसिटी मैप दिखाता है कि कोई चीज़ कितनी है और इलाके के अंदर कहाँ है। पूरे देश में हर सौ लोगों पर एक बिंदु बिखेर दें, तो शहर अपने आप उभर आते हैं, बिना कोई सीमा रेखा खींचे।
यह गाइड बताती है कि डॉट डेंसिटी मैप क्या है, बिंदु मान कैसे चुनें, बिंदुओं की जगह तय करने की वह समस्या जिस पर मैप की सटीकता टिकी है, और वेब मैप पर इसे कैसे बनाएं।
डॉट डेंसिटी मैप क्या है
डॉट डेंसिटी मैप, जिसे डॉट डिस्ट्रिब्यूशन मैप भी कहते हैं, मात्रा को बिंदुओं से दिखाता है: इकाइयों की हर तय संख्या पर एक बिंदु, उसी इलाके के अंदर जिसकी वे इकाइयाँ हैं।
तीन चीज़ें इसे तय करती हैं:
- बिंदु मान। एक बिंदु कितनी इकाइयों के बराबर है। जैसे एक बिंदु = 100 निवासी, 50 हेक्टेयर अंगूर के बाग या 10 डिलीवरी।
- बिंदु का आकार। हर बिंदु कितना बड़ा बनेगा, पिक्सेल या मिलीमीटर में।
- जगह का नियम। इलाके के अंदर बिंदु कहाँ रखे जाएंगे।
देखने वाला एक-एक बिंदु नहीं गिनता। वह बनावट पढ़ता है: जहाँ मात्रा ज़्यादा है वहाँ गहरी स्याही, जहाँ कम है वहाँ बिखरे बिंदु। यही इस फ़ॉर्मेट की ताकत है, और इसी वजह से 1830 में बने फ़्रांस के पहले डॉट डेंसिटी मैप के बाद से लगभग दो सदियों तक यह चलता आया है।
वन-टू-वन डॉट मैप एक खास स्थिति है, जहाँ हर बिंदु असली कोऑर्डिनेट्स पर दर्ज एक असली चीज़ है: हर पवन टरबाइन, हर दवा की दुकान, बीमारी फैलने का हर दर्ज मामला। ये असली पॉइंट मैप हैं। जोड़कर बनाए गए मैप के उलट, इनके बिंदुओं की जगह पर भरोसा किया जा सकता है।
डॉट डेंसिटी, कोरोप्लेथ और हीटमैप में फ़र्क
तीन फ़ॉर्मेट, तीन अलग काम।
कोरोप्लेथ मैप हर इलाके को एक ही रंग से भरता है। इसे पढ़ना सबसे तेज़ और बनाना सबसे आसान है, पर यह हर इलाके को अंदर से एक जैसा दिखाता है। किसी ग्रामीण ज़िले का कोरोप्लेथ कहता है कि आबादी पूरे ज़िले में बराबर फैली है, जबकि असल में ज़्यादातर लोग एक ही कस्बे में रहते हैं।
डॉट डेंसिटी मैप गिनती बनाए रखता है और इलाके के अंदर का फैलाव दिखाता है। बड़े खाली इलाके मैप पर भी खाली दिखते हैं। इससे एरिया बायस दूर होता है, यानी बड़े इलाकों का अपनी असली अहमियत से ज़्यादा भारी दिखना, जो कोरोप्लेथ मैप की आम समस्या है। इसकी कीमत सटीकता है: आँख से किसी इलाके का सटीक मान नहीं निकाला जा सकता।
हीटमैप बिंदुओं को स्मूद करके एक लगातार परत बना देता है। यह क्लस्टर अच्छे से ढूँढता है, पर मात्रा छिपा देता है, क्योंकि इस पर कहीं नहीं लिखा होता कि किसी रंग का मतलब कितना है।
काम का नियम: दरें कोरोप्लेथ पर, गिनती बिंदुओं पर, और क्लस्टर ढूँढना हीटमैप पर। जब मुख्य समस्या एरिया बायस हो और इलाके के अंदर का ब्योरा मायने न रखे, तो कार्टोग्राम दूसरा उपाय है।
डॉट डेंसिटी मैप के उदाहरण
यह फ़ॉर्मेट इन जगहों पर सबसे ज़्यादा काम आता है:
- जनगणना क्षेत्र के हिसाब से आबादी, इसका सबसे जाना-माना इस्तेमाल। यहाँ बिंदु का रंग आबादी को समूहों में बाँटता है, और बिना कोई सीमा दिखाए बसावट के पैटर्न दिख जाते हैं।
- खेती की पैदावार। हर हज़ार मवेशियों पर एक बिंदु, या किसी फ़सल के हर सौ हेक्टेयर पर एक बिंदु। राष्ट्रीय एटलस में यह पुराना और आम इस्तेमाल है।
- पिन कोड के हिसाब से ग्राहक या ऑर्डर, निजता के लिए जोड़कर दिखाए गए, ताकि कोई बिंदु किसी एक घर तक न पहुँचे।
- घरों के प्रकार के हिसाब से आवास, फ़्लैट के लिए एक रंग और अलग मकानों के लिए दूसरा।
- दुकानों या प्रतिस्पर्धियों की मौजूदगी, जहाँ क्लस्टर ही असली जानकारी है।
- बीमारी के मामलों की गिनती, जब मकसद प्रति व्यक्ति जोखिम नहीं, बल्कि मामलों का जमाव दिखाना हो।
कई कैटेगरी वाला रूप वह काम करता है जो कोरोप्लेथ सच में नहीं कर सकता। एक पॉलीगॉन में दो रंग एक साथ नहीं भरे जा सकते, पर दो रंगों के बिंदु एक ही इलाके में रहकर अपना मेल दिखा सकते हैं।
बिंदुओं की जगह की समस्या
ज़्यादातर डॉट डेंसिटी मैप यहीं गलत होते हैं।
बिंदु आम तौर पर इलाके के पॉलीगॉन के अंदर रैंडम तरीके से बिखेरे जाते हैं। पूरे इलाके के बारे में यह ठीक है, पर इलाके के किसी खास हिस्से के बारे में यह गलत तस्वीर देता है। रैंडम बिखराव बिंदुओं को झीलों में, औद्योगिक इलाकों में, हवाई पट्टियों पर और उन पहाड़ी ढलानों पर डाल देता है जहाँ कोई नहीं रहता।
डेज़ीमेट्रिक प्लेसमेंट इसका हल है। पूरे पॉलीगॉन के बजाय बिंदुओं को सिर्फ़ उन हिस्सों में रखें जहाँ वह चीज़ सच में हो सकती है। इसके लिए एक मास्क इस्तेमाल करें: रिहायशी ज़मीन, इमारतों के फ़ुटप्रिंट या लैंड कवर लेयर। इलाके का कुल योग वही रहता है और बिंदु उन जगहों पर आते हैं जहाँ उनका होना मुमकिन है। आबादी के मैप के लिए ओपन मैप डेटा से इमारतों के फ़ुटप्रिंट आम मास्क हैं। पूरे देश के मैप के लिए मोटा लैंड कवर मास्क काफ़ी है।
दूसरा नियम मैप को हर बार एक जैसा रखता है: रैंडमनेस को सीड दें। बिना सीड वाला मैप हर बार लोड होने पर अलग दिखता है, और जो पढ़ने वाला यह देख लेता है, वह मैप पर भरोसा करना छोड़ देता है। बिंदु एक बार बनाएं, सेव करें, और हर बार वही सेट दिखाएं।
बिंदु मान चुनना
बिंदु मान तय करता है कि मैप पढ़ा भी जा सकेगा या नहीं। यह दो तरह से बिगड़ता है:
बहुत छोटा बिंदु मान इतने बिंदु बना देता है कि घने इलाके एक ठोस धब्बा बन जाते हैं। स्याही एक बार ठोस हो गई, तो और डेटा जोड़ने से कुछ नहीं बदलता, और मैप सबसे ऊँचे मानों को कम करके दिखाता है।
बहुत बड़ा बिंदु मान कम घने इलाकों में शून्य या एक बिंदु छोड़ता है, इसलिए ऐसे इलाकों के बीच के असली फ़र्क गायब हो जाते हैं।
शुरुआत के लिए मान लें कि डिफ़ॉल्ट ज़ूम पर पूरे मैप में लगभग दो हज़ार बिंदु होंगे, फिर मैप बनाकर मान बदलें। लक्ष्य यह है कि सबसे घने क्लस्टर में भी बनावट दिखे, ठोस रंग नहीं, और काम के डेटा वाले सबसे कम घने इलाके में भी कई बिंदु हों।
बिंदु मान उस ज़ूम लेवल पर निर्भर करता है जिस पर मैप देखा जाता है, और वेब पर यही मुश्किल हिस्सा है। पूरे देश के व्यू के लिए तय किया गया बिंदु मान शहर के ज़ूम पर भर जाता है। इसके दो आम हल हैं: मैप को एक ज़ूम पर लॉक करें और उसी के लिए मान तय करें, या हर ज़ूम रेंज के लिए अलग बिंदु सेट बनाएं और उन्हें बदलते रहें। दोनों में बताया गया बिंदु मान हमेशा लेजेंड में दिखना चाहिए।
डॉट डेंसिटी मैप कैसे बनाएं
यह काम चार चरणों में होता है:
- इलाकों के पॉलीगॉन लें, जिनकी ID स्थिर हो।
- हर इलाके के लिए एक गिनती जोड़ें, उन्हीं ID पर।
- बिंदु बनाएं: हर इलाके में
count / dotValueबिंदु, पॉलीगॉन के अंदर और हो सके तो मास्क के अंदर। - बिंदुओं को रेंडर करें, एक सर्कल लेयर के रूप में।
बिंदु बनाने का काम Turf कर देता है:
import randomPoint from '@turf/random';
import booleanPointInPolygon from '@turf/boolean-point-in-polygon';
import bbox from '@turf/bbox';
const DOT_VALUE = 100;
function dotsForRegion(feature, count) {
const target = Math.round(count / DOT_VALUE);
const box = bbox(feature);
const dots = [];
// रिजेक्शन सैंपलिंग: बाउंडिंग बॉक्स के अंदर पॉइंट बनाएं, जो पॉलीगॉन में गिरें उन्हें रखें
while (dots.length < target) {
const batch = randomPoint(target, { bbox: box }).features;
for (const point of batch) {
if (dots.length >= target) break;
if (booleanPointInPolygon(point, feature)) {
point.properties = { id: feature.properties.id, category: feature.properties.category };
dots.push(point);
}
}
}
return dots;
}
map.addLayer({
id: 'dots',
type: 'circle',
source: 'dot-density',
paint: {
'circle-radius': ['interpolate', ['linear'], ['zoom'], 4, 1.2, 10, 2.6],
'circle-color': ['match', ['get', 'category'], 'residential', '#12813D', 'commercial', '#B7A21F', '#406FBD'],
'circle-opacity': 0.75,
},
});
इस कोड के बारे में दो बातें। लंबे और पतले पॉलीगॉन में रिजेक्शन सैंपलिंग धीमी हो जाती है, क्योंकि बाउंडिंग बॉक्स का ज़्यादातर हिस्सा पॉलीगॉन से बाहर होता है। कुछ लाख से ज़्यादा बिंदु हों, तो पॉलीगॉन को त्रिभुजों में बाँटें और हर त्रिभुज के क्षेत्रफल के हिसाब से सैंपल करें, यह तरीका तेज़ है। दूसरी बात, ज़ूम के साथ रेडियस थोड़ा बढ़ता है, जिससे मैप का स्केल बदलने पर भी बनावट एक जैसी रहती है।
दूसरी सीमा परफ़ॉर्मेंस की है। MapLibre की सर्कल लेयर दसियों हज़ार बिंदु आराम से संभाल लेती है। उससे ज़्यादा हों, तो बिंदु सर्वर पर बनाएं, उन्हें वेक्टर टाइल में डालें, और कलिंग का काम टाइल पाइपलाइन पर छोड़ दें। दूसरा रास्ता Deck.gl की ScatterplotLayer है, जो GPU पर लाखों बिंदु संभाल लेती है।
किन गलतियों से बचें
ऐसी सटीकता दिखाना जो है ही नहीं। अगर बिंदु रैंडम तरीके से रखे गए हैं, तो कैप्शन में यह लिखें। वरना पढ़ने वाले किसी एक बिंदु का पता ढूँढने लगेंगे।
बिंदु मान न बताना। लेजेंड में साफ़ लिखा होना चाहिए कि एक बिंदु का मतलब क्या है, उतनी ही प्रमुखता से जितनी स्केल बार को मिलती है। इसके बिना मैप पैटर्न तो दिखाता है, पर मात्रा नहीं। इसे कैसे रखें, यह मैप लेजेंड गाइड में है।
ऊँचे ज़ूम पर बिंदुओं का एक-दूसरे पर चढ़ना। देश के ज़ूम पर जो बिंदु एक-दूसरे पर चढ़े होते हैं, गली के ज़ूम पर अलग हो जाते हैं और दिखा देते हैं कि वे कभी असली पते थे ही नहीं। अधिकतम ज़ूम सीमित करें, या लेयर बदल दें।
बहुत ज़्यादा कैटेगरी। बिंदुओं के तीन या चार रंग तक ठीक है, उसके बाद रंगों का मेल गड्डमड्ड हो जाता है। इससे ज़्यादा हों, तो छोटे-छोटे अलग मैप बनाएं।
दर को बिंदुओं से दिखाना। बिंदु चीज़ें गिनते हैं। प्रतिशत के डॉट डेंसिटी मैप का कोई सही मतलब नहीं निकलता।
MapAtlas यहाँ कैसे काम आता है
डॉट डेंसिटी मैप उतना ही अच्छा होता है जितनी उसके नीचे की ज्योमेट्री। Dynamic Maps API देश, क्षेत्र और पिन कोड की सीमाएं वेक्टर टाइल के रूप में, स्थिर ID के साथ देता है। इसलिए हर इलाके के लिए बिंदु बनाना डेटा साफ़ करने का काम नहीं, बस एक जॉइन रह जाता है। सीमाएं EU में होस्ट होती हैं और उन पर वर्ज़न दर्ज होता है, इसलिए अगली तिमाही में दोबारा बनाया गया मैप भी आपके प्रकाशित मैप से मेल खाएगा।
डेज़ीमेट्रिक प्लेसमेंट के लिए GeoEnrich के पीछे का POI और जगहों का डेटा आपको इमारतों और ज़मीन के इस्तेमाल की जानकारी देता है, ताकि बिंदु पानी और हवाई पट्टियों से दूर रहें। साथ ही यह उन्हीं ID पर हर इलाके का कुल डेटा देता है, जिससे गिनती बनती है। दरों वाले डेटा के लिए कोरोप्लेथ मैप गाइड देखें। थीमैटिक मैप के पूरे परिवार के लिए थीमैटिक मैप गाइड से शुरू करें।
अक्सर पूछे जाने वाले प्रश्न
डॉट डेंसिटी मैप क्या होता है?
डॉट डेंसिटी मैप एक थीमैटिक मैप है, जो इलाकों के अंदर बिंदु रखकर मात्रा दिखाता है। हर बिंदु एक तय संख्या के बराबर होता है। एक बिंदु का मतलब 100 लोग, 10 खेत या सिर्फ़ एक ग्राहक हो सकता है। देखने वाला बिंदुओं के घनेपन से मान का अंदाज़ा लगाता है, इसलिए मैप दोनों बातें दिखाता है: कितना है, और इलाके के अंदर कहाँ है।
डॉट डेंसिटी मैप और कोरोप्लेथ मैप में क्या अंतर है?
कोरोप्लेथ मैप हर इलाके को एक मान के लिए एक रंग से भरता है, इसलिए पूरा इलाका एक जैसा दिखता है। डॉट डेंसिटी मैप इलाके के अंदर बिंदु बिखेरता है। इससे इलाके के अंदर का फ़र्क दिखता है, और बड़े खाली इलाके बेवजह अहम नहीं लगते। दरों और जल्दी पढ़ने के लिए कोरोप्लेथ बेहतर है। गिनती, क्लस्टर दिखाने और एक ही मैप पर दो या ज़्यादा कैटेगरी की तुलना के लिए डॉट डेंसिटी मैप बेहतर है।
डॉट डेंसिटी मैप और हीटमैप में क्या अंतर है?
डॉट डेंसिटी मैप एक बताए गए बिंदु मान पर अलग-अलग बिंदु बनाता है, इसलिए देखने वाला गिन सकता है और असली संख्या वापस निकल आती है। हीटमैप पॉइंट डेटा को स्मूद करके एक लगातार रंगीन परत बना देता है, जिसकी कोई तय इकाई नहीं होती। इसे एक नज़र में पढ़ना आसान है, पर गिनती छिप जाती है। जब मात्रा मायने रखती हो तो बिंदु इस्तेमाल करें, और जब सिर्फ़ क्लस्टर ढूँढने हों तो हीटमैप।
डॉट डेंसिटी मैप में बिंदु मान कैसे चुनें?
ऐसा बिंदु मान चुनें जिससे सबसे घना इलाका घना तो दिखे पर गिना जा सके, और सबसे कम घना इलाका भी दिखता रहे। आम तरीका है उसी ज़ूम लेवल पर आज़माकर देखना, जिस पर मैप असल में देखा जाएगा: कुल संख्या को लगभग दो हज़ार बिंदुओं से भाग देकर शुरू करें, मैप बनाकर देखें, फिर मान बदलें। बहुत छोटा बिंदु मान शहरों को पूरी तरह स्याही से भर देता है, और बहुत बड़ा मान गाँवों वाले इलाकों को खाली दिखाता है।
क्या डॉट डेंसिटी मैप के बिंदु सही जगह पर होते हैं?
सिर्फ़ वन-टू-वन डॉट मैप में, जहाँ हर बिंदु असली कोऑर्डिनेट्स पर दर्ज एक असली चीज़ है। आम तौर पर बिंदु इलाके के अंदर रैंडम तरीके से बिखेरे जाते हैं, इसलिए कोई एक बिंदु किसी खास पते को नहीं दिखाता। डेज़ीमेट्रिक तरीके से बिंदुओं की जगह ज़्यादा सटीक बनाई जा सकती है। इसमें बिंदु सिर्फ़ उन हिस्सों में रखे जाते हैं जहाँ वह चीज़ सच में हो सकती है, जैसे झीलों और हवाई अड्डों के बजाय रिहायशी ज़मीन पर।
डॉट डेंसिटी मैप का इस्तेमाल कब करें?
तब, जब आपका डेटा दर नहीं बल्कि गिनती हो, जब इलाकों के आकार में बहुत फ़र्क हो, जब इलाके के अंदर का क्लस्टर कहानी का हिस्सा हो, या जब आप अलग-अलग रंग के बिंदुओं से कई कैटेगरी एक साथ दिखाना चाहें। तब इससे बचें, जब पढ़ने वाले को हर इलाके का सटीक मान चाहिए, जब मैप डैशबोर्ड पर बस एक सेकंड के लिए देखा जाएगा, या जब इलाके इतने छोटे हों कि कुछ बिंदुओं से कोई पैटर्न न बने।

