El objeto básico para representar diferentes métricas de calidad del aire. Cuando se combinan, estas métricas brindan un resumen de las condiciones actuales de la calidad del aire. En el mundo, existen múltiples índices que sirven para 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 ( |
Campos | |
---|---|
code |
El código del índice. Este campo representa el índice para fines de programación mediante el uso de snake case en lugar de espacios. Ejemplos: “uaqi” o “fra_atmo”. |
displayName |
Una representación legible del nombre del índice. Ejemplo: "ICA (EE.UU.)" |
aqiDisplay |
Representación textual de la puntuación numérica del índice, que puede incluir símbolos de prefijo o sufijo, y suele representar la peor puntuación del índice. Ejemplo: >100 o 10+. Nota: Este campo debe usarse cuando quieres mostrar la puntuación del índice. Para los índices no numéricos, este campo está vacío. |
color |
Es el color que se usa para representar la puntuación numérica del ICA. |
category |
Es la clasificación textual de la interpretación de la puntuación numérica del índice. Por ejemplo: "Calidad del aire excelente". |
dominantPollutant |
Símbolo químico del contaminante dominante. Por ejemplo: “CO”. |
aqi |
La puntuación numérica del índice. Ejemplos: 10, 100. El valor no está normalizado y solo debe interpretarse en el contexto del índice de calidad del aire relacionado. Para 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 las representaciones de color en varios idiomas por sobre la compactación. Por ejemplo, los campos de esta representación se pueden proporcionar de forma trivial al constructor de java.awt.Color
en Java. también se puede proporcionar trivialmente al método +colorWithRed:green:blue:alpha
de UIColor en iOS. y, con solo un poco de trabajo, se puede formatear fácilmente en una cadena CSS rgba()
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 asumir 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 rojo, verde, azul y alfa difieren, como máximo, en 1e-5
.
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 |
La cantidad de rojo en el color como un valor en el intervalo [0, 1]. |
green |
La cantidad de verde en el color como un valor en el intervalo [0, 1]. |
blue |
La cantidad de azul en el color como un valor en el intervalo [0, 1]. |
alpha |
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:
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 dado explícitamente un valor de 1.0). |