O objeto básico para representar diferentes métricas de qualidade do ar. Quando combinadas, essas métricas fornecem um resumo das condições atuais da qualidade do ar. Existem vários índices no mundo todo que atendem a diferentes propósitos e grupos interessados em medir diferentes aspectos da qualidade do ar.
Representação JSON |
---|
{
"code": string,
"displayName": string,
"aqiDisplay": string,
"color": {
object ( |
Campos | |
---|---|
code |
O código do índice. Esse campo representa o índice para fins de programação usando Snake Case em vez de espaços. Exemplos: "uaqi", "fra_atmo". |
displayName |
Uma representação legível do nome do índice. Exemplo: "IQA (EUA)" |
aqiDisplay |
Representação textual da pontuação numérica do índice, que pode incluir símbolos de prefixo ou sufixo, que geralmente representam a pior pontuação do índice. Exemplo: >100 ou 10+. Observação: esse campo precisa ser usado quando você quiser mostrar a pontuação de índice. Para índices não numéricos, este campo fica vazio. |
color |
A cor usada para representar a pontuação numérica do IQA. |
category |
Classificação textual da interpretação da pontuação numérica do índice. Por exemplo: "Excelente qualidade do ar". |
dominantPollutant |
O símbolo químico do poluente dominante. Por exemplo: "CO". |
aqi |
A pontuação numérica do índice. Exemplos: 10 e 100. O valor não é normalizado e só deve ser interpretado no contexto do índice de qualidade do ar relacionado. No caso de índices não numéricos, esse 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 de índice, use o campo de exibição de IQA. |
Cor
Representa uma cor no espaço de cores RGBA. Essa representação foi projetada para simplificar a conversão de e para representações de cores em vários idiomas em vez de compactação. Por exemplo, os campos dessa representação podem ser fornecidos de modo trivial ao construtor de java.awt.Color
em Java. também pode ser fornecido trivialmente ao método +colorWithRed:green:blue:alpha
do UIColor no iOS. e, com um pouco de trabalho, ele pode ser facilmente formatado 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 devem usar o espaço de cores sRGB.
Quando a igualdade de cores precisa ser decidida, as implementações, a menos que documentadas de outra forma, tratem duas cores como iguais se todos os valores de vermelho, verde, azul e alfa forem diferentes em 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 |
A quantidade de vermelho na cor como um valor no intervalo [0, 1]. |
green |
A quantidade de verde na cor como um valor no intervalo [0, 1]. |
blue |
A quantidade de azul na cor como um valor no intervalo [0, 1]. |
alpha |
A fração desta cor que deve ser aplicada ao pixel. Ou seja, a cor final do pixel é definida pela equação:
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, esse objeto de cor é renderizado como uma cor sólida (como se o valor alfa tivesse recebido explicitamente o valor 1,0). |