AirQualityIndex

Es el objeto básico para representar diferentes métricas de calidad del aire. Cuando se combinan, estas métricas proporcionan un resumen de las condiciones actuales de la calidad del aire. Existen múltiples índices en el mundo que tienen distintos propósitos y grupos interesados en medir distintos aspectos de la calidad del aire.

Representación JSON
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
Campos
code

string

El código del índice. Este campo representa el índice para fines de programación usando snake case en lugar de espacios. Ejemplos: “uaqi”, “fra_atmo”.

displayName

string

Una representación legible del nombre del índice. Ejemplo: "ICA (EE.UU.)"

aqiDisplay

string

Representación textual de la puntuación numérica del índice, que puede incluir símbolos de prefijo o sufijo, que suele representar la peor puntuación del índice. Ejemplo: Más de 100 o más de 10.

Nota: Este campo debe usarse cuando quieras mostrar la puntuación del índice. En el caso de los índices no numéricos, este campo está vacío.

color

object (Color)

Es el color que se usa para representar la puntuación numérica del ICA.

category

string

Clasificación textual de la interpretación de la puntuación numérica del índice. Por ejemplo: “Calidad del aire excelente”.

dominantPollutant

string

El símbolo químico del contaminante dominante. Por ejemplo: “CO”.

aqi

integer

La puntuación numérica del índice. Ejemplos: 10, 100.

El valor no está normalizado y solo debe interpretarse en el contexto de su índice de calidad del aire relacionado. En el caso de los índices no numéricos, no se mostrará este campo.

Nota: Este campo debe usarse para cálculos, visualización de gráficos, etc. Para mostrar la puntuación del índice, debes usar el campo de visualización del ICA.

Color

Representa un color en el espacio de color RGBA. Esta representación está diseñada para simplificar la conversión desde y hacia representaciones de color en varios lenguajes sobre la compactación. Por ejemplo, los campos de esta representación se pueden proporcionar de manera trivial al constructor de java.awt.Color en Java; también se pueden proporcionar de manera trivial al método +colorWithRed:green:blue:alpha de UIColor en iOS y, con un poco de trabajo, se puede formatear fácilmente en una cadena rgba() de CSS en JavaScript.

Esta página de referencia no tiene información sobre el espacio de color absoluto que se debe usar para interpretar el valor RGB, por ejemplo, sRGB, Adobe RGB, DCI-P3 y BT.2020. De forma predeterminada, las aplicaciones deben adoptar el espacio de color sRGB.

Cuando se debe decidir la igualdad de color, las implementaciones, a menos que se documente lo contrario, tratan dos colores como iguales si todos sus valores de rojo, verde, azul y alfa difieren en un 1e-5 como máximo.

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

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

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

// ...
Representación JSON
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
Campos
red

number

La cantidad de rojo en el color como un valor en el intervalo [0, 1].

green

number

La cantidad de verde en el color como un valor en el intervalo [0, 1].

blue

number

La cantidad de azul en el color como un valor en el intervalo [0, 1].

alpha

number

La fracción de este color que se debe aplicar al píxel. Es decir, el color del píxel final se define mediante la siguiente ecuación:

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

Esto significa que el valor 1.0 corresponde a un color sólido, mientras que el valor 0.0 corresponde a un color completamente transparente. Esto utiliza un mensaje de wrapper en lugar de un escalar flotante simple, para que sea posible distinguir entre un valor predeterminado y el valor que no se configura. Si se omite, este objeto de color se representa como un color sólido (como si al valor alfa se le hubiera asignado explícitamente un valor de 1.0).