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 )

Цвет, используемый для представления числового показателя AQI.

category

string

Текстовая классификация интерпретации числовых показателей индекса. Например: «Отличное качество воздуха».

dominantPollutant

string

Химический символ доминирующего загрязнителя. Например: «КО».

aqi

integer

Числовой балл индекса. Примеры: 10, 100.

Значение не нормализовано и должно интерпретироваться только в контексте соответствующего индекса качества воздуха. Для нечисловых индексов это поле не будет возвращено.

Примечание. Это поле следует использовать для расчетов, отображения графиков и т. д. Для отображения оценки индекса следует использовать поле отображения AQI.

Цвет

Представляет цвет в цветовом пространстве RGBA. Это представление предназначено для простоты преобразования в цветовые представления на разных языках и обратно, а не для компактности. Например, поля этого представления можно тривиально передать конструктору java.awt.Color в Java; его также можно тривиально передать методу +colorWithRed:green:blue:alpha UIColor в iOS; и, приложив немного усилий, его можно легко отформатировать в строку CSS rgba() в JavaScript.

На этой справочной странице нет информации об абсолютном цветовом пространстве, которое следует использовать для интерпретации значения RGB, например 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).