האובייקט הבסיסי לייצוג מדדים שונים של איכות האוויר. כשמשלבים את המדדים האלה יחד, הם מספקים תמונת מצב של תנאי איכות האוויר הנוכחיים. יש בעולם כמה מדדים שמשרתים מטרות שונות וקבוצות שונות שמעוניינות למדוד היבטים שונים של איכות האוויר.
ייצוג JSON |
---|
{
"code": string,
"displayName": string,
"aqiDisplay": string,
"color": {
object ( |
שדות | |
---|---|
code |
בקוד של האינדקס. השדה הזה מייצג את האינדקס למטרות תכנות על ידי שימוש באותיות רישיות במקום ברווחים. דוגמאות: 'uaqi', 'fra_atmo'. |
displayName |
ייצוג קריא (לבני אדם) של שם האינדקס. דוגמה: AQI (US) |
aqiDisplay |
ייצוג טקסטואלי של הציון המספרי של האינדקס, שעשוי לכלול סימני קידומת או סיומת, שמייצג בדרך כלל את הציון הגרוע ביותר באינדקס. דוגמה: >100 או 10+. הערה: צריך להשתמש בשדה הזה אם רוצים להציג את דירוג האינדקס. באינדקסים לא מספריים, השדה הזה ריק. |
color |
הצבע שמשמש לייצוג הציון המספרי של AQI. |
category |
סיווג טקסטואלי של פירוש הציון המספרי של האינדקס. לדוגמה: 'איכות אוויר מעולה'. |
dominantPollutant |
הסמל הכימי של המזהם הדומיננטי. לדוגמה: 'CO'. |
aqi |
הציון המספרי של האינדקס. לדוגמה: 10, 100. הערך לא מנורמל ויש לפרש אותו רק בהקשר של מדד איכות האוויר שקשור אליו. עבור אינדקסים לא מספריים, השדה הזה לא יוחזר. הערה: השדה הזה צריך לשמש לחישובים, להצגת תרשימים וכו'. כדי להציג את ציון האינדקס, צריך להשתמש בשדה התצוגה של AQI. |
צבע
מייצג צבע במרחב הצבעים RGBA. הייצוג הזה נועד לאפשר פשטות המרה אל ומתוך ייצוגי צבע בשפות שונות, על-פני קומפקטיות. לדוגמה, אפשר לספק את השדות של הייצוג הזה באופן טריוויאלי ל-constructor של java.awt.Color
ב-Java; אפשר גם לספק אותו באופן טריוויאלי ל-method +colorWithRed:green:blue:alpha
של UIColor ב-iOS. ובמאמץ קטן, ניתן לעצב אותו בקלות למחרוזת rgba()
CSS ב-JavaScript.
בדף העזר הזה אין מידע על מרחב הצבעים המוחלט שצריך להשתמש בו כדי לפרש את ערך ה-RGB – לדוגמה, sRGB, Adobe RGB, DCI-P3 ו-BT.2020. כברירת מחדל, האפליקציות צריכות להשתמש במרחב הצבעים sRGB.
אם צריך לקבוע שיוויון צבעים, אם לא תועד אחרת, המערכת תתייחס לשני צבעים באופן שווה אם כל הערכים בצבע אדום, ירוק, כחול ואלפא שונים זה מזה ב-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 מייצג צבע שקוף לחלוטין. הפעולה הזו משתמשת בהודעת wrapper במקום בסקלר צף פשוט כדי שאפשר יהיה להבחין בין ערך ברירת מחדל לערך שאינו מוגדר. אם לא מציינים את הפרמטר הזה, האובייקט של הצבע מוצג כצבע אחיד (כאילו צוין ערך אלפא שניתן באופן מפורש לערך 1.0). |