AirQualityIndex

さまざまな大気質指標を表す基本オブジェクト。これらの指標を組み合わせることで、現在の大気質の状態に関するスナップショットを得ることができます。世界には、さまざまな目的と、大気質のさまざまな側面を測定することに関心があるグループのための複数の指標があります。

JSON 表現
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
フィールド
code

string

インデックスのコード。このフィールドは、スペースの代わりにスネークケースを使用して、プログラミング目的のインデックスを表します。例: 「uaqi」、「fra_atmo」。

displayName

string

人が読める形式のインデックス名。例: 「AQI (US)」

aqiDisplay

string

インデックスの数値スコアのテキスト表現。接頭辞や接尾辞の記号を含めることができます。通常、これは最も悪いインデックス スコアを表します。(例: 100 より大きい、10 以上)。

注: このフィールドは、インデックス スコアを表示する場合に使用します。数値以外のインデックスの場合、このフィールドは空です。

color

object (Color)

AQI 数値スコアを表す色。

category

string

インデックス数値スコアの解釈のテキスト分類。例: 「非常に良い大気質」。

dominantPollutant

string

主な汚染物質の化学記号。例: 「CO」。

aqi

integer

インデックスの数値スコア。例: 10、100。

この値は正規化されていないため、関連する大気質指数のコンテキストでのみ解釈する必要があります。数値以外のインデックスの場合、このフィールドは返されません。

注: このフィールドは、計算やグラフの表示などに使用されます。インデックス スコアを表示するには、AQI 表示フィールドを使用する必要があります。

RGBA カラースペースのカラーを表します。この表現は、コンパクトさよりも、さまざまな言語の色表現との変換をシンプルにするために設計されています。たとえば、この表現のフィールドは、Java の java.awt.Color のコンストラクタに簡単に指定できます。iOS では、UIColor の +colorWithRed:green:blue:alpha メソッドに簡単に提供することもできます。少し手を加えることで、JavaScript の CSS rgba() 文字列に簡単にフォーマットできます。

このリファレンス ページには、RGB 値の解釈に使用する絶対色空間(sRGB、Adobe RGB、DCI-P3、BT.2020 など)に関する情報が記載されていません。デフォルトでは、アプリは sRGB 色空間を想定する必要があります。

色の等価性を判断する必要がある場合、実装では、特に明記されていない限り、赤、緑、青、アルファの値の差が 1e-5 以下であれば 2 つの色を等しいものとして扱います。

例(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

number

色の赤の量を [0, 1] の範囲内の値として表します。

green

number

カラーの緑色の量。区間 [0, 1] 内の値として示されます。

blue

number

カラーの青色の量。区間 [0, 1] 内の値として示されます。

alpha

number

ピクセルに適用する必要があるこのカラーの割合。つまり、最終ピクセルカラーは以下の式によって定義されます。

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

つまり、値 1.0 はソリッドカラーに相当し、値 0.0 は透明色に相当します。これは、単純な浮動小数点スカラーではなくラッパー メッセージを使用します。これにより、デフォルト値が設定されたのか未設定値だったのかを区別できます。省略すると、このカラー オブジェクトはソリッド カラーとしてレンダリングされます(アルファ値を明示的に 1.0 に設定した場合と同様です)。