Objek dasar untuk merepresentasikan berbagai metrik kualitas udara. Jika digabungkan, metrik-metrik ini akan memberikan ringkasan kondisi kualitas udara saat ini. Ada beberapa indeks di dunia yang melayani berbagai tujuan dan kelompok yang tertarik untuk mengukur berbagai aspek kualitas udara.
Representasi JSON |
---|
{
"code": string,
"displayName": string,
"aqiDisplay": string,
"color": {
object ( |
Kolom | |
---|---|
code |
Kode indeks. Kolom ini mewakili indeks untuk tujuan pemrograman dengan menggunakan {i>snake case<i}, bukan spasi. Contoh: "uaqi", "fra_atmo". |
displayName |
Representasi nama indeks yang dapat dibaca manusia. Contoh: "AQI (AS)" |
aqiDisplay |
Representasi tekstual skor numerik indeks, yang dapat mencakup simbol awalan atau akhiran, yang biasanya merepresentasikan skor indeks terburuk. Contoh: >100 atau 10+. Catatan: Kolom ini harus digunakan jika Anda ingin menampilkan skor indeks. Untuk indeks non-numerik, kolom ini kosong. |
color |
Warna yang digunakan untuk mewakili skor numerik AQI. |
category |
Klasifikasi tekstual dari interpretasi skor numerik indeks. Misalnya: "Kualitas udara sangat baik". |
dominantPollutant |
Simbol kimia polutan dominan. Misalnya: "CO". |
aqi |
Skor numerik indeks. Contoh: 10, 100. Nilai ini tidak dinormalkan dan hanya boleh ditafsirkan dalam konteks indeks kualitas udara terkaitnya. Untuk indeks non-numerik, kolom ini tidak akan ditampilkan. Catatan: Kolom ini harus digunakan untuk penghitungan, tampilan grafik, dll. Untuk menampilkan skor indeks, Anda harus menggunakan kolom tampilan AQI. |
Warna
Mewakili warna dalam ruang warna RGBA. Representasi ini dirancang untuk kemudahan konversi ke dan dari representasi warna dalam berbagai bahasa daripada kerapatan. Misalnya, kolom representasi ini dapat dengan mudah diberikan ke konstruktor java.awt.Color
di Java; ini juga dapat dengan mudah diberikan ke metode +colorWithRed:green:blue:alpha
UIColor di iOS; dan, hanya dengan sedikit upaya, dapat dengan mudah diformat menjadi string rgba()
CSS di JavaScript.
Halaman referensi ini tidak memiliki informasi tentang ruang warna absolut yang harus digunakan untuk menafsirkan nilai RGB—misalnya, sRGB, Adobe RGB, DCI-P3, dan BT.2020. Secara default, aplikasi harus menggunakan ruang warna sRGB.
Saat kesetaraan warna perlu ditentukan, implementasi, kecuali jika didokumentasikan sebaliknya, memperlakukan dua warna sama jika semua nilai merah, hijau, biru, dan alfa masing-masing berbeda paling banyak sebesar 1e-5
.
Contoh (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();
}
// ...
Contoh (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;
}
// ...
Contoh (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('');
};
// ...
Representasi JSON |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
Kolom | |
---|---|
red |
Jumlah merah dalam warna sebagai nilai dalam interval [0, 1]. |
green |
Jumlah hijau dalam warna sebagai nilai dalam interval [0, 1]. |
blue |
Jumlah biru dalam warna sebagai nilai dalam interval [0, 1]. |
alpha |
Fraksi warna ini yang harus diterapkan ke piksel. Yaitu, warna piksel akhir ditentukan oleh persamaan:
Ini berarti bahwa nilai 1,0 berarti warna solid, sedangkan nilai 0,0 berarti warna yang sepenuhnya transparan. Kode ini menggunakan pesan wrapper, bukan skalar float sederhana sehingga memungkinkan untuk membedakan antara nilai default dan nilai yang tidak disetel. Jika dihilangkan, objek warna ini dirender sebagai warna solid (seolah-olah nilai alfa secara eksplisit diberi nilai 1,0). |