用于表示不同空气质量指标的基本对象。汇总到一起,这些指标可提供有关当前空气质量状况的概况。世界上有多个指数,服务于对空气质量不同方面测量的不同目的和团体。
JSON 表示法 |
---|
{
"code": string,
"displayName": string,
"aqiDisplay": string,
"color": {
object ( |
字段 | |
---|---|
code |
索引的代码。此字段表示用于编程的索引(使用蛇形命名法而不是空格)。示例:“uaqi”、“fra_atmo”。 |
displayName |
直观易懂的索引名称表示法。示例:“AQI(美国)” |
aqiDisplay |
索引数字得分的文本表示形式,可能包含前缀或后缀符号,这些符号通常表示最低索引得分。示例:“>100”或“10+”。 注意:当您想要显示索引分数时,应使用此字段。对于非数字索引,此字段为空。 |
color |
用于表示 AQI 数值得分的颜色。 |
category |
索引数字得分解释的文本分类。例如:“空气质量极佳”。 |
dominantPollutant |
主要污染物的化学符号。例如:“CO”。 |
aqi |
索引的分值。示例:10、100。 该值未经过标准化处理,只能结合其相关空气质量指数进行解释。对于非数字索引,系统不会返回此字段。 注意:此字段应该用于计算、图表显示等。如需显示指数分数,您应使用 AQI 显示字段。 |
颜色
表示 RGBA 颜色空间中的一种颜色。这种表示法旨在简化与各种语言中的颜色表示法之间的转换,而不是紧凑的转换。例如,在 Java 中,可以轻松地将此表示法的字段提供给 java.awt.Color
的构造函数;在 iOS 中,也可以轻松地将其提供给 UIColor 的 +colorWithRed:green:blue:alpha
方法;只需少量工作,即可轻松将其格式化为采用 JavaScript 的 CSS rgba()
字符串。
此参考页面不包含解读 RGB 值时应使用的绝对颜色空间,例如 sRGB、Adobe RGB、DCI-P3 和 BT.2020。默认情况下,应用应采用 sRGB 颜色空间。
在需要确定颜色均等性时,除非另有说明,否则如果两种颜色的红色、绿色、蓝色和 alpha 值都相差不超过 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 |
颜色中红色的量,以区间 [0, 1] 中的值表示。 |
green |
颜色中绿色的量,以区间 [0, 1] 中的值表示。 |
blue |
颜色中的蓝色量,以 [0, 1] 区间中的值表示。 |
alpha |
此颜色在像素中的应用比例。也就是说,最终像素颜色由以下等式定义:
也就是说,值为 1.0 表示纯色,而值为 0.0 表示完全透明的颜色。它会使用封装容器消息,而非简单的浮动标量,以便区分默认值和未设置的值。如果省略,此颜色对象会渲染为纯色(就好像已经将 Alpha 值明确指定为 1.0)。 |