diff --git a/samples/weatherdata/main.cpp b/samples/weatherdata/main.cpp index 55ab94ace..115f3ddba 100644 --- a/samples/weatherdata/main.cpp +++ b/samples/weatherdata/main.cpp @@ -33,7 +33,6 @@ int main(int argc, char *argv[]) BlackMisc::registerMetadata(); CLogHandler::instance()->install(true); CLogHandler::instance()->enableConsoleOutput(false); // default disable - BlackMisc::registerMetadata(); CLineReader lineReader(&a); CWeatherDataPrinter printer(&a); diff --git a/samples/weatherdata/reader.cpp b/samples/weatherdata/reader.cpp index ddf286902..626e14337 100644 --- a/samples/weatherdata/reader.cpp +++ b/samples/weatherdata/reader.cpp @@ -26,16 +26,17 @@ #include using namespace BlackMisc::Geo; +using namespace BlackMisc::Aviation; using namespace BlackMisc::PhysicalQuantities; void CLineReader::run() { QFile file; file.open(stdin, QIODevice::ReadOnly | QIODevice::Text); - QRegularExpression re("^(-?\\d+).([0,5])\\s(-?\\d+).([0,5])$"); + forever { - QString line = file.readLine().trimmed(); + QString line = file.readLine().simplified(); if (line == "x") { @@ -43,19 +44,14 @@ void CLineReader::run() continue; } - QRegularExpressionMatch match = re.match(line); - if (match.hasMatch()) + const QStringList parts = line.split(' '); + if (parts.size() == 2) { - double latitudeValue = match.captured(1).toDouble(); - if (latitudeValue > 0) { latitudeValue += match.captured(2).toDouble() / 10; } - else { { latitudeValue -= match.captured(2).toDouble() / 10; } } - double longitudeValue = match.captured(3).toDouble(); - if (longitudeValue > 0) { longitudeValue += match.captured(4).toDouble() / 10; } - else { longitudeValue -= match.captured(4).toDouble() / 10; } - longitudeValue += match.captured(4).toDouble() / 10; - const CLatitude latitude(latitudeValue, CAngleUnit::deg()); - const CLongitude longitude(longitudeValue, CAngleUnit::deg()); - const CCoordinateGeodetic position { latitude, longitude, {0} }; + const CLatitude latitude(CAngle::parsedFromString(parts.front(), CPqString::SeparatorBestGuess, CAngleUnit::deg())); + const CLongitude longitude(CAngle::parsedFromString(parts.back(), CPqString::SeparatorBestGuess, CAngleUnit::deg())); + const CAltitude alt(600, CLengthUnit::m()); + + const CCoordinateGeodetic position { latitude, longitude, alt}; emit weatherDataRequest(position); } else diff --git a/samples/weatherdata/weatherdataprinter.cpp b/samples/weatherdata/weatherdataprinter.cpp index 9d995610f..280bcef34 100644 --- a/samples/weatherdata/weatherdataprinter.cpp +++ b/samples/weatherdata/weatherdataprinter.cpp @@ -48,6 +48,7 @@ CWeatherDataPrinter::CWeatherDataPrinter(QObject *parent) : QObject(parent) void CWeatherDataPrinter::fetchAndPrintWeatherData(const CCoordinateGeodetic &position) { QTextStream qtout(stdout); + qtout << "Position:" << position.toQString(true) << endl; qtout << "Fetching weather data. This may take a while..." << endl; CWeatherGrid weatherGrid { { "", position } };