public static function getAirQualityIndex($aqi, $type = 'obj')
{
$scale = new stdClass();
$scale->val = $aqi;
if(-999 == $aqi)
{
$scale->bgcolor = '#666';
$scale->color = '#fff';
$scale->level = '-';
}
elseif(300 < $aqi)
{
$scale->bgcolor = '#7e0023';
$scale->color = '#fff';
$scale->level = '위험';
}
elseif(200 < $aqi)
{
$scale->bgcolor = '#cc0033';
$scale->color = '#fff';
$scale->level = '매우나쁨';
}
elseif(150 < $aqi)
{
$scale->bgcolor = '#cc0033';
$scale->color = '#fff';
$scale->level = '매우나쁨';
}
elseif(80 < $aqi)
{
$scale->bgcolor = '#cc0033';
$scale->color = '#fff';
$scale->level = '나쁨';
}
elseif(30 < $aqi)
{
$scale->bgcolor = '#ffde33';
$scale->color = '#000';
$scale->level = '보통';
}
else
{
$scale->bgcolor = '#009966';
$scale->color = '#fff';
$scale->level = '좋음';
}
return $type == 'obj' ? $scale : $scale->bgcolor;
}
$aqi 에 미세먼지값, 초미세먼지값 2가지 가 모두 있는데.. 저 값이 어떤 값을 기준으로 하는지 갑자기 궁금해졌습니다.
뭔가 이상하다는 생각이 들어서요. 초미세먼지의 농도별 단계는 또 다르거든요.
위쪽에서 api에서 가져오는 부분은
if(!$aqi_data)
{
// 공기질 : 새 데이터 작성 실패시 혹시 유효기간 지난 캐시라도 있으면 캐시 사용
$aqi_data = new stdClass();
self::initData($geo, $aqi_data, 'aqi');
$aqicn_url = 'https://api.waqi.info/feed/geo:'.$geo->lat.';'.$geo->lng.'/?token='.self::$_aqicn_token;
if($air = json_decode(self::file_get_contents_curl($aqicn_url, self::$_timeout)))
{
if($air->status === 'ok')
{
$is_aqi_new = true;
$aqi_data = self::getAirQualityIndex((int)$air->data->aqi);
$aqi_data->pm10 = $air->data->iaqi->pm10->v;
$aqi_data->pm10_color = self::getAirQualityIndex((int)$aqi_data->pm10, 'color');
$aqi_data->pm25 = $air->data->iaqi->pm25->v;
$aqi_data->pm25_color = self::getAirQualityIndex((int)$aqi_data->pm25, 'color');
$aqi_data->time = date('H:i', strtotime($air->data->time->s));
$aqi_data->time_full = $air->data->time->s;
}
}
if($aqi_data->time == '' && $cached_aqi)
{
$aqi_data = $cached_aqi;
}
}
이렇습니다. 저는 이걸 미세먼지, 초미세먼지 두개 농도값을 모두 다 적용해서 단계를 표시해 주려고 하는데 코드 자체를 이해하지 못하는 상황이 되어 버렸네요.
이 데이터를 $air->data->aqi 으로 인코딩했는것 같은데, 이 값이 integer(순수한 숫자값) 값으로 보여집니다. 그 숫자에 따라 날씨관련 조절이 있는듯 한데요?
암튼 그걸
메서드로 호출할때 $aqi 값으로 넘겨서 받는쪽에서 $salce 이라는 변수의 val 이라는 열쇠값에 변수를 저장했다고 보시면되요.