代表不同空氣品質指標的基本物件。兩者結合後,這些指標都能提供目前空氣品質狀況的數據匯報。全世界都有多個指數,分別用於不同目的和群體,想要測量空氣品質的不同面向。
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 值)。 |