AirQualityIndex

Đối tượng cơ bản để trình bày các chỉ số chất lượng không khí. Khi kết hợp lại với nhau, các chỉ số này cung cấp thông tin tổng quan nhanh về tình trạng chất lượng không khí hiện tại. Có nhiều chỉ số trên thế giới phục vụ cho nhiều mục đích và nhóm người quan tâm đến việc đo lường nhiều khía cạnh của chất lượng không khí.

Biểu diễn dưới dạng JSON
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
Trường
code

string

Mã của chỉ mục. Trường này biểu thị chỉ mục cho mục đích lập trình bằng cách sử dụng kiểu viết con rắn thay cho dấu cách. Ví dụ: "uaqi", "fra_atmo".

displayName

string

Biểu thị tên chỉ mục mà con người có thể đọc được. Ví dụ: "AQI (US)"

aqiDisplay

string

Phần văn bản biểu thị điểm số của chỉ mục, có thể bao gồm cả ký hiệu tiền tố hoặc hậu tố, thường biểu thị điểm thấp nhất trong chỉ mục. Ví dụ: >100 hoặc 10+.

Lưu ý: Bạn nên sử dụng trường này khi muốn hiển thị điểm chỉ mục. Đối với các chỉ mục không phải là số, trường này trống.

color

object (Color)

Màu dùng để biểu thị điểm số AQI.

category

string

Phân loại bằng văn bản của việc diễn giải điểm số theo chỉ mục. Ví dụ: "Chất lượng không khí rất tốt".

dominantPollutant

string

Ký hiệu hoá học của chất gây ô nhiễm chính. Ví dụ: "CO".

aqi

integer

Điểm số của chỉ mục. Ví dụ: 10, 100.

Giá trị này không được chuẩn hoá và chỉ nên diễn giải theo chỉ số chất lượng không khí có liên quan. Đối với các chỉ mục không phải là số, trường này sẽ không được trả về.

Lưu ý: Trường này được dùng để tính toán, để hiển thị biểu đồ, v.v. Để hiện điểm của chỉ số, bạn nên dùng trường hiển thị AQI.

Màu

Đại diện cho một màu trong hệ màu RGBA. Cách trình bày này được thiết kế để đơn giản hoá việc chuyển đổi sang và từ các bản trình bày màu sắc bằng nhiều ngôn ngữ khác nhau sao cho gọn nhẹ. Ví dụ: các trường của biểu diễn này có thể được cung cấp một cách đơn giản cho hàm khởi tạo của java.awt.Color trong Java; nó cũng có thể được cung cấp một cách đơn giản cho phương thức +colorWithRed:green:blue:alpha của UIColor trong iOS; và chỉ cần thực hiện một chút thao tác, bạn có thể dễ dàng định dạng đoạn mã này thành chuỗi CSS rgba() trong JavaScript.

Trang tham khảo này không có thông tin về hệ màu tuyệt đối cần dùng để diễn giải giá trị RGB – ví dụ: sRGB, Adobe RGB, DCI-P3 và BT.2020. Theo mặc định, các ứng dụng sẽ giả định hệ màu sRGB.

Khi cần quyết định sự cân bằng về màu sắc, quá trình triển khai sẽ coi 2 màu là bằng nhau nếu tất cả các giá trị màu đỏ, xanh lục, xanh dương và alpha chênh lệch nhau tối đa là 1e-5.

Ví dụ (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();
 }
 // ...

Ví dụ (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;
}
// ...

Ví dụ (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('');
};

// ...
Biểu diễn dưới dạng JSON
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
Trường
red

number

Lượng màu đỏ trong màu dưới dạng một giá trị trong khoảng [0, 1].

green

number

Lượng màu xanh lục trong màu dưới dạng một giá trị trong khoảng [0, 1].

blue

number

Lượng màu xanh dương trong màu dưới dạng một giá trị trong khoảng [0, 1].

alpha

number

Tỷ lệ của màu này sẽ được áp dụng cho điểm ảnh. Tức là màu pixel cuối cùng được xác định theo phương trình:

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

Điều này có nghĩa là giá trị 1.0 tương ứng với một màu đồng nhất, trong khi giá trị 0.0 tương ứng với một màu hoàn toàn trong suốt. Tính năng này sử dụng một thông báo trình bao bọc thay vì một đại lượng vô hướng số thực đơn giản để có thể phân biệt giữa giá trị mặc định và giá trị chưa được đặt. Nếu bạn bỏ qua, đối tượng màu này sẽ hiển thị dưới dạng một màu đồng nhất (như thể giá trị alpha đã được cung cấp rõ ràng giá trị là 1.0).