इस दस्तावेज़ में, Google Cloud Platform BigQuery और Google Maps Platform Datasets API में जगह की जानकारी के डेटा का इस्तेमाल करके, मैप डेटा विज़ुअलाइज़ेशन बनाने का तरीका और उदाहरण दिया गया है. उदाहरण के लिए, ओपन म्यूनिसिपल डेटा का विश्लेषण करना, दूरसंचार कवरेज मैप बनाना या मोबाइल वाहनों के बेड़े की गतिविधि के ट्रेस को विज़ुअलाइज़ करना.
मैप डेटा विज़ुअलाइज़ेशन, उपयोगकर्ताओं की दिलचस्पी बढ़ाने और जगह की जानकारी के डेटा के बारे में अहम जानकारी पाने के लिए एक बेहतरीन टूल है. जगह की जानकारी का डेटा वह डेटा होता है जिसमें पॉइंट, लाइन या पॉलीगॉन फ़ीचर होते हैं. उदाहरण के लिए, मौसम की जानकारी देने वाले मैप, यात्रा की योजना बनाने और तूफ़ानों से निपटने में लोगों की मदद करते हैं; बिज़नेस इंटेलिजेंस मैप की मदद से, उपयोगकर्ता अपने डेटा के विश्लेषण से जुड़ी अहम जानकारी हासिल कर सकते हैं. साथ ही, टेलिकम्यूनिकेशन मैप की मदद से उपयोगकर्ता, सेवा देने के किसी इलाके में कवरेज और क्वालिटी.
हालांकि, ऐप्लिकेशन डेवलपर के लिए बड़े मैप डेटा विज़ुअलाइज़ेशन बनाना मुश्किल है, जो बेहतर परफ़ॉर्म कर रहे हों और बेहतरीन उपयोगकर्ता अनुभव देते हों. मेमोरी क्लाइंट साइड में बड़ा डेटा लोड होना चाहिए. इससे, पहले मैप लोड होने में ज़्यादा समय लगता है. विज़ुअल की परफ़ॉर्मेंस, कम कीमत वाले ऐसे मोबाइल फ़ोन के साथ-साथ उन सभी डिवाइसों पर भी होनी चाहिए जिनमें मेमोरी और जीपीयू की कमी हो. आखिर में, डेवलपर को डेटा रेंडर करने वाली एक ऐसी बड़ी लाइब्रेरी चुननी होगी जो पोर्टेबल हो, भरोसेमंद हो, और जिसमें डेटा की परफ़ॉर्मेंस ज़्यादा अच्छी हो.
रेफ़रंस आर्किटेक्चर
बड़े डेटा विज़ुअलाइज़ेशन वाले ऐप्लिकेशन बनाने के लिए दो मुख्य कॉम्पोनेंट की ज़रूरत होती है.
- ग्राहक बैकएंड - सभी बैकएंड ऐप्लिकेशन डेटा और जैसे कि उसे प्रोसेस करना और स्टोर करना.
- कस्टमर क्लाइंट - मैप विज़ुअलाइज़ेशन कॉम्पोनेंट के साथ आपके ऐप्लिकेशन का यूज़र इंटरफ़ेस.
नीचे एक सिस्टम डायग्राम दिया गया है, जिसमें यह दिखाया गया है कि ये दो कॉम्पोनेंट, बड़े डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन बनाने के लिए, ऐप्लिकेशन के उपयोगकर्ता, Google Cloud, और Google Maps Platform के साथ कैसे इंटरैक्ट करते हैं.
डिज़ाइन पर ध्यान देना
Google Cloud और Google Maps Platform का इस्तेमाल करके, बेहतर परफ़ॉर्म करने वाला डेटा विज़ुअलाइज़ेशन बनाने के लिए, कई डिज़ाइन से जुड़ी ज़रूरी बातों का ध्यान रखना होता है.
- डेटा का साइज़ और अपडेट का अंतराल.
- अगर geojson फ़ॉर्मैट में सोर्स डेटा <5 एमबी है या इसे बार-बार अपडेट किया जाता है, जैसे कि अगर आपको मौसम का लाइव पूर्वानुमान लगाना है, तो अपने ऐप्लिकेशन में डेटा को geojson ऑब्जेक्ट के क्लाइंट साइड के तौर पर दिखाएं और deck.gl की लेयर के साथ रेंडर करें.
- अगर आपके डेटा का साइज़ पांच एमबी से ज़्यादा है और इसे एक घंटे में एक से ज़्यादा बार अपडेट नहीं किया जाता है, तो इस दस्तावेज़ में दिए गए Datasets API आर्किटेक्चर का इस्तेमाल करें.
- डेटासेट 350 एमबी तक के साइज़ वाली फ़ाइलों के साथ काम करते हैं.
- अगर आपके डेटा का साइज़ 350 एमबी से ज़्यादा है, तो डेटासेट पास करने से पहले, सोर्स फ़ाइल में ज्यामिति डेटा में काट-छांट करें या उसे आसान बनाएं. (नीचे, डेटा की काट-छांट करना देखें).
- स्कीमा और फ़ॉर्मैट
- पक्का करें कि हर सुविधा के लिए, आपके डेटा में दुनिया भर में इस्तेमाल होने वाली यूनीक आईडी प्रॉपर्टी हो. यूनीक आईडी की मदद से, किसी सुविधा को चुना जा सकता है और उसे स्टाइल किया जा सकता है. इसके अलावा, किसी सुविधा को विज़ुअलाइज़ करने के लिए डेटा को उसके साथ जोड़ा जा सकता है. उदाहरण के लिए, उपयोगकर्ता इवेंट के लिए “क्लिक” करने के लिए चुनी गई सुविधा की स्टाइल.
- अपने डेटा को Datasets API की खास जानकारी के हिसाब से CSV या GeoJSON के तौर पर फ़ॉर्मैट करें. इसमें कॉलम के मान्य नाम, डेटा टाइप, और GeoJSON ऑब्जेक्ट के टाइप शामिल करें.
- BigQuery से आसानी से डेटासेट बनाने के लिए, एसक्यूएल CSV एक्सपोर्ट में
wkt
नाम का कॉलम बनाएं. डेटासेट,wkt
नाम के कॉलम से वेल-नो टेक्स्ट (WKT) फ़ॉर्मैट में CSV फ़ाइल से ज्यामिति इंपोर्ट करने की सुविधा देते हैं. - देखें कि आपका डेटा मान्य ज्यामिति और डेटा टाइप है या नहीं. उदाहरण के लिए, GeoJSON को WGS84 कोऑर्डिनेट सिस्टम, ज्यामिति विंग ऑर्डर वगैरह में होना चाहिए.
- यह पक्का करने के लिए कि किसी सोर्स फ़ाइल में मौजूद सभी जियोमेट्री मान्य हैं या ogr2ogr जैसे कई फ़ॉर्मैट या कोऑर्डिनेट सिस्टम को सोर्स फ़ाइल में बदलने के लिए, geojson-validate जैसे टूल का इस्तेमाल करें.
- डेटा की काट-छांट करना
- सुविधाओं के गुणों की संख्या कम से कम करें. यूनीक आइडेंटिफ़ायर कुंजी की मदद से, रनटाइम के दौरान किसी सुविधा में अन्य प्रॉपर्टी जोड़ी जा सकती हैं (उदाहरण).
- जहां भी हो सके, प्रॉपर्टी ऑब्जेक्ट के लिए इंटीजर डेटा टाइप का इस्तेमाल करें, ताकि टाइल के स्टोरेज को कम किया जा सके. साथ ही, क्लाइंट ऐप्लिकेशन में टाइल की परफ़ॉर्मेंस को एचटीटीपीएस पर लोड करने के लिए सेट किया जा सके.
- बेहद जटिल सुविधाओं की ज्यामितियों को आसान बनाना और/या इकट्ठा करना; सोर्स फ़ाइल का साइज़ कम करने और मैप की परफ़ॉर्मेंस को बेहतर बनाने के लिए, जटिल पॉलीगॉन जियोमेट्री पर ST_Simplify जैसे BigQuery फ़ंक्शन का इस्तेमाल करें.
- टाइलिंग
- वेब या मोबाइल Maps SDK टूल के साथ इस्तेमाल करने के लिए, Google Maps Datasets API आपकी सोर्स डेटा फ़ाइल से मैप टाइल बनाता है.
- मैप टाइल, ज़ूम करने पर आधारित सिस्टम होती हैं. इनकी मदद से, विज़ुअल ऐप्लिकेशन में बेहतर तरीके से डेटा लोड किया जा सकता है.
- कम ज़ूम स्तर पर मैप टाइल में सघन या जटिल सुविधाएं कम हो सकती हैं. जब कोई उपयोगकर्ता किसी राज्य या देश (जैसे कि z5-z12) को ज़ूम आउट करता है, तो वह किसी शहर या आस-पड़ोस (उदाहरण के लिए z13-z18) में ज़ूम इन करने पर अलग दिखाई दे सकता है.
उदाहरण - लंदन में रेलवे
इस उदाहरण में, हम रेफ़रंस आर्किटेक्चर को इस्तेमाल करके, GCP और Google Maps की मदद से एक वेब ऐप्लिकेशन बनाएंगे. यह ऐप्लिकेशन, ओपन स्ट्रीट मैप (ओएसएम) के डेटा की मदद से, लंदन की सभी रेलों को विज़ुअलाइज़ करता है.
ज़रूरी शर्तें
- BigQuery सैंडबॉक्स और Cloud Console का ऐक्सेस
- पक्का करें कि आपके पास GCP प्रोजेक्ट और बिलिंग खाता सेटअप है.
पहला चरण - BigQuery में क्वेरी डेटा
BigQuery सार्वजनिक डेटासेट पर जाएं. डेटासेट 'bigquery-public-data' और टेबल geo_openstreetmap.planet_features
में, ग्लोब की सभी संभावित सुविधाओं के साथ ओपन स्ट्रीट मैप (ओएसएम) का पूरा डेटा मौजूद है. OSM Wiki में क्वेरी करने के लिए उपलब्ध सभी सुविधाओं का पता लगाएं, जिनमें amenity
, road
और landuse
शामिल हैं.
एसक्यूएल का इस्तेमाल करके टेबल पर क्वेरी करने के लिए, Cloud Shell या BigQuery Cloud Console(https://console.cloud.google.com) का इस्तेमाल करें. नीचे दिया गया कोड स्निप बाउंडिंग बॉक्स और ST_Intersects() फ़ंक्शन का इस्तेमाल करके, सिर्फ़ लंदन तक फ़िल्टर किए गए सभी रेलवे के लिए क्वेरी करने के लिए bq query कमांड का इस्तेमाल करता है.
Cloud Shell से यह क्वेरी करने के लिए, नीचे दिए गए कोड को स्निप से चलाएं. इसके बाद, अपने एनवायरमेंट का प्रोजेक्ट आईडी, डेटासेट, और टेबल का नाम अपडेट करें.
bq query --use_legacy_sql=false \
--destination_table PROJECTID:DATASET.TABLENAME \
--replace \
'SELECT
osm_id,
feature_type,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "name") AS name,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "railway") AS railway,
geometry as wkt
FROM bigquery-public-data.geo_openstreetmap.planet_features
WHERE ("railway") IN (SELECT key FROM unnest(all_tags))
AND ST_Intersects(
geometry,
ST_MakePolygon(ST_MakeLine(
[ST_GeogPoint(-0.549370, 51.725346),
ST_GeogPoint(-0.549370, 51.2529407),
ST_GeogPoint(0.3110581, 51.25294),
ST_GeogPoint(0.3110581, 51.725346),
ST_GeogPoint(-0.549370, 51.725346)]
))
)'
क्वेरी से यह पता चलता है:
- हर सुविधा
osm_id
के लिए यूनीक आइडेंटिफ़ायर feature_type
जैसे पॉइंट, लाइन वगैरह- सुविधा का
name
, जैसे किPaddington Station
railway
टाइप, जैसे कि मुख्य, पर्यटन, सेना वगैरह- सुविधा का
wkt
- WKT फ़ॉर्मैट में पॉइंट, लाइन या पॉलीगॉन ज्यामिति. WKT, स्टैंडर्ड डेटा फ़ॉर्मैट है जो BigQuery जियोग्राफ़ी कॉलम को क्वेरी में दिखाता है.
ध्यान दें - डेटासेट बनाने से पहले, क्वेरी के नतीजों की विज़ुअल तौर पर पुष्टि करने के लिए, Looker Studio का इस्तेमाल करके, BigQuery के डैशबोर्ड में अपने डेटा को तुरंत विज़ुअलाइज़ किया जा सकता है.
टेबल को Google Cloud Storage बकेट में CSV फ़ाइल में एक्सपोर्ट करने के लिए, Cloud Shell में bq निकालें कमांड का इस्तेमाल करें:
bq extract \
--destination_format "CSV" \
--field_delimiter "," \
--print_header=true \
PROJECTID:DATASET.TABLENAME \
gs://BUCKET/FILENAME.csv
ध्यान दें: क्लाउड शेड्यूलर का इस्तेमाल करके, डेटा को नियमित तौर पर अपडेट करने के लिए, हर चरण को ऑटोमेट किया जा सकता है.
दूसरा चरण - अपनी CSV फ़ाइल से डेटासेट बनाएं
इसके बाद, Google Cloud Storage (GCS) पर मिले क्वेरी आउटपुट से Google Maps Platform का डेटासेट बनाएं. Datasets API का इस्तेमाल करके, आप एक डेटासेट बना सकते हैं. इसके बाद, GCS (जीसीएस) पर होस्ट की गई फ़ाइल से, डेटा को अपने डेटासेट में अपलोड कर सकते हैं.
शुरू करने के लिए, अपने GCP प्रोजेक्ट पर Maps Datasets API चालू करें. साथ ही, एपीआई दस्तावेज़ देखें. आपके ऐप्लिकेशन के बैकएंड में, लॉजिक से Datasets API को कॉल करने के लिए Python और Node.js क्लाइंट लाइब्रेरी मौजूद हैं. इसके अलावा, Cloud Console में मैन्युअल तरीके से डेटासेट बनाने के लिए, एक डेटासेट जीयूआई मौजूद है.
डेटासेट अपलोड होने के बाद, डेटासेट GUI में अपने डेटासेट की झलक देखी जा सकती है.
चौथा चरण - अपने डेटासेट को मैप आईडी से जोड़ें
डेटासेट बनाने के बाद, उससे जुड़े मैप की स्टाइल के साथ मैप आईडी बनाया जा सकता है. मैप स्टाइल एडिटर में, मैप आईडी और स्टाइल को डेटासेट के साथ जोड़ा जा सकता है. यहां पर क्लाउड आधारित मैप स्टाइलिंग का इस्तेमाल करके, अपने मैप के लुक और स्टाइल को पसंद के मुताबिक बनाया जा सकता है.
पांचवां चरण - अपने क्लाइंट ऐप्लिकेशन मैप विज़ुअलाइज़ेशन बनाना
आखिर में, Maps JS API का इस्तेमाल करके, डेटासेट को क्लाइंट-साइड डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन में जोड़ा जा सकता है. पिछले चरण में अपने डेटासेट से जुड़े MapsID का इस्तेमाल करके, मैप ऑब्जेक्ट को शुरू करें. इसके बाद, अपने डेटासेट लेयर की स्टाइल और इंटरैक्टिविटी सेट करें. ज़्यादा जानकारी के लिए, डेटासेट के साथ डेटा ड्रिवन स्टाइलिंग के बारे में बताने वाली पूरी गाइड देखें.
Maps JS API का इस्तेमाल करके, स्टाइल को पसंद के मुताबिक बनाया जा सकता है और डाइनैमिक तौर पर बदलने के लिए इवेंट हैंडलर जोड़े जा सकते हैं. साथ ही, और भी बहुत कुछ किया जा सकता है. दस्तावेज़ में उदाहरण देखें. इस उदाहरण के लिए, हम “feature_type” एट्रिब्यूट के आधार पर पॉइंट और लाइन फ़ीचर स्टाइल बनाने के लिए, setStyle फ़ंक्शन बताएंगे.
function setStyle(params) {
const map.getDatasetFeatureLayer("your-dataset-id");
const datasetFeature = params.feature;
const type = datasetFeature.datasetAttributes["feature_type"];
if (type == "lines") {
return {
fillColor: "blue",
strokeColor: "blue",
fillOpacity: 0.5,
strokeWeight: 1,
}
} else if (type == "points") {
return {
fillColor: "black",
strokeColor: "black",
strokeOpacity: 0.5,
pointRadius: 2,
fillOpacity: 0.5,
strokeWeight: 1,
}
}
}
नोट - अपने डेटासेट के लिए हमेशा अपने मैप ऐप्लिकेशन में एट्रिब्यूशन जोड़ना न भूलें. ओएसएम एट्रिब्यूशन जोड़ने के लिए, ओएसएम दिशा-निर्देशों का पालन करते हुए, Docs में एट्रिब्यूशन कोड के उदाहरण का पालन करें.
किसी एक पेज वाले वेब ऐप्लिकेशन में शुरू किए जाने पर, ऊपर दिया गया यह कोड, मैप डेटा को विज़ुअल तौर पर दिखाता है:
यहां से, फ़ीचर फ़िल्टर करने के लिए लॉजिक जोड़कर, उपयोगकर्ता इंटरैक्शन के आधार पर स्टाइल जोड़कर, और अपने बाकी ऐप्लिकेशन के साथ इंटरैक्ट करके, setStyle() फ़ंक्शन में अपने मैप विज़ुअलाइज़ेशन को बढ़ाया जा सकता है.
नतीजा
इस लेख में, हमने Google Cloud और Google Maps Platform का इस्तेमाल करके, रेफ़रंस आर्किटेक्चर और बड़े डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन को लागू करने के उदाहरण के बारे में बताया. इस रेफ़रंस आर्किटेक्चर का इस्तेमाल करके, GCP BigQuery में मौजूद ऐसे किसी भी डेटा से जगह की जानकारी का डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन बनाया जा सकता है जो Google Maps Datasets API का इस्तेमाल करके किसी भी डिवाइस पर परफ़ॉर्म कर सकता है.
अगली कार्रवाइयां
आगे का लेख:
- Google Maps Platform Datasets API दस्तावेज़
- डेटा ड्राइव की स्टाइल की मदद से, रीयल टाइम में अपना डेटा देखना
- BigQuery में जियोस्पेशियल ऐनलिटिक्स के बारे में जानकारी
- जियोस्पेशियल ऐनलिटिक्स के लिए, BigQuery में GeoJSON का इस्तेमाल करना
योगदानकर्ता
मुख्य लेखक:
- रायन बॉमैन, Google Maps Platform सलूशन इंजीनियरिंग मैनेजर