AirQualityIndex

هي السمة الأساسية لتمثيل مقاييس جودة الهواء المختلفة. عند جمع هذه المقاييس معًا، تقدّم نبذة عن ظروف جودة الهواء الحالية. تتوفّر عدة مؤشرات حول العالم تخدم أغراضًا ومجموعات مختلفة مهتمة بقياس الجوانب المختلفة لجودة الهواء.

تمثيل JSON
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
الحقول
code

string

هو رمز الفهرس. يمثل هذا الحقل الفهرس لأغراض البرمجة باستخدام حالة الثعبان بدلاً من المسافات. أمثلة: "uaqi" و"fra_atmo"

displayName

string

تمثيل لاسم الفهرس يمكن لشخص عادي قراءته. مثال: "مؤشر جودة الهواء (الولايات المتحدة)"

aqiDisplay

string

تمثيل نصي للنتيجة الرقمية للفهرس، وقد يتضمن رموز البادئة أو اللاحقة، والتي تمثّل عادةً أسوأ نتيجة للفهرس. على سبيل المثال: >100 أو +10.

ملاحظة: يجب استخدام هذا الحقل عندما تريد عرض درجة الفهرس. بالنسبة إلى الفهارس غير الرقمية، يكون هذا الحقل فارغًا.

color

object (Color)

اللون المستخدَم لتمثيل النتيجة الرقمية لمؤشر جودة الهواء

category

string

التصنيف النصي لتفسير النتيجة الرقمية للفهرس. على سبيل المثال: "جودة الهواء ممتازة".

dominantPollutant

string

الرمز الكيميائي للملوّث السائد على سبيل المثال: "CO".

aqi

integer

هي النتيجة الرقمية للفهرس. أمثلة: 10، 100.

لم تتم تسوية القيمة ويجب تفسيرها فقط في سياق مؤشر جودة الهواء المرتبط بها. بالنسبة إلى الفهارس غير الرقمية، لن يتم عرض هذا الحقل.

ملاحظة: يجب استخدام هذا الحقل لإجراء العمليات الحسابية وعرض الرسم البياني وما إلى ذلك. لعرض نتيجة الفهرس، يجب استخدام حقل عرض مؤشر جودة الهواء.

اللون

يمثل لونًا في مساحة اللون RGBA. تم تصميم هذا التمثيل لتبسيط التحويل من تمثيلات الألوان وإليها بلغات مختلفة بدلاً من المكثف. على سبيل المثال، يمكن توفير حقول هذا التمثيل بشكل متعدد في دالة إنشاء java.awt.Color في Java، ويمكن أيضًا توفيرها بشكل غير متكلّف في طريقة +colorWithRed:green:blue:alpha لـ UIColor في iOS. ومع بذل مجهود بسيط، يمكن تنسيقها بسهولة إلى سلسلة CSS rgba() في JavaScript.

لا تتضمّن هذه الصفحة المرجعية معلومات عن مساحة اللون المطلقة التي يجب استخدامها لتفسير قيمة نموذج أحمر أخضر أزرق، على سبيل المثال، 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 بشكل صريح).