BigQuery और Dataset API की मदद से, अपना डेटा विज़ुअलाइज़ करें

इस दस्तावेज़ में, Google Cloud BigQuery और Google Maps Platform डेटासेट एपीआई में जगह की जानकारी वाले डेटा के साथ मैप डेटा विज़ुअलाइज़ेशन बनाने के लिए, रेफ़रंस आर्किटेक्चर और उदाहरण दिया गया है. जैसे, खुले तौर पर उपलब्ध नगरपालिका के डेटा का विश्लेषण करना, टेलीकम्यूनिकेशन कवरेज का मैप बनाना या मोबाइल वाहन के फ़्लीट की गतिविधियों को विज़ुअलाइज़ करना.

मैप डेटा विज़ुअलाइज़ेशन, उपयोगकर्ताओं को जोड़ने और जगह की जानकारी वाले डेटा में जगह के हिसाब से अहम जानकारी पाने के लिए एक बेहतरीन टूल है. जगह की जानकारी का डेटा, ऐसा डेटा होता है जिसमें पॉइंट, लाइन या पॉलीगॉन की सुविधाएं होती हैं. उदाहरण के लिए, मौसम के नक्शे से उपभोक्ताओं को यात्रा की जानकारी मिलती है और वे यात्रा की योजना बना पाते हैं. साथ ही, इनसे वे तूफ़ानों से बचने के लिए तैयारी कर पाते हैं. बिज़नेस इंटेलिजेंस के नक्शे से, उपयोगकर्ताओं को अपने डेटा के विश्लेषण से अहम जानकारी मिलती है. टेलीकम्यूनिकेशन के नक्शे से, उपयोगकर्ताओं को किसी सेवा क्षेत्र में सेवा देने वाली कंपनियों की कवरेज और क्वालिटी के बारे में जानकारी मिलती है.

हालांकि, ऐप्लिकेशन डेवलपर के लिए बड़े डेटा के मैप विज़ुअलाइज़ेशन बनाना मुश्किल होता है. ऐसा इसलिए, क्योंकि ये विज़ुअलाइज़ेशन अच्छी परफ़ॉर्मेंस देते हैं और उपयोगकर्ताओं को बेहतर अनुभव देते हैं. ज़्यादा डेटा को क्लाइंट साइड की मेमोरी में लोड करना ज़रूरी है. इस वजह से, मैप को पहली बार लोड होने में ज़्यादा समय लगता है. विज़ुअल सभी डिवाइसों पर बेहतर तरीके से काम करना चाहिए. इनमें ऐसे मोबाइल फ़ोन भी शामिल हैं जिनमें मेमोरी और जीपीयू की समस्याएं होती हैं. आखिर में, डेवलपर को बड़ी डेटा रेंडरिंग लाइब्रेरी चुननी होगी. यह लाइब्रेरी, पोर्टेबल, भरोसेमंद, और बड़े डेटा के साथ बेहतर परफ़ॉर्म करने वाली होनी चाहिए.

रेफ़रंस आर्किटेक्चर

ज़्यादा डेटा विज़ुअलाइज़ेशन वाले ऐप्लिकेशन बनाने के लिए, दो मुख्य कॉम्पोनेंट की ज़रूरत होती है.

  1. ग्राहक का बैकएंड - ऐप्लिकेशन का बैकएंड डेटा और सेवाएं, जैसे कि प्रोसेसिंग और स्टोरेज.
  2. ग्राहक क्लाइंट - आपके ऐप्लिकेशन का यूज़र इंटरफ़ेस, जिसमें मैप विज़ुअलाइज़ेशन कॉम्पोनेंट है.

यहां सिस्टम का डायग्राम दिया गया है. इससे पता चलता है कि बड़े डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन बनाने के लिए, ये दो कॉम्पोनेंट ऐप्लिकेशन के उपयोगकर्ता, Google Cloud, और Google Maps Platform के साथ कैसे इंटरैक्ट करते हैं.

आर्किटेक्चर डायग्राम

डिज़ाइन से जुड़ी बातें

Google Cloud और Google Maps Platform का इस्तेमाल करके, बेहतर परफ़ॉर्म करने वाला डेटा विज़ुअलाइज़ेशन बनाने के लिए, डिज़ाइन से जुड़ी कई बातों का ध्यान रखना ज़रूरी है.

  1. सोर्स डेटा का साइज़ और अपडेट होने की फ़्रीक्वेंसी.
    1. अगर जियोजॉन फ़ॉर्मैट में सोर्स डेटा का साइज़ 5 एमबी से कम है या वह बार-बार अपडेट होता है, जैसे कि मौसम का लाइव रेडार पूर्वानुमान, तो अपने ऐप्लिकेशन में डेटा को क्लाइंट साइड पर जियोजॉन ऑब्जेक्ट के तौर पर दिखाएं और deck.gl लेयर की मदद से रेंडर करें.
    2. अगर आपके डेटा का साइज़ 5 एमबी से ज़्यादा है और वह हर घंटे एक बार से ज़्यादा बार अपडेट नहीं होता, तो इस दस्तावेज़ में दिए गए डेटासेट एपीआई आर्किटेक्चर का इस्तेमाल करें.
      1. डेटासेट में 350 एमबी तक की फ़ाइलें इस्तेमाल की जा सकती हैं.
      2. अगर आपका डेटा 350 एमबी से ज़्यादा है, तो डेटासेट में भेजने से पहले, सोर्स फ़ाइल में मौजूद ज्यामिति डेटा को छोटा या आसान बनाएं. इसके लिए, नीचे डेटा को छोटा करने का तरीका देखें.
  2. स्कीमा और फ़ॉर्मैट
    1. पक्का करें कि आपके डेटा में हर सुविधा के लिए, दुनिया भर में यूनीक आईडी प्रॉपर्टी हो. यूनीक आईडी की मदद से, किसी खास सुविधा को चुना और स्टाइल किया जा सकता है. इसके अलावा, डेटा को किसी सुविधा से जोड़कर उसे विज़ुअलाइज़ किया जा सकता है. उदाहरण के लिए, “क्लिक” उपयोगकर्ता इवेंट पर चुनी गई सुविधा को स्टाइल करना.
    2. Datasets API स्पेसिफ़िकेशन के मुताबिक, अपने डेटा को CSV या GeoJSON फ़ॉर्मैट में फ़ॉर्मैट करें. इसके लिए, कॉलम के मान्य नाम, डेटा टाइप, और GeoJSON ऑब्जेक्ट के टाइप का इस्तेमाल करें.
    3. BigQuery से डेटासेट आसानी से बनाने के लिए, अपने SQL CSV एक्सपोर्ट में wkt नाम का कॉलम बनाएं. डेटासेट, wkt नाम के कॉलम से Well-Known Text (WKT) फ़ॉर्मैट में CSV से ज्यॉमेट्री इंपोर्ट करने की सुविधा देता है.
    4. पक्का करें कि आपका डेटा, मान्य ज्यामिति और डेटा टाइप हो. उदाहरण के लिए, GeoJSON, WGS84 कॉर्डिनेट सिस्टम, ज्यामिति के घुमाव के क्रम वगैरह में होना चाहिए.
    5. geojson-validate जैसे टूल का इस्तेमाल करके, पक्का करें कि सोर्स फ़ाइल में मौजूद सभी ज्यामिति मान्य हों. इसके अलावा, सोर्स फ़ाइल को फ़ॉर्मैट या निर्देशांक सिस्टम के बीच ट्रांसफ़ॉर्म करने के लिए, ogr2ogr का इस्तेमाल करें.
  3. डेटा प्रूनिंग
    1. सुविधाओं की प्रॉपर्टी की संख्या कम करें. रनटाइम के दौरान, किसी यूनीक आइडेंटिफ़ायर बटन (उदाहरण) पर क्लिक करके, किसी सुविधा में अन्य प्रॉपर्टी जोड़ी जा सकती हैं.
    2. टाइल के स्टोरेज स्पेस को कम करने के लिए, जहां भी हो सके प्रॉपर्टी ऑब्जेक्ट के लिए इंटीजर डेटा टाइप का इस्तेमाल करें. इससे क्लाइंट ऐप्लिकेशन में एचटीटीपीएस के ज़रिए टाइल लोड करने की परफ़ॉर्मेंस बेहतर बनी रहती है.
    3. बहुत जटिल सुविधाओं की ज्यामिति को आसान बनाएं और/या इकट्ठा करें. सोर्स फ़ाइल के साइज़ को कम करने और मैप की परफ़ॉर्मेंस को बेहतर बनाने के लिए, जटिल पॉलीगॉन ज्यामिति पर ST_Simplify जैसे BigQuery फ़ंक्शन का इस्तेमाल करें.
  4. टाइल करना
    1. Google Maps डेटासेट एपीआई, आपकी सोर्स डेटा फ़ाइल से मैप टाइल बनाता है. इन टाइल का इस्तेमाल, वेब या मोबाइल के लिए Maps SDK टूल के साथ किया जा सकता है.
    2. मैप टाइल, ज़ूम पर आधारित इंडेक्सिंग सिस्टम है. इससे विज़ुअल ऐप्लिकेशन में डेटा को लोड करने के ज़्यादा असरदार तरीके मिलते हैं.
    3. ज़ूम लेवल कम होने पर, मैप टाइल में घनी या जटिल सुविधाएं नहीं दिख सकतीं. जब कोई उपयोगकर्ता किसी राज्य या देश (जैसे, z5-z12) पर ज़ूम आउट करता है, तो उसे किसी शहर या मोहल्ले (जैसे, z13-z18) पर ज़ूम इन करने से अलग नतीजे मिल सकते हैं.

उदाहरण - लंदन में रेलवे

इस उदाहरण में, हम Google Cloud और Google Maps की मदद से एक वेब ऐप्लिकेशन बनाने के लिए, रेफ़रंस आर्किटेक्चर का इस्तेमाल करेंगे. यह ऐप्लिकेशन, Open Street Map (OSM) के डेटा से, लंदन की सभी रेलवे को विज़ुअलाइज़ करेगा.

ज़रूरी शर्तें

  1. BigQuery सैंडबॉक्स और Cloud Console का ऐक्सेस
  2. पक्का करें कि आपने Google Cloud प्रोजेक्ट और बिलिंग खाता सेट अप कर लिया हो.

पहला चरण - BigQuery में डेटा क्वेरी करना

BigQuery के सार्वजनिक डेटासेट पर जाएं. डेटासेट 'bigquery-public-data' और टेबल geo_openstreetmap.planet_features में, दुनिया भर के Open Street Map (OSM) का डेटा शामिल है. इसमें सभी संभावित सुविधाएं भी शामिल हैं. OSM Wiki में क्वेरी करने के लिए, उपलब्ध सभी सुविधाओं के बारे में जानें. इनमें amenity, road, और landuse शामिल हैं.

एसक्यूएल का इस्तेमाल करके टेबल से क्वेरी करने के लिए, Cloud Shell या BigQuery Cloud Console का इस्तेमाल करें. यहां दिए गए कोड स्निपेट में, bq query कमांड का इस्तेमाल करके, सिर्फ़ लंदन में मौजूद रेलवे स्टेशनों की क्वेरी की गई है. इसके लिए, बॉउंडिंग बॉक्स और ST_Intersects() फ़ंक्शन का इस्तेमाल किया गया है.

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)]
    ))
   )'

क्वेरी से यह जानकारी मिलती है:

  1. हर सुविधा के लिए यूनीक आइडेंटिफ़ायर osm_id
  2. feature_type, जैसे कि पॉइंट, लाइन वगैरह
  3. सुविधा का name, जैसे कि Paddington Station
  4. railway टाइप, जैसे कि मुख्य, पर्यटन, मिलिट्री वगैरह
  5. WKT फ़ॉर्मैट में, फ़ीचर की ज्यॉमेट्री - पॉइंट, लाइन या पॉलीगॉन का wkt. WKT, स्टैंडर्ड डेटा फ़ॉर्मैट है. BigQuery के भौगोलिक कॉलम, क्वेरी में यह फ़ॉर्मैट दिखाते हैं.

ध्यान दें - डेटासेट बनाने से पहले, क्वेरी के नतीजों की विज़ुअल तौर पर पुष्टि करने के लिए, Looker Studio का इस्तेमाल करके, BigQuery के डैशबोर्ड में अपने डेटा को तुरंत विज़ुअलाइज़ किया जा सकता है.

टेबल को Google Cloud Storage की बकेट में CSV फ़ाइल में एक्सपोर्ट करने के लिए, Cloud Shell में bq extract कमांड का इस्तेमाल करें:

bq extract \
--destination_format "CSV" \
--field_delimiter "," \
--print_header=true \
PROJECTID:DATASET.TABLENAME \
gs://BUCKET/FILENAME.csv

ध्यान दें: अपने डेटा को नियमित तौर पर अपडेट करने के लिए, Cloud Scheduler का इस्तेमाल करके हर चरण को ऑटोमेट किया जा सकता है.

दूसरा चरण - अपनी CSV फ़ाइल से डेटासेट बनाना

इसके बाद, Google Cloud Storage (जीसीएस) पर क्वेरी के आउटपुट से Google Maps Platform का डेटासेट बनाएं. डेटासेट एपीआई का इस्तेमाल करके, डेटासेट बनाया जा सकता है. इसके बाद, जीसीएस पर होस्ट की गई फ़ाइल से डेटा को अपने डेटासेट में अपलोड किया जा सकता है.

शुरू करने के लिए, अपने Google Cloud प्रोजेक्ट पर Maps डेटासेट एपीआई को चालू करें और एपीआई के दस्तावेज़ देखें. अपने ऐप्लिकेशन के बैकएंड में लॉजिक से Datasets API को कॉल करने के लिए, Python और Node.js क्लाइंट लाइब्रेरी उपलब्ध हैं. इसके अलावा, Cloud Console में मैन्युअल तरीके से डेटासेट बनाने के लिए, डेटासेट के लिए जीयूआई भी उपलब्ध है.

डेटासेट अपलोड होने के बाद, डेटासेट के जीयूआई में अपने डेटासेट की झलक देखी जा सकती है.

डेटासेट की झलक

चौथा चरण - अपने डेटासेट को मैप आईडी से जोड़ना

डेटासेट बनाने के बाद, उससे जुड़े मैप स्टाइल के साथ मैप आईडी बनाया जा सकता है. मैप स्टाइल एडिटर में, डेटासेट के साथ मैप आईडी और स्टाइल जोड़ा जा सकता है. यहां क्लाउड पर मैप की स्टाइलिंग की सुविधा भी लागू की जा सकती है, ताकि आप अपने मैप को पसंद के मुताबिक बना सकें.

पांचवां चरण - क्लाइंट ऐप्लिकेशन का मैप विज़ुअलाइज़ेशन बनाना

आखिर में, 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,
           }
     }
}

ऊपर दिया गया कोड, एक पेज वाले वेब ऐप्लिकेशन में शुरू करने पर, यह मैप डेटा विज़ुअल दिखाता है:

लंदन रेलवे मैप

यहां से, setStyle() फ़ंक्शन में अपने मैप विज़ुअलाइज़ेशन को बढ़ाया जा सकता है. इसके लिए, फ़िल्टर की सुविधाओं में लॉजिक जोड़ें, उपयोगकर्ता के इंटरैक्शन के आधार पर स्टाइल जोड़ें, और अपने बाकी ऐप्लिकेशन के साथ इंटरैक्ट करें.

नतीजा

इस दस्तावेज़ में, हमने Google Cloud और Google Maps Platform का इस्तेमाल करके, बड़े डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन को लागू करने के उदाहरण और रेफ़रंस आर्किटेक्चर के बारे में बताया है. इस रेफ़रंस आर्किटेक्चर का इस्तेमाल करके, Google Cloud BigQuery में मौजूद किसी भी डेटा से जगह के डेटा को विज़ुअलाइज़ करने वाले ऐप्लिकेशन बनाए जा सकते हैं. ये ऐप्लिकेशन, Google Maps डेटासेट एपीआई का इस्तेमाल करके, किसी भी डिवाइस पर बेहतर तरीके से काम करते हैं.

अगली कार्रवाइयां

इस बारे में ज़्यादा जानकारी के लिए:

योगदानकर्ता

मुख्य लेखक:

  • रयान बाउमन, Google Maps Platform के समाधानों के इंजीनियरिंग मैनेजर