AirQualityIndex

एयर क्वालिटी की अलग-अलग मेट्रिक दिखाने के लिए बुनियादी ऑब्जेक्ट. इन मेट्रिक को एक साथ दिखाने पर, एयर क्वालिटी की मौजूदा स्थितियों का स्नैपशॉट मिलता है. दुनिया में ऐसे कई इंडेक्स हैं जो अलग-अलग कामों के लिए इस्तेमाल किए जाते हैं. साथ ही, ऐसे ग्रुप जो एयर क्वालिटी के अलग-अलग पहलुओं को मापना चाहते हैं.

JSON के काेड में दिखाना
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
फ़ील्ड
code

string

इंडेक्स का कोड. यह फ़ील्ड प्रोग्रामिंग के लिए इंडेक्स को दिखाता है. इसके लिए, स्पेस के बजाय सांप के केस का इस्तेमाल किया जाता है. उदाहरण: "uaqi", "fra_atmo".

displayName

string

इंडेक्स के नाम की ऐसी जानकारी जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. उदाहरण: "AQI (US)"

aqiDisplay

string

इंडेक्स न्यूमेरिक स्कोर को टेक्स्ट के तौर पर दिखाया गया है. इसमें प्रीफ़िक्स या सफ़िक्स के सिंबल शामिल हो सकते हैं. आम तौर पर, इससे सबसे खराब इंडेक्स स्कोर का पता चलता है. उदाहरण: 100 से ज़्यादा या 10 से ज़्यादा.

ध्यान दें: इस फ़ील्ड का इस्तेमाल तब किया जाना चाहिए, जब आपको इंडेक्स स्कोर दिखाना हो. बिना संख्या वाले इंडेक्स के लिए, यह फ़ील्ड खाली होता है.

color

object (Color)

एक्यूआई न्यूमेरिक स्कोर को दिखाने के लिए इस्तेमाल किया गया रंग.

category

string

इंडेक्स न्यूमेरिक स्कोर की परिभाषा का टेक्स्ट के तौर पर वर्गीकरण. उदाहरण के लिए: "शानदार एयर क्वालिटी".

dominantPollutant

string

प्रदूषण फैलाने वाले मुख्य कारक का रासायनिक चिह्न. उदाहरण के लिए: "CO".

aqi

integer

इंडेक्स का अंकों में स्कोर. उदाहरण: 10, 100.

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

ध्यान दें: इस फ़ील्ड का इस्तेमाल हिसाब लगाने, ग्राफ़ दिखाने वगैरह के लिए किया जाना चाहिए. इंडेक्स स्कोर दिखाने के लिए, आपको एक्यूआई डिसप्ले फ़ील्ड का इस्तेमाल करना चाहिए.

रंग

RGBA कलर स्पेस में कोई रंग दिखाता है. यह प्रज़ेंटेशन इस तरह से डिज़ाइन किया गया है कि कॉम्पैक्टनेस के बजाय, अलग-अलग भाषाओं में रंग को आसानी से समझा जा सके और उन्हें अलग-अलग भाषाओं में कैसे दिखाया जा सके. उदाहरण के लिए, इस प्रतिनिधित्व के फ़ील्ड को Java में java.awt.Color के कंस्ट्रक्टर को आसानी से दिया जा सकता है; इसे iOS में, UIColor के +colorWithRed:green:blue:alpha तरीके में भी आसानी से उपलब्ध कराया जा सकता है; और बस थोड़ी सी मेहनत करके, इसे JavaScript में सीएसएस rgba() स्ट्रिंग में आसानी से फ़ॉर्मैट किया जा सकता है.

इस रेफ़रंस पेज में उस ऐब्सलूट कलर स्पेस से जुड़ी जानकारी नहीं है जिसका इस्तेमाल आरजीबी वैल्यू को समझने के लिए किया जाना चाहिए. उदाहरण के लिए, sRGB, Adobe RGB, DCI-P3, और BT.2020. डिफ़ॉल्ट रूप से, ऐप्लिकेशन को sRGB में कलर स्पेस के तौर पर माना जाना चाहिए.

जब रंग की समानता तय करने की ज़रूरत हो, तो लागू करने पर, जब तक कि कोई और दस्तावेज़ न हो, दो रंगों को बराबर मानें. अगर सभी लाल, हरे, नीले और ऐल्फ़ा वैल्यू में से हर एक की वैल्यू में ज़्यादा से ज़्यादा 1e-5 का अंतर हो.

उदाहरण (Java):

 import com.google.type.Color;

 // ...
 public static java.awt.Color fromProto(Color protocolor) {
   float alpha = protocolor.hasAlpha()
       ? protocolor.getAlpha().getValue()
       : 1.0;

   return new java.awt.Color(
       protocolor.getRed(),
       protocolor.getGreen(),
       protocolor.getBlue(),
       alpha);
 }

 public static Color toProto(java.awt.Color color) {
   float red = (float) color.getRed();
   float green = (float) color.getGreen();
   float blue = (float) color.getBlue();
   float denominator = 255.0;
   Color.Builder resultBuilder =
       Color
           .newBuilder()
           .setRed(red / denominator)
           .setGreen(green / denominator)
           .setBlue(blue / denominator);
   int alpha = color.getAlpha();
   if (alpha != 255) {
     result.setAlpha(
         FloatValue
             .newBuilder()
             .setValue(((float) alpha) / denominator)
             .build());
   }
   return resultBuilder.build();
 }
 // ...

उदाहरण (iOS / Obj-C):

 // ...
 static UIColor* fromProto(Color* protocolor) {
    float red = [protocolor red];
    float green = [protocolor green];
    float blue = [protocolor blue];
    FloatValue* alpha_wrapper = [protocolor alpha];
    float alpha = 1.0;
    if (alpha_wrapper != nil) {
      alpha = [alpha_wrapper value];
    }
    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
 }

 static Color* toProto(UIColor* color) {
     CGFloat red, green, blue, alpha;
     if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
       return nil;
     }
     Color* result = [[Color alloc] init];
     [result setRed:red];
     [result setGreen:green];
     [result setBlue:blue];
     if (alpha <= 0.9999) {
       [result setAlpha:floatWrapperWithValue(alpha)];
     }
     [result autorelease];
     return result;
}
// ...

उदाहरण (JavaScript):

// ...

var protoToCssColor = function(rgb_color) {
   var redFrac = rgb_color.red || 0.0;
   var greenFrac = rgb_color.green || 0.0;
   var blueFrac = rgb_color.blue || 0.0;
   var red = Math.floor(redFrac * 255);
   var green = Math.floor(greenFrac * 255);
   var blue = Math.floor(blueFrac * 255);

   if (!('alpha' in rgb_color)) {
      return rgbToCssColor(red, green, blue);
   }

   var alphaFrac = rgb_color.alpha.value || 0.0;
   var rgbParams = [red, green, blue].join(',');
   return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};

var rgbToCssColor = function(red, green, blue) {
  var rgbNumber = new Number((red << 16) | (green << 8) | blue);
  var hexString = rgbNumber.toString(16);
  var missingZeros = 6 - hexString.length;
  var resultBuilder = ['#'];
  for (var i = 0; i < missingZeros; i++) {
     resultBuilder.push('0');
  }
  resultBuilder.push(hexString);
  return resultBuilder.join('');
};

// ...
JSON के काेड में दिखाना
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
फ़ील्ड
red

number

इंटरवल [0, 1] में वैल्यू के तौर पर रंग में लाल रंग.

green

number

इंटरवल [0, 1] में वैल्यू के तौर पर रंग में हरे रंग की मात्रा.

blue

number

इंटरवल [0, 1] में वैल्यू के तौर पर रंग में नीले रंग की मात्रा.

alpha

number

इस रंग का वह हिस्सा, जिसे पिक्सल पर लागू किया जाना चाहिए. इसका मतलब है कि आखिरी पिक्सल का रंग समीकरण से तय होता है:

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

इसका मतलब है कि 1.0 वैल्यू किसी ठोस रंग से मेल खाती है, जबकि 0.0 वैल्यू पूरी तरह से पारदर्शी रंग से मेल खाती है. यह किसी सामान्य फ़्लोट स्केलर के बजाय रैपर मैसेज का इस्तेमाल करता है, ताकि डिफ़ॉल्ट वैल्यू और सेट न की जा रही वैल्यू के बीच अंतर किया जा सके. अगर छोड़ दिया जाता है, तो इस रंग ऑब्जेक्ट को एक ठोस रंग के रूप में रेंडर किया जाता है (जैसे कि ऐल्फ़ा वैल्यू को साफ़ तौर पर 1.0 का मान दिया गया था).