Basisobjekt zur Darstellung verschiedener Luftqualitätsmesswerte Zusammen ergeben diese Messwerte eine Momentaufnahme der aktuellen Luftqualität. Weltweit gibt es mehrere Indexe für unterschiedliche Zwecke und Gruppen, die verschiedene Aspekte der Luftqualität messen möchten.
JSON-Darstellung |
---|
{
"code": string,
"displayName": string,
"aqiDisplay": string,
"color": {
object ( |
Felder | |
---|---|
code |
Der Code des Index. Dieses Feld stellt den Index für Programmierzwecke dar, indem Snake Case anstelle von Leerzeichen verwendet wird. Beispiele: „uaqi“, „fra_atmo“. |
displayName |
Eine menschenlesbare Darstellung des Indexnamens. Beispiel: „LQI (USA)“ |
aqiDisplay |
Textuelle Darstellung des numerischen Indexwerts, die Präfix- oder Suffixsymbole enthalten kann, die normalerweise den schlechtesten Indexwert darstellen. Beispiel: >100 oder 10+. Hinweis: Verwenden Sie dieses Feld, wenn Sie die Indexbewertung anzeigen möchten. Bei nicht numerischen Indexen ist dieses Feld leer. |
color |
Die Farbe zur Darstellung des numerischen AQI-Werts. |
category |
Textuelle Klassifizierung der Interpretation des numerischen Indexwerts. Beispiel: „Hervorragende Luftqualität“. |
dominantPollutant |
Das chemische Symbol des dominanten Schadstoffs. Beispiel: „CO“. |
aqi |
Der numerische Wert des Index. Beispiele: 10, 100. Der Wert ist nicht normalisiert und sollte nur im Kontext des zugehörigen Luftqualitätsindex interpretiert werden. Bei nicht numerischen Indexen wird dieses Feld nicht zurückgegeben. Hinweis: Dieses Feld sollte für Berechnungen, die Anzeige von Grafiken usw. verwendet werden. Zur Anzeige der Indexbewertung sollten Sie das AQI-Anzeigefeld verwenden. |
Farbe
Ermöglicht die Darstellung einer Farbe im RGBA-Farbraum. Diese Darstellung wurde für eine einfache Konvertierung in und aus Farbdarstellungen in verschiedenen Sprachen über Kompaktheit entwickelt. Die Felder dieser Darstellung können beispielsweise dem Konstruktor von java.awt.Color
in Java ganz einfach zur Verfügung gestellt werden. Sie können auch einfach an die Methode +colorWithRed:green:blue:alpha
von UIColor in iOS übergeben werden. Mit nur wenig Aufwand kann sie in JavaScript als CSS-rgba()
-String formatiert werden.
Diese Referenzseite enthält keine Informationen zum absoluten Farbraum, der zur Interpretation des RGB-Werts verwendet werden sollte, z. B. sRGB, Adobe RGB, DCI-P3 und BT.2020. Standardmäßig sollte für Anwendungen der sRGB-Farbraum verwendet werden.
Wenn eine Farbgleichheit entschieden werden muss, behandeln Implementierungen, sofern nicht anders angegeben, zwei Farben als gleich, wenn sich ihre Rot-, Grün-, Blau- und Alpha-Werte jeweils um höchstens 1e-5
unterscheiden.
Beispiel (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();
}
// ...
Beispiel (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;
}
// ...
Beispiel (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-Darstellung |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
Felder | |
---|---|
red |
Der Rotanteil der Farbe als Wert im Intervall [0, 1]. |
green |
Der Grünanteil der Farbe als Wert im Intervall [0, 1]. |
blue |
Der Blauanteil der Farbe als Wert im Intervall [0, 1]. |
alpha |
Der Anteil dieser Farbe, der auf den Pixel angewendet werden soll. Die endgültige Pixelfarbe wird durch folgende Gleichung definiert:
Der Wert 1,0 entspricht einer soliden Farbdarstellung, während die Farbe bei einem Wert von 0,0 vollständig transparent ist. Dabei wird anstelle eines einfachen Float-Skalarwerts eine Wrapper-Nachricht verwendet, sodass zwischen einem Standardwert und dem zurückgesetzten Wert unterschieden werden kann. Wenn dieses Farbobjekt nicht angegeben wird, wird es als Volltonfarbe dargestellt (als ob dem Alphawert explizit der Wert 1,0 gegeben worden wäre). |