AirQualityIndex

Objet de base permettant de représenter différentes métriques de qualité de l'air. Ensemble, ces métriques donnent un aperçu des conditions actuelles de qualité de l'air. Il existe plusieurs indices dans le monde qui répondent à différents besoins et groupes qui s'intéressent à la mesure de différents aspects de la qualité de l'air.

Représentation JSON
{
  "code": string,
  "displayName": string,
  "aqiDisplay": string,
  "color": {
    object (Color)
  },
  "category": string,
  "dominantPollutant": string,
  "aqi": integer
}
Champs
code

string

Code de l'index. Ce champ représente l'index à des fins de programmation, en utilisant la casse snake au lieu d'espaces. Exemples : "uaqi", "fra_atmo".

displayName

string

Représentation lisible du nom de l'index. Exemple : "IQA (États-Unis)"

aqiDisplay

string

Représentation textuelle du score numérique d'index, pouvant inclure des symboles de préfixe ou de suffixe, représentant généralement le score d'index le moins élevé. Exemple : > 100 ou 10+.

Remarque: Ce champ doit être utilisé lorsque vous souhaitez afficher le score d'index. Pour les index non numériques, ce champ est vide.

color

object (Color)

Couleur utilisée pour représenter le score numérique de l'IQA.

category

string

Classification textuelle de l'interprétation du score numérique d'index. Exemple : "Excellente qualité de l'air".

dominantPollutant

string

Symbole chimique du polluant dominant. Par exemple : "CO".

aqi

integer

Score numérique de l'indice. Exemples: 10, 100.

Cette valeur n'est pas normalisée et ne doit être interprétée que dans le contexte de son indice de qualité de l'air. Pour les index non numériques, ce champ ne sera pas renvoyé.

Remarque: Ce champ doit être utilisé pour les calculs, l'affichage de graphiques, etc. Pour afficher le score de l'indice, vous devez utiliser le champ d'affichage de l'IQA.

Couleur

Représente une couleur dans l'espace colorimétrique RVBA. Cette représentation est conçue pour simplifier la conversion vers et depuis des représentations de couleurs dans différentes langues plutôt que pour être compacte. Par exemple, les champs de cette représentation peuvent être fournis facilement au constructeur de java.awt.Color en Java. il peut également être fourni de manière triviale à la méthode +colorWithRed:green:blue:alpha d'UIColor dans iOS. Avec un minimum d'efforts, vous pouvez facilement mettre en forme le code en une chaîne CSS rgba() en JavaScript.

Cette page de référence ne contient pas d'informations sur l'espace colorimétrique absolu à utiliser pour interpréter la valeur RVB (sRVB, Adobe RVB, DCI-P3 et BT.2020, par exemple). Par défaut, les applications doivent supposer que l'espace colorimétrique sRVB est utilisé.

Lorsque l'égalité des couleurs doit être décidée, les implémentations, sauf indication contraire, traitent deux couleurs comme égales si toutes leurs valeurs rouge, vert, bleu et alpha diffèrent de 1e-5 au maximum.

Exemple (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();
 }
 // ...

Exemple (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;
}
// ...

Exemple (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('');
};

// ...
Représentation JSON
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
Champs
red

number

Quantité de rouge dans la couleur en tant que valeur dans l'intervalle [0, 1].

green

number

Quantité de vert dans la couleur en tant que valeur dans l'intervalle [0, 1].

blue

number

Quantité de bleu dans la couleur en tant que valeur dans l'intervalle [0, 1].

alpha

number

Fraction de cette couleur à appliquer au pixel. En d'autres termes, la couleur finale du pixel est définie par l'équation :

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

Cela signifie qu'une valeur de 1,0 correspond à une couleur solide, tandis qu'une valeur de 0,0 correspond à une couleur complètement transparente. Un message wrapper est utilisé à la place d'une simple valeur scalaire flottante afin qu'il soit possible de distinguer une valeur par défaut de la valeur non définie. S'il est omis, cet objet couleur est affiché sous la forme d'une couleur unie (comme si la valeur alpha avait été explicitement définie sur 1,0).