AirQualityIndex

هدف اصلی برای نمایش معیارهای مختلف کیفیت هوا. هنگامی که این معیارها گرد هم می آیند، تصویری فوری از شرایط فعلی کیفیت هوا ارائه می دهند. شاخص های متعددی در جهان وجود دارد که به اهداف و گروه های مختلف علاقه مند به اندازه گیری جنبه های مختلف کیفیت هوا هستند.

نمایندگی JSON
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
زمینه های
code

string

کد ایندکس این فیلد با استفاده از snake case به جای فاصله، نمایه را برای اهداف برنامه نویسی نشان می دهد. مثال: "uaqi"، "fra_atmo".

displayName

string

نمایشی قابل خواندن توسط انسان از نام شاخص. مثال: "AQI (US)"

aqiDisplay

string

نمایش متنی امتیاز عددی شاخص، که ممکن است شامل نمادهای پیشوند یا پسوند باشد، که معمولاً نشان دهنده بدترین امتیاز شاخص است. مثال: > 100 یا 10+.

نکته: زمانی که می خواهید امتیاز شاخص را نمایش دهید باید از این فیلد استفاده کنید. برای نمایه های غیر عددی، این فیلد خالی است.

color

object ( Color )

رنگ مورد استفاده برای نشان دادن امتیاز عددی AQI.

category

string

طبقه بندی متنی تفسیر نمره عددی شاخص. به عنوان مثال: "کیفیت هوای عالی".

dominantPollutant

string

نماد شیمیایی آلاینده غالب. به عنوان مثال: "CO".

aqi

integer

امتیاز عددی شاخص مثال: 10، 100.

این مقدار نرمال نیست و فقط باید در چارچوب شاخص کیفیت هوا مربوط به آن تفسیر شود. برای نمایه های غیر عددی، این فیلد برگردانده نمی شود.

نکته: این فیلد باید برای محاسبات، نمایش نمودار و ... استفاده شود.برای نمایش امتیاز شاخص باید از فیلد نمایش AQI استفاده کنید.

رنگ

یک رنگ را در فضای رنگی RGBA نشان می دهد. این نمایش برای سادگی تبدیل به و از نمایش رنگ در زبان های مختلف بیش از فشرده سازی طراحی شده است. به عنوان مثال، فیلدهای این نمایش را می توان به صورت بی اهمیت در اختیار سازنده java.awt.Color در جاوا قرار داد. همچنین می‌توان آن را به روش UIColor +colorWithRed:green:blue:alpha در iOS ارائه کرد. و فقط با کمی کار می توان آن را به راحتی در یک رشته CSS rgba() در جاوا اسکریپت قالب بندی کرد.

این صفحه مرجع اطلاعاتی درباره فضای رنگ مطلقی که باید برای تفسیر مقدار RGB استفاده شود ندارد - برای مثال، sRGB، Adobe RGB، DCI-P3، و BT.2020. به طور پیش فرض، برنامه ها باید فضای رنگی sRGB را در نظر بگیرند.

هنگامی که نیاز به تصمیم گیری در مورد برابری رنگ است، پیاده سازی ها، مگر اینکه به گونه ای دیگر مستند شده باشد، اگر تمام مقادیر قرمز، سبز، آبی و آلفا هر کدام حداکثر 1e-5 متفاوت باشد، با دو رنگ برابر رفتار می کنند.

مثال (جاوا):

 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;
}
// ...

مثال (جاوا اسکریپت):

// ...

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 داده شده است).