AirQualityIndex

O objeto básico para representar diferentes métricas de qualidade do ar. Quando juntas, essas métricas fornecem um resumo sobre as condições atuais de qualidade do ar. Existem vários índices no mundo que servem a diferentes finalidades e grupos interessados em medir diferentes aspectos da qualidade do ar.

Representação JSON
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
Campos
code

string

O código do índice. Esse campo representa o índice para fins de programação usando o Snake Case em vez de espaços. Exemplos: "uaqi", "fra_atmo".

displayName

string

Uma representação legível do nome do índice. Exemplo: "IQA (EUA)"

aqiDisplay

string

Representação textual da pontuação numérica do índice, que pode incluir símbolos de prefixo ou sufixo, que geralmente representa a pior pontuação de índice. Exemplo: >100 ou mais de 10.

Observação: esse campo precisa ser usado quando você quiser mostrar a pontuação do índice. Para índices não numéricos, este campo está vazio.

color

object (Color)

A cor usada para representar a pontuação numérica do IQA.

category

string

Classificação textual da interpretação da pontuação numérica do índice. Por exemplo: "Qualidade do ar excelente".

dominantPollutant

string

O símbolo químico do poluente dominante. Por exemplo: "CO".

aqi

integer

A pontuação numérica do índice. Exemplos: 10, 100.

O valor não é normalizado e deve ser interpretado apenas no contexto do índice de qualidade do ar relacionado. Para índices não numéricos, este campo não será retornado.

Observação: esse campo deve ser usado para cálculos, exibição de gráficos etc. Para exibir a pontuação do índice, use o campo de exibição IQA.

Cor

Representa uma cor no espaço de cores RGBA. Essa representação foi projetada para simplificar a conversão de/para representações de cores em vários idiomas em vez de compactação. Por exemplo, os campos dessa representação podem ser trivialmente fornecidos ao construtor do java.awt.Color em Java; eles também podem ser fornecidos de maneira trivial ao método +colorWithRed:green:blue:alpha do UIColor no iOS; e, com um pouco de trabalho, podem ser facilmente formatados em uma string CSS rgba() em JavaScript.

Esta página de referência não tem informações sobre o espaço de cor absoluto que deve ser usado para interpretar o valor RGB, por exemplo, sRGB, Adobe RGB, DCI-P3 e BT.2020. Por padrão, os aplicativos usam o espaço de cores sRGB.

Quando a igualdade de cor precisa ser decidida, as implementações, a menos que documentadas de outra forma, tratam duas cores como iguais se todos os valores vermelho, verde, azul e alfa tiverem uma diferença no máximo 1e-5.

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

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

Exemplo (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('');
};

// ...
Representação JSON
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
Campos
red

number

A quantidade de vermelho na cor como um valor no intervalo [0, 1].

green

number

A quantidade de verde na cor como um valor no intervalo [0, 1].

blue

number

A quantidade de azul na cor como um valor no intervalo [0, 1].

alpha

number

A fração desta cor que deve ser aplicada ao pixel. Ou seja, a cor final do pixel é definida pela equação:

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

Isto significa que um valor de 1,0 corresponde a uma cor sólida, enquanto um valor de 0,0 corresponde a uma cor completamente transparente. Esse recurso usa uma mensagem de wrapper, em vez de um escalar flutuante simples, para que seja possível distinguir entre um valor padrão e o valor que está sendo desativado. Se omitido, o objeto de cor é renderizado como uma cor sólida, como se o valor alfa tivesse recebido explicitamente um valor de 1,0.