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

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

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

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

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

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

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

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

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

⭐ ध्यान दें: Maps Detects API, Pre-GA प्रॉडक्ट है. ज़्यादा जानकारी के लिए, सेवा की शर्तें पढ़ें.

डिज़ाइन के लिए ध्यान देने वाली बातें

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

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

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

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

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

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

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

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

SQL का इस्तेमाल करके, टेबल के लिए क्वेरी करने के लिए, Cloud Shell या BigQuery Cloud Console(https://console.cloud.google.com) का इस्तेमाल करें. यहां दिया गया कोड स्निप, 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 ऐसेट कमांड का इस्तेमाल करें:

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 डेटासेट बनाएं. डेटासेट एपीआई का इस्तेमाल करके, डेटासेट बनाया जा सकता है. इसके बाद, GCS (जीसीएस) पर होस्ट की गई फ़ाइल से, डेटा को अपने डेटासेट में अपलोड किया जा सकता है.

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

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

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

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

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

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

आखिर में, Maps JS API का इस्तेमाल करके, क्लाइंट-साइड डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन में डेटासेट जोड़ा जा सकता है. पिछले चरण में दिए गए अपने डेटासेट से जुड़े मैप आईडी का इस्तेमाल करके, अपने मैप ऑब्जेक्ट को शुरू करें. इसके बाद, अपने डेटासेट लेयर की स्टाइल और इंटरैक्टिविटी सेट करें. ज़्यादा जानकारी के लिए, डेटासेट के साथ डेटा-ड्रिवन स्टाइलिंग के बारे में पूरी गाइड देखें.

Maps JS API का इस्तेमाल करके, स्टाइल को पसंद के मुताबिक बनाया जा सकता है. साथ ही, स्टाइल को डाइनैमिक तौर पर बदलने के लिए इवेंट हैंडलर जोड़े जा सकते हैं. docs में उदाहरण देखें. नीचे हम एक setStyle फ़ंक्शन तय करेंगे, ताकि इस उदाहरण के लिए, “feature_type” एट्रिब्यूट के आधार पर पॉइंट और लाइन वाले फ़ीचर स्टाइल बनाए जा सकें.

ध्यान दें - Maps JS API (एपीआई) लागू करने के लिए, v=beta चैनल का इस्तेमाल करें.

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 का इस्तेमाल करके, बड़े डेटा विज़ुअलाइज़ेशन ऐप्लिकेशन को लागू करने के तरीके और उदाहरण के तौर पर चर्चा की है. इस रेफ़रंस आर्किटेक्चर का इस्तेमाल करके, GCP BigQuery में मौजूद किसी भी डेटा से, जगह की जानकारी के डेटा को विज़ुअलाइज़ करने वाले ऐप्लिकेशन बनाए जा सकते हैं. ये ऐप्लिकेशन Google Maps Datas API का इस्तेमाल करके, किसी भी डिवाइस पर बेहतर तरीके से काम करते हैं.

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

इसके बारे में और पढ़ें:

योगदानकर्ता

मुख्य लेखक: