האובייקט הבסיסי לייצוג מדדים שונים של איכות האוויר. כשמשלבים את המדדים האלה, הוא מספק תמונת מצב של תנאי איכות האוויר הנוכחיים. יש מספר מדדים בעולם שמשרתים מטרות שונות וקבוצות שונות שמעוניינים במדידת היבטים שונים של איכות האוויר.
ייצוג 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.awt.Color
ב-Java; ניתן לספק אותו באופן טריוויאלי גם לשיטת +colorWithRed:green:blue:alpha
של UIColor ב-iOS. ועם מעט עבודה, ניתן לעצב אותו בקלות למחרוזת CSS rgba()
ב-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). |