43 if (_min_visibility.getVisibility_m() == SGMetarNaN)
46 if (_max_visibility.getVisibility_m() == SGMetarNaN)
49 std::vector<SGMetarCloud> cv = _clouds;;
52 cl.set(5500 * SG_FEET_TO_METER, SGMetarCloud::COVERAGE_SCATTERED);
53 _clouds.push_back(cl);
58 d = _min_visibility.getVisibility_m();
61 if (_min_visibility.getModifier() == SGMetarVisibility::GREATER_THAN)
63 _min_visibility.set(d);
65 if (_max_visibility.getVisibility_m() == SGMetarNaN)
66 _max_visibility.set(d);
68 for (
i = 0;
i < 8;
i++) {
69 d = _dir_visibility[
i].getVisibility_m();
71 _dir_visibility[
i].set(10000.0);
72 if (_dir_visibility[
i].getModifier() == SGMetarVisibility::GREATER_THAN)
74 _dir_visibility[
i].set(d);
78 if (_wind_dir == -1) {
79 if (_wind_range_from == -1) {
84 _wind_dir = (_wind_range_from + _wind_range_to) / 2;
86 }
else if (_wind_range_from == -1) {
87 _wind_range_from = _wind_range_to = _wind_dir;
90 if (_wind_speed == SGMetarNaN)
92 if (_gust_speed == SGMetarNaN)
96 std::vector<SGMetarCloud> cv = _clouds;
97 std::vector<SGMetarCloud>::iterator cloud, cv_end = cv.end();
99 for (
i = 0, cloud = cv.begin(); cloud != cv_end; ++cloud,
i++) {
100 SGMetarCloud::Coverage cov = cloud->getCoverage();
101 if (cov == SGMetarCloud::COVERAGE_NIL)
102 cov = SGMetarCloud::COVERAGE_CLEAR;
104 double alt = cloud->getAltitude_ft();
105 if (alt == SGMetarNaN)
108 cloud->set(alt, cov);
113 if (_temp == SGMetarNaN)
116 if (_dewp == SGMetarNaN)
119 if (_pressure == SGMetarNaN)
120 _pressure = 30.0 * SG_INHG_TO_PA;
123 std::map<std::string, SGMetarRunway> rm = getRunways();
124 std::map<std::string, SGMetarRunway>::const_iterator runway, rm_end = rm.end();
125 for (runway = rm.begin(); runway != rm_end; ++runway) {
126 SGMetarRunway rwy = runway->second;
127 if (rwy.getDeposit() >= 3 ) {
132 if (_temp < 5.0 && _snow)
134 if (_temp < 1.0 && getRelHumidity() > 80)
137 _time = sgTimeGetGMT(_year - 1900, _month - 1, _day, _hour, _minute, 0);
139 SG_LOG(SG_ENVIRONMENT, SG_DEBUG,
"FGMetar:" << getDataString());
141 SG_LOG(SG_ENVIRONMENT, SG_DEBUG,
"METAR from proxy");
143 SG_LOG(SG_ENVIRONMENT, SG_DEBUG,
"METAR from tgftp.nws.noaa.gov");