इस दस्तावेज़ में, Google Cloud Platform BigQuery और Google Maps Platform डेटासेट API में जगह की जानकारी के डेटा के साथ, मैप डेटा विज़ुअलाइज़ेशन बनाने के लिए रेफ़रंस आर्किटेक्चर और उदाहरण दिया गया है. जैसे, ओपन तौर पर उपलब्ध नगरपालिका के डेटा का विश्लेषण करना, दूरसंचार कवरेज का मैप बनाना या मोबाइल वाहन के फ़्लीट की गतिविधियों को विज़ुअलाइज़ करना.
मैप डेटा विज़ुअलाइज़ेशन, उपयोगकर्ताओं से जुड़ने और जगह की जानकारी वाले डेटा में जगह की अहम जानकारी पाने के लिए एक बेहतरीन टूल है. जगह की जानकारी का डेटा, पॉइंट, लाइन या पॉलीगॉन फ़ीचर वाला डेटा होता है. उदाहरण के लिए, मौसम के नक्शे से उपभोक्ताओं को यात्रा की जानकारी मिलती है और वे यात्रा की योजना बना पाते हैं. साथ ही, इनसे वे तूफान से बचने के लिए तैयारी कर पाते हैं. बिज़नेस इंटेलिजेंस के नक्शे से, उपयोगकर्ताओं को अपने डेटा के विश्लेषण से अहम जानकारी मिलती है. टेलीकम्यूनिकेशन के नक्शे से, उपयोगकर्ताओं को किसी सेवा क्षेत्र में सेवा देने वाली कंपनियों की कवरेज और क्वालिटी के बारे में जानकारी मिलती है.
हालांकि, ऐप्लिकेशन डेवलपर के लिए बड़े डेटा के विज़ुअलाइज़ेशन बनाना मुश्किल होता है. इन विज़ुअलाइज़ेशन की परफ़ॉर्मेंस अच्छी होनी चाहिए और इनसे उपयोगकर्ता को बेहतर अनुभव मिलना चाहिए. ज़्यादा डेटा को क्लाइंट साइड की मेमोरी में लोड करना ज़रूरी है. इस वजह से, मैप को पहली बार लोड होने में ज़्यादा समय लगता है. विज़ुअल सभी डिवाइसों पर अच्छा परफ़ॉर्म करना चाहिए. इनमें ऐसे मोबाइल फ़ोन भी शामिल हैं जिनमें मेमोरी और जीपीयू की समस्याएं हैं. आखिर में, डेवलपर को डेटा रेंडर करने वाली एक ऐसी बड़ी लाइब्रेरी चुननी होगी जो पोर्टेबल हो, भरोसेमंद हो, और जिसमें डेटा की परफ़ॉर्मेंस ज़्यादा अच्छी हो.
रेफ़रंस आर्किटेक्चर
ज़्यादा डेटा विज़ुअलाइज़ेशन वाले ऐप्लिकेशन बनाने के लिए, दो मुख्य कॉम्पोनेंट की ज़रूरत होती है.
- ग्राहक का बैकएंड - ऐप्लिकेशन का बैकएंड डेटा और सेवाएं, जैसे कि प्रोसेसिंग और स्टोरेज.
- ग्राहक क्लाइंट - आपके ऐप्लिकेशन का यूज़र इंटरफ़ेस, जिसमें मैप विज़ुअलाइज़ेशन कॉम्पोनेंट है.
यहां सिस्टम का एक डायग्राम दिया गया है. इससे पता चलता है कि बड़े डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन बनाने के लिए, ये दो कॉम्पोनेंट ऐप्लिकेशन के उपयोगकर्ता, Google Cloud, और Google Maps Platform के साथ कैसे इंटरैक्ट करते हैं.
डिज़ाइन से जुड़ी बातें
Google Cloud और Google Maps Platform का इस्तेमाल करके, बेहतर परफ़ॉर्म करने वाला डेटा विज़ुअलाइज़ेशन बनाने के लिए, कई डिज़ाइन से जुड़ी ज़रूरी बातों का ध्यान रखना होता है.
- सोर्स डेटा का साइज़ और अपडेट का फ़्रीक्वेंसी.
- अगर जियोजॉन फ़ॉर्मैट में सोर्स डेटा 5 एमबी से कम है या बार-बार अपडेट होता है, जैसे कि मौसम का लाइव रेडार पूर्वानुमान, तो अपने ऐप्लिकेशन में डेटा को क्लाइंट साइड के तौर पर जियोजॉन ऑब्जेक्ट के तौर पर दिखाएं और deck.gl लेयर के साथ रेंडर करें.
- अगर आपके डेटा का साइज़ पांच एमबी से ज़्यादा है और इसे एक घंटे में एक से ज़्यादा बार अपडेट नहीं किया जाता है, तो इस दस्तावेज़ में दिए गए Datasets API आर्किटेक्चर का इस्तेमाल करें.
- डेटासेट 350 एमबी तक के साइज़ वाली फ़ाइलों के साथ काम करते हैं.
- अगर आपका डेटा 350 एमबी से ज़्यादा है, तो डेटासेट में भेजने से पहले, सोर्स फ़ाइल में मौजूद ज्यामिति डेटा को छोटा या आसान बनाएं. इसके लिए, नीचे डेटा को छोटा करने का तरीका देखें.
- स्कीमा और फ़ॉर्मैट
- पक्का करें कि हर सुविधा के लिए, आपके डेटा में दुनिया भर में इस्तेमाल होने वाली यूनीक आईडी प्रॉपर्टी हो. यूनीक आईडी की मदद से, किसी खास सुविधा को चुना और स्टाइल किया जा सकता है. इसके अलावा, किसी सुविधा के डेटा को विज़ुअलाइज़ करने के लिए, उससे जुड़ा डेटा भी जोड़ा जा सकता है. उदाहरण के लिए, “क्लिक” उपयोगकर्ता इवेंट पर चुनी गई सुविधा को स्टाइल करना.
- अपने डेटा को Datasets API की खास जानकारी के हिसाब से CSV या GeoJSON के तौर पर फ़ॉर्मैट करें. इसमें कॉलम के मान्य नाम, डेटा टाइप, और GeoJSON ऑब्जेक्ट के टाइप शामिल करें.
- BigQuery से डेटासेट आसानी से बनाने के लिए, अपने SQL CSV एक्सपोर्ट में
wkt
नाम का कॉलम बनाएं. डेटासेट,wkt
नाम के कॉलम से Well-Known Text (WKT) फ़ॉर्मैट में CSV से ज्यॉमेट्री इंपोर्ट करने की सुविधा देता है. - पक्का करें कि आपका डेटा, मान्य ज्यामिति और डेटा टाइप हो. उदाहरण के लिए, GeoJSON, WGS84 कॉर्डिनेट सिस्टम, ज्यामिति के घुमाव के क्रम वगैरह में होना चाहिए.
- यह पक्का करने के लिए कि किसी सोर्स फ़ाइल में मौजूद सभी जियोमेट्री मान्य हैं या ogr2ogr, जैसे geojson-verification जैसे टूल का इस्तेमाल करें. इससे किसी सोर्स फ़ाइल को एक फ़ॉर्मैट या कोऑर्डिनेट सिस्टम में बदलने में मदद मिलती है.
- डेटा प्रूनिंग
- सुविधाओं की प्रॉपर्टी की संख्या कम करें. यूनीक आइडेंटिफ़ायर कुंजी की मदद से, रनटाइम के दौरान किसी सुविधा में अन्य प्रॉपर्टी जोड़ी जा सकती हैं (उदाहरण).
- टाइल के स्टोरेज स्पेस को कम करने के लिए, जहां भी हो सके प्रॉपर्टी ऑब्जेक्ट के लिए इंटीजर डेटा टाइप का इस्तेमाल करें. इससे क्लाइंट ऐप्लिकेशन में एचटीटीपीएस के ज़रिए टाइल लोड करने की परफ़ॉर्मेंस बेहतर बनी रहती है.
- बहुत जटिल सुविधाओं की ज्यामिति को आसान बनाएं और/या इकट्ठा करें. सोर्स फ़ाइल के साइज़ को कम करने और मैप की परफ़ॉर्मेंस को बेहतर बनाने के लिए, जटिल पॉलीगॉन ज्यामिति पर ST_Simplify जैसे BigQuery फ़ंक्शन का इस्तेमाल करें.
- टाइलिंग
- Google Maps डेटासेट एपीआई, आपकी सोर्स डेटा फ़ाइल से मैप टाइल बनाता है. इन टाइल का इस्तेमाल, वेब या मोबाइल के लिए Maps SDK टूल के साथ किया जा सकता है.
- मैप टाइल, ज़ूम पर आधारित इंडेक्सिंग सिस्टम है. यह विज़ुअल ऐप्लिकेशन में डेटा लोड करने के ज़्यादा असरदार तरीके उपलब्ध कराता है.
- ज़ूम लेवल कम होने पर, मैप टाइल में घनी या जटिल सुविधाएं नहीं दिख सकतीं. जब कोई उपयोगकर्ता किसी राज्य या देश (जैसे, z5-z12) पर ज़ूम आउट करता है, तो उसे किसी शहर या मोहल्ले (जैसे, z13-z18) पर ज़ूम इन करने से अलग नतीजे मिल सकते हैं.
उदाहरण - लंदन में रेलवे
इस उदाहरण में, हम रेफ़रंस आर्किटेक्चर को इस्तेमाल करके, GCP और Google Maps की मदद से एक वेब ऐप्लिकेशन बनाएंगे. यह ऐप्लिकेशन, ओपन स्ट्रीट मैप (ओएसएम) के डेटा की मदद से, लंदन की सभी रेलों को विज़ुअलाइज़ करता है.
ज़रूरी शर्तें
- BigQuery सैंडबॉक्स और Cloud Console का ऐक्सेस
- पक्का करें कि आपके पास GCP प्रोजेक्ट और बिलिंग खाता सेट अप हो.
पहला चरण - BigQuery में क्वेरी डेटा
BigQuery के सार्वजनिक डेटासेट पर जाएं. डेटासेट 'bigquery-public-data' और टेबल geo_openstreetmap.planet_features
में, दुनिया भर का Open Street Map (OSM) डेटा शामिल है. इसमें सभी संभावित सुविधाएं भी शामिल हैं. 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
ध्यान दें: अपने डेटा को नियमित तौर पर अपडेट करने के लिए, Cloud Scheduler का इस्तेमाल करके हर चरण को ऑटोमेट किया जा सकता है.
दूसरा चरण - अपनी CSV फ़ाइल से डेटासेट बनाना
इसके बाद, Google Cloud Storage (GCS) पर मिले क्वेरी आउटपुट से Google Maps Platform का डेटासेट बनाएं. Datasets API का इस्तेमाल करके, डेटासेट बनाया जा सकता है. इसके बाद, GCS पर होस्ट की गई फ़ाइल से डेटा को अपने डेटासेट में अपलोड किया जा सकता है.
शुरू करने के लिए, अपने GCP प्रोजेक्ट में Maps डेटासेट एपीआई चालू करें और एपीआई दस्तावेज़ देखें. आपके ऐप्लिकेशन के बैकएंड में लॉजिक से Datasets API को कॉल करने के लिए, Python और Node.js क्लाइंट लाइब्रेरी उपलब्ध हैं. इसके अलावा, Cloud Console में मैन्युअल तरीके से डेटासेट बनाने के लिए, डेटासेट जीयूआई भी उपलब्ध है.
डेटासेट अपलोड होने के बाद, डेटासेट GUI में अपने डेटासेट की झलक देखी जा सकती है.
चौथा चरण - अपने डेटासेट को मैप आईडी से जोड़ना
डेटासेट बनाने के बाद, उससे जुड़े मैप स्टाइल के साथ मैप आईडी बनाया जा सकता है. मैप स्टाइल एडिटर में, डेटासेट के साथ कोई मैप आईडी और स्टाइल जोड़ा जा सकता है. यहां क्लाउड पर मैप की स्टाइलिंग की सुविधा भी लागू की जा सकती है, ताकि आप अपने मैप को पसंद के मुताबिक बना सकें.
पांचवां चरण - अपने क्लाइंट ऐप्लिकेशन का मैप विज़ुअलाइज़ेशन बनाना
आखिर में, Maps JS API का इस्तेमाल करके, डेटासेट को क्लाइंट-साइड डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन में जोड़ा जा सकता है. पिछले चरण में दिए गए डेटासेट से जुड़े mapID का इस्तेमाल करके, अपना मैप ऑब्जेक्ट शुरू करें. इसके बाद, अपनी डेटासेट लेयर की स्टाइल और इंटरैक्टिविटी सेट करें. ज़्यादा जानकारी के लिए, डेटासेट के साथ डेटा ड्रिवन स्टाइलिंग के बारे में बताने वाली पूरी गाइड देखें.
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,
}
}
}
ध्यान दें - अपने मैप ऐप्लिकेशन में, डेटासेट के लिए हमेशा एट्रिब्यूशन जोड़ना न भूलें. OSM एट्रिब्यूशन जोड़ने के लिए, OSM के दिशा-निर्देशों का पालन करते हुए, दस्तावेज़ों में एट्रिब्यूशन कोड के उदाहरण का पालन करें.
किसी एक पेज वाले वेब ऐप्लिकेशन में शुरू किए जाने पर, ऊपर दिया गया यह कोड, मैप डेटा को विज़ुअल तौर पर दिखाता है:
यहां से, setStyle() फ़ंक्शन में अपने मैप विज़ुअलाइज़ेशन को बढ़ाया जा सकता है. इसके लिए, सुविधाओं को फ़िल्टर करने के लिए लॉजिक जोड़ें, उपयोगकर्ता के इंटरैक्शन के आधार पर स्टाइल जोड़ें, और अपने बाकी ऐप्लिकेशन के साथ इंटरैक्ट करें.
नतीजा
इस लेख में, हमने Google Cloud और Google Maps Platform का इस्तेमाल करके, रेफ़रंस आर्किटेक्चर और बड़े डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन को लागू करने के उदाहरण के बारे में बताया. इस रेफ़रंस आर्किटेक्चर का इस्तेमाल करके, GCP BigQuery में मौजूद किसी भी डेटा से जगह की जानकारी दिखाने वाले विज़ुअलाइज़ेशन ऐप्लिकेशन बनाए जा सकते हैं. ये ऐप्लिकेशन, Google Maps डेटासेट एपीआई का इस्तेमाल करके, किसी भी डिवाइस पर बेहतर तरीके से काम करते हैं.
अगली कार्रवाइयां
इस बारे में ज़्यादा जानने के लिए:
- Google Maps Platform Datasets API का दस्तावेज़
- डेटा ड्राइव की स्टाइल की मदद से, रीयल टाइम में अपना डेटा देखना
- BigQuery में जियोस्पेशियल ऐनलिटिक्स के बारे में जानकारी
- जियोस्पेशल ऐनलिटिक्स के लिए, BigQuery में GeoJSON का इस्तेमाल करना
योगदानकर्ता
मुख्य लेखक:
- रयान बाउमन, Google Maps Platform के सलूशन इंजीनियरिंग मैनेजर