mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 04:50:06 +00:00 
			
		
		
		
	USe a common default geodesic object instead of duplicate copies.
All used functions are constant, and don't require unique instantiations for thread safety.
This commit is contained in:
		
							parent
							
								
									4a31cf6d3e
								
							
						
					
					
						commit
						90c8c0183a
					
				
					 10 changed files with 89 additions and 47 deletions
				
			
		|  | @ -163,6 +163,7 @@ set(HDR_UTIL source/scwx/qt/util/color.hpp | ||||||
|              source/scwx/qt/util/file.hpp |              source/scwx/qt/util/file.hpp | ||||||
|              source/scwx/qt/util/font.hpp |              source/scwx/qt/util/font.hpp | ||||||
|              source/scwx/qt/util/font_buffer.hpp |              source/scwx/qt/util/font_buffer.hpp | ||||||
|  |              source/scwx/qt/util/geographic_lib.hpp | ||||||
|              source/scwx/qt/util/json.hpp |              source/scwx/qt/util/json.hpp | ||||||
|              source/scwx/qt/util/streams.hpp |              source/scwx/qt/util/streams.hpp | ||||||
|              source/scwx/qt/util/texture_atlas.hpp |              source/scwx/qt/util/texture_atlas.hpp | ||||||
|  | @ -172,6 +173,7 @@ set(SRC_UTIL source/scwx/qt/util/color.cpp | ||||||
|              source/scwx/qt/util/file.cpp |              source/scwx/qt/util/file.cpp | ||||||
|              source/scwx/qt/util/font.cpp |              source/scwx/qt/util/font.cpp | ||||||
|              source/scwx/qt/util/font_buffer.cpp |              source/scwx/qt/util/font_buffer.cpp | ||||||
|  |              source/scwx/qt/util/geographic_lib.cpp | ||||||
|              source/scwx/qt/util/json.cpp |              source/scwx/qt/util/json.cpp | ||||||
|              source/scwx/qt/util/texture_atlas.cpp |              source/scwx/qt/util/texture_atlas.cpp | ||||||
|              source/scwx/qt/util/q_file_buffer.cpp |              source/scwx/qt/util/q_file_buffer.cpp | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| #include <scwx/qt/config/radar_site.hpp> | #include <scwx/qt/config/radar_site.hpp> | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
| #include <scwx/qt/util/json.hpp> | #include <scwx/qt/util/json.hpp> | ||||||
| #include <scwx/common/sites.hpp> | #include <scwx/common/sites.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
|  | @ -8,7 +9,6 @@ | ||||||
| #include <unordered_map> | #include <unordered_map> | ||||||
| 
 | 
 | ||||||
| #include <boost/json.hpp> | #include <boost/json.hpp> | ||||||
| #include <GeographicLib/Geodesic.hpp> |  | ||||||
| 
 | 
 | ||||||
| namespace scwx | namespace scwx | ||||||
| { | { | ||||||
|  | @ -31,9 +31,6 @@ static std::unordered_map<std::string, std::shared_ptr<RadarSite>> | ||||||
| static std::unordered_map<std::string, std::string> siteIdMap_; | static std::unordered_map<std::string, std::string> siteIdMap_; | ||||||
| static std::shared_mutex                            siteMutex_; | static std::shared_mutex                            siteMutex_; | ||||||
| 
 | 
 | ||||||
| static GeographicLib::Geodesic geodesic_ {GeographicLib::Constants::WGS84_a(), |  | ||||||
|                                           GeographicLib::Constants::WGS84_f()}; |  | ||||||
| 
 |  | ||||||
| static bool ValidateJsonEntry(const boost::json::object& o); | static bool ValidateJsonEntry(const boost::json::object& o); | ||||||
| 
 | 
 | ||||||
| class RadarSiteImpl | class RadarSiteImpl | ||||||
|  | @ -187,11 +184,11 @@ std::shared_ptr<RadarSite> RadarSite::FindNearest( | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       // Calculate distance to radar site
 |       // Calculate distance to radar site
 | ||||||
|       geodesic_.Inverse(latitude, |       util::GeographicLib::DefaultGeodesic().Inverse(latitude, | ||||||
|                         longitude, |                                                      longitude, | ||||||
|                         radarSite->latitude(), |                                                      radarSite->latitude(), | ||||||
|                         radarSite->longitude(), |                                                      radarSite->longitude(), | ||||||
|                         distanceInMeters); |                                                      distanceInMeters); | ||||||
| 
 | 
 | ||||||
|       // If the radar site is the closer, record it as the closest
 |       // If the radar site is the closer, record it as the closest
 | ||||||
|       if (nearestRadarSite == nullptr || distanceInMeters < nearestDistance) |       if (nearestRadarSite == nullptr || distanceInMeters < nearestDistance) | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| #include <scwx/qt/gl/draw/geo_line.hpp> | #include <scwx/qt/gl/draw/geo_line.hpp> | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
| #include <scwx/qt/util/texture_atlas.hpp> | #include <scwx/qt/util/texture_atlas.hpp> | ||||||
| #include <scwx/common/geographic.hpp> | #include <scwx/common/geographic.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
|  | @ -6,8 +7,6 @@ | ||||||
| #include <numbers> | #include <numbers> | ||||||
| #include <optional> | #include <optional> | ||||||
| 
 | 
 | ||||||
| #include <GeographicLib/Geodesic.hpp> |  | ||||||
| 
 |  | ||||||
| namespace scwx | namespace scwx | ||||||
| { | { | ||||||
| namespace qt | namespace qt | ||||||
|  | @ -33,8 +32,7 @@ class GeoLine::Impl | ||||||
| public: | public: | ||||||
|    explicit Impl(std::shared_ptr<GlContext> context) : |    explicit Impl(std::shared_ptr<GlContext> context) : | ||||||
|        context_ {context}, |        context_ {context}, | ||||||
|        geodesic_(GeographicLib::Constants::WGS84_a(), |        geodesic_ {util::GeographicLib::DefaultGeodesic()}, | ||||||
|                  GeographicLib::Constants::WGS84_f()), |  | ||||||
|        dirty_ {false}, |        dirty_ {false}, | ||||||
|        visible_ {true}, |        visible_ {true}, | ||||||
|        points_ {}, |        points_ {}, | ||||||
|  | @ -55,7 +53,7 @@ public: | ||||||
| 
 | 
 | ||||||
|    std::shared_ptr<GlContext> context_; |    std::shared_ptr<GlContext> context_; | ||||||
| 
 | 
 | ||||||
|    GeographicLib::Geodesic geodesic_; |    const GeographicLib::Geodesic& geodesic_; | ||||||
| 
 | 
 | ||||||
|    bool dirty_; |    bool dirty_; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| #include <scwx/qt/manager/radar_product_manager.hpp> | #include <scwx/qt/manager/radar_product_manager.hpp> | ||||||
| #include <scwx/qt/manager/radar_product_manager_notifier.hpp> | #include <scwx/qt/manager/radar_product_manager_notifier.hpp> | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
| #include <scwx/common/constants.hpp> | #include <scwx/common/constants.hpp> | ||||||
| #include <scwx/provider/nexrad_data_provider_factory.hpp> | #include <scwx/provider/nexrad_data_provider_factory.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
|  | @ -18,7 +19,6 @@ | ||||||
| #include <boost/range/irange.hpp> | #include <boost/range/irange.hpp> | ||||||
| #include <boost/timer/timer.hpp> | #include <boost/timer/timer.hpp> | ||||||
| #include <fmt/chrono.h> | #include <fmt/chrono.h> | ||||||
| #include <GeographicLib/Geodesic.hpp> |  | ||||||
| #include <QMapLibreGL/QMapLibreGL> | #include <QMapLibreGL/QMapLibreGL> | ||||||
| #pragma warning(pop) | #pragma warning(pop) | ||||||
| 
 | 
 | ||||||
|  | @ -81,7 +81,7 @@ public: | ||||||
|        group_ {group}, |        group_ {group}, | ||||||
|        product_ {product}, |        product_ {product}, | ||||||
|        refreshEnabled_ {false}, |        refreshEnabled_ {false}, | ||||||
|        refreshTimer_ {util::io_context()}, |        refreshTimer_ {scwx::util::io_context()}, | ||||||
|        refreshTimerMutex_ {}, |        refreshTimerMutex_ {}, | ||||||
|        provider_ {nullptr} |        provider_ {nullptr} | ||||||
|    { |    { | ||||||
|  | @ -303,8 +303,8 @@ void RadarProductManager::Initialize() | ||||||
| 
 | 
 | ||||||
|    boost::timer::cpu_timer timer; |    boost::timer::cpu_timer timer; | ||||||
| 
 | 
 | ||||||
|    GeographicLib::Geodesic geodesic(GeographicLib::Constants::WGS84_a(), |    const GeographicLib::Geodesic& geodesic( | ||||||
|                                     GeographicLib::Constants::WGS84_f()); |       util::GeographicLib::DefaultGeodesic()); | ||||||
| 
 | 
 | ||||||
|    const QMapLibreGL::Coordinate radar(p->radarSite_->latitude(), |    const QMapLibreGL::Coordinate radar(p->radarSite_->latitude(), | ||||||
|                                        p->radarSite_->longitude()); |                                        p->radarSite_->longitude()); | ||||||
|  | @ -425,7 +425,7 @@ void RadarProductManager::EnableRefresh(common::RadarProductGroup group, | ||||||
|          p->GetLevel3ProviderManager(product); |          p->GetLevel3ProviderManager(product); | ||||||
| 
 | 
 | ||||||
|       // Only enable refresh on available products
 |       // Only enable refresh on available products
 | ||||||
|       util::async( |       scwx::util::async( | ||||||
|          [=]() |          [=]() | ||||||
|          { |          { | ||||||
|             providerManager->provider_->RequestAvailableProducts(); |             providerManager->provider_->RequestAvailableProducts(); | ||||||
|  | @ -467,7 +467,7 @@ void RadarProductManagerImpl::RefreshData( | ||||||
|       providerManager->refreshTimer_.cancel(); |       providerManager->refreshTimer_.cancel(); | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    util::async( |    scwx::util::async( | ||||||
|       [=]() |       [=]() | ||||||
|       { |       { | ||||||
|          auto [newObjects, totalObjects] = |          auto [newObjects, totalObjects] = | ||||||
|  | @ -547,7 +547,7 @@ void RadarProductManagerImpl::LoadProviderData( | ||||||
| { | { | ||||||
|    logger_->debug("LoadProviderData: {}, {}", |    logger_->debug("LoadProviderData: {}, {}", | ||||||
|                   providerManager->name(), |                   providerManager->name(), | ||||||
|                   util::TimeString(time)); |                   scwx::util::TimeString(time)); | ||||||
| 
 | 
 | ||||||
|    RadarProductManagerImpl::LoadNexradFile( |    RadarProductManagerImpl::LoadNexradFile( | ||||||
|       [=, &recordMap, &recordMutex, &loadDataMutex]() |       [=, &recordMap, &recordMutex, &loadDataMutex]() | ||||||
|  | @ -589,7 +589,7 @@ void RadarProductManager::LoadLevel2Data( | ||||||
|    std::chrono::system_clock::time_point       time, |    std::chrono::system_clock::time_point       time, | ||||||
|    std::shared_ptr<request::NexradFileRequest> request) |    std::shared_ptr<request::NexradFileRequest> request) | ||||||
| { | { | ||||||
|    logger_->debug("LoadLevel2Data: {}", util::TimeString(time)); |    logger_->debug("LoadLevel2Data: {}", scwx::util::TimeString(time)); | ||||||
| 
 | 
 | ||||||
|    p->LoadProviderData(time, |    p->LoadProviderData(time, | ||||||
|                        p->level2ProviderManager_, |                        p->level2ProviderManager_, | ||||||
|  | @ -604,7 +604,7 @@ void RadarProductManager::LoadLevel3Data( | ||||||
|    std::chrono::system_clock::time_point       time, |    std::chrono::system_clock::time_point       time, | ||||||
|    std::shared_ptr<request::NexradFileRequest> request) |    std::shared_ptr<request::NexradFileRequest> request) | ||||||
| { | { | ||||||
|    logger_->debug("LoadLevel3Data: {}", util::TimeString(time)); |    logger_->debug("LoadLevel3Data: {}", scwx::util::TimeString(time)); | ||||||
| 
 | 
 | ||||||
|    // Look up provider manager
 |    // Look up provider manager
 | ||||||
|    std::shared_lock providerManagerLock(p->level3ProviderManagerMutex_); |    std::shared_lock providerManagerLock(p->level3ProviderManagerMutex_); | ||||||
|  | @ -742,7 +742,7 @@ RadarProductManagerImpl::GetLevel2ProductRecord( | ||||||
|    else |    else | ||||||
|    { |    { | ||||||
|       // TODO: Round to minutes
 |       // TODO: Round to minutes
 | ||||||
|       record = util::GetBoundedElementValue(level2ProductRecords_, time); |       record = scwx::util::GetBoundedElementValue(level2ProductRecords_, time); | ||||||
| 
 | 
 | ||||||
|       // Does the record contain the time we are looking for?
 |       // Does the record contain the time we are looking for?
 | ||||||
|       if (record != nullptr && (time < record->level2_file()->start_time())) |       if (record != nullptr && (time < record->level2_file()->start_time())) | ||||||
|  | @ -774,7 +774,7 @@ RadarProductManagerImpl::GetLevel3ProductRecord( | ||||||
|       } |       } | ||||||
|       else |       else | ||||||
|       { |       { | ||||||
|          record = util::GetBoundedElementValue(it->second, time); |          record = scwx::util::GetBoundedElementValue(it->second, time); | ||||||
|       } |       } | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|  | @ -904,7 +904,7 @@ void RadarProductManager::UpdateAvailableProducts() | ||||||
| 
 | 
 | ||||||
|    logger_->debug("UpdateAvailableProducts()"); |    logger_->debug("UpdateAvailableProducts()"); | ||||||
| 
 | 
 | ||||||
|    util::async( |    scwx::util::async( | ||||||
|       [=]() |       [=]() | ||||||
|       { |       { | ||||||
|          auto level3ProviderManager = |          auto level3ProviderManager = | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| #include <scwx/qt/map/radar_range_layer.hpp> | #include <scwx/qt/map/radar_range_layer.hpp> | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
| 
 | 
 | ||||||
| #include <GeographicLib/Geodesic.hpp> |  | ||||||
| #include <glm/glm.hpp> | #include <glm/glm.hpp> | ||||||
| 
 | 
 | ||||||
| namespace scwx | namespace scwx | ||||||
|  | @ -61,8 +61,8 @@ void RadarRangeLayer::Update(std::shared_ptr<QMapLibreGL::Map> map, | ||||||
| static std::shared_ptr<QMapLibreGL::Feature> | static std::shared_ptr<QMapLibreGL::Feature> | ||||||
| GetRangeCircle(float range, QMapLibreGL::Coordinate center) | GetRangeCircle(float range, QMapLibreGL::Coordinate center) | ||||||
| { | { | ||||||
|    GeographicLib::Geodesic geodesic(GeographicLib::Constants::WGS84_a(), |    const GeographicLib::Geodesic& geodesic( | ||||||
|                                     GeographicLib::Constants::WGS84_f()); |       util::GeographicLib::DefaultGeodesic()); | ||||||
| 
 | 
 | ||||||
|    constexpr float angleDelta  = 0.5f; |    constexpr float angleDelta  = 0.5f; | ||||||
|    constexpr float angleDeltaH = angleDelta / 2.0f; |    constexpr float angleDeltaH = angleDelta / 2.0f; | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ | ||||||
| #include <scwx/qt/config/county_database.hpp> | #include <scwx/qt/config/county_database.hpp> | ||||||
| #include <scwx/qt/manager/text_event_manager.hpp> | #include <scwx/qt/manager/text_event_manager.hpp> | ||||||
| #include <scwx/qt/types/qt_types.hpp> | #include <scwx/qt/types/qt_types.hpp> | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
| #include <scwx/common/geographic.hpp> | #include <scwx/common/geographic.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
| #include <scwx/util/strings.hpp> | #include <scwx/util/strings.hpp> | ||||||
|  | @ -9,7 +10,6 @@ | ||||||
| 
 | 
 | ||||||
| #include <format> | #include <format> | ||||||
| 
 | 
 | ||||||
| #include <GeographicLib/Geodesic.hpp> |  | ||||||
| #include <QApplication> | #include <QApplication> | ||||||
| #include <QFontMetrics> | #include <QFontMetrics> | ||||||
| 
 | 
 | ||||||
|  | @ -47,7 +47,7 @@ public: | ||||||
| 
 | 
 | ||||||
|    QList<types::TextEventKey> textEventKeys_; |    QList<types::TextEventKey> textEventKeys_; | ||||||
| 
 | 
 | ||||||
|    GeographicLib::Geodesic geodesic_; |    const GeographicLib::Geodesic& geodesic_; | ||||||
| 
 | 
 | ||||||
|    std::unordered_map<types::TextEventKey, |    std::unordered_map<types::TextEventKey, | ||||||
|                       common::Coordinate, |                       common::Coordinate, | ||||||
|  | @ -357,8 +357,7 @@ void AlertModel::HandleMapUpdate(double latitude, double longitude) | ||||||
| AlertModelImpl::AlertModelImpl() : | AlertModelImpl::AlertModelImpl() : | ||||||
|     textEventManager_ {manager::TextEventManager::Instance()}, |     textEventManager_ {manager::TextEventManager::Instance()}, | ||||||
|     textEventKeys_ {}, |     textEventKeys_ {}, | ||||||
|     geodesic_(GeographicLib::Constants::WGS84_a(), |     geodesic_(util::GeographicLib::DefaultGeodesic()), | ||||||
|               GeographicLib::Constants::WGS84_f()), |  | ||||||
|     distanceMap_ {}, |     distanceMap_ {}, | ||||||
|     distanceDisplay_ {scwx::common::DistanceType::Miles}, |     distanceDisplay_ {scwx::common::DistanceType::Miles}, | ||||||
|     previousPosition_ {} |     previousPosition_ {} | ||||||
|  | @ -381,7 +380,7 @@ std::string AlertModelImpl::GetCounties(const types::TextEventKey& key) | ||||||
|    } |    } | ||||||
|    std::sort(counties.begin(), counties.end()); |    std::sort(counties.begin(), counties.end()); | ||||||
| 
 | 
 | ||||||
|    return util::ToString(counties); |    return scwx::util::ToString(counties); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::string AlertModelImpl::GetState(const types::TextEventKey& key) | std::string AlertModelImpl::GetState(const types::TextEventKey& key) | ||||||
|  | @ -390,7 +389,7 @@ std::string AlertModelImpl::GetState(const types::TextEventKey& key) | ||||||
|    auto& lastMessage = messageList.back(); |    auto& lastMessage = messageList.back(); | ||||||
|    size_t segmentCount = lastMessage->segment_count(); |    size_t segmentCount = lastMessage->segment_count(); | ||||||
|    auto   lastSegment  = lastMessage->segment(segmentCount - 1); |    auto   lastSegment  = lastMessage->segment(segmentCount - 1); | ||||||
|    return util::ToString(lastSegment->header_->ugc_.states()); |    return scwx::util::ToString(lastSegment->header_->ugc_.states()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::chrono::system_clock::time_point | std::chrono::system_clock::time_point | ||||||
|  | @ -404,7 +403,7 @@ AlertModelImpl::GetStartTime(const types::TextEventKey& key) | ||||||
| 
 | 
 | ||||||
| std::string AlertModelImpl::GetStartTimeString(const types::TextEventKey& key) | std::string AlertModelImpl::GetStartTimeString(const types::TextEventKey& key) | ||||||
| { | { | ||||||
|    return util::TimeString(GetStartTime(key)); |    return scwx::util::TimeString(GetStartTime(key)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::chrono::system_clock::time_point | std::chrono::system_clock::time_point | ||||||
|  | @ -419,7 +418,7 @@ AlertModelImpl::GetEndTime(const types::TextEventKey& key) | ||||||
| 
 | 
 | ||||||
| std::string AlertModelImpl::GetEndTimeString(const types::TextEventKey& key) | std::string AlertModelImpl::GetEndTimeString(const types::TextEventKey& key) | ||||||
| { | { | ||||||
|    return util::TimeString(GetEndTime(key)); |    return scwx::util::TimeString(GetEndTime(key)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| } // namespace model
 | } // namespace model
 | ||||||
|  |  | ||||||
|  | @ -1,13 +1,12 @@ | ||||||
| #include <scwx/qt/model/radar_site_model.hpp> | #include <scwx/qt/model/radar_site_model.hpp> | ||||||
| #include <scwx/qt/config/radar_site.hpp> | #include <scwx/qt/config/radar_site.hpp> | ||||||
| #include <scwx/qt/types/qt_types.hpp> | #include <scwx/qt/types/qt_types.hpp> | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
| #include <scwx/common/geographic.hpp> | #include <scwx/common/geographic.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
| 
 | 
 | ||||||
| #include <format> | #include <format> | ||||||
| 
 | 
 | ||||||
| #include <GeographicLib/Geodesic.hpp> |  | ||||||
| 
 |  | ||||||
| namespace scwx | namespace scwx | ||||||
| { | { | ||||||
| namespace qt | namespace qt | ||||||
|  | @ -36,7 +35,7 @@ public: | ||||||
| 
 | 
 | ||||||
|    QList<std::shared_ptr<config::RadarSite>> radarSites_; |    QList<std::shared_ptr<config::RadarSite>> radarSites_; | ||||||
| 
 | 
 | ||||||
|    GeographicLib::Geodesic geodesic_; |    const GeographicLib::Geodesic& geodesic_; | ||||||
| 
 | 
 | ||||||
|    std::unordered_map<std::string, double> distanceMap_; |    std::unordered_map<std::string, double> distanceMap_; | ||||||
|    scwx::common::DistanceType              distanceDisplay_; |    scwx::common::DistanceType              distanceDisplay_; | ||||||
|  | @ -186,8 +185,7 @@ void RadarSiteModel::HandleMapUpdate(double latitude, double longitude) | ||||||
| 
 | 
 | ||||||
| RadarSiteModelImpl::RadarSiteModelImpl() : | RadarSiteModelImpl::RadarSiteModelImpl() : | ||||||
|     radarSites_ {}, |     radarSites_ {}, | ||||||
|     geodesic_(GeographicLib::Constants::WGS84_a(), |     geodesic_(util::GeographicLib::DefaultGeodesic()), | ||||||
|               GeographicLib::Constants::WGS84_f()), |  | ||||||
|     distanceMap_ {}, |     distanceMap_ {}, | ||||||
|     distanceDisplay_ {scwx::common::DistanceType::Miles}, |     distanceDisplay_ {scwx::common::DistanceType::Miles}, | ||||||
|     previousPosition_ {} |     previousPosition_ {} | ||||||
|  |  | ||||||
							
								
								
									
										24
									
								
								scwx-qt/source/scwx/qt/util/geographic_lib.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								scwx-qt/source/scwx/qt/util/geographic_lib.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace qt | ||||||
|  | { | ||||||
|  | namespace util | ||||||
|  | { | ||||||
|  | namespace GeographicLib | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | const ::GeographicLib::Geodesic& DefaultGeodesic() | ||||||
|  | { | ||||||
|  |    static const ::GeographicLib::Geodesic geodesic_ { | ||||||
|  |       ::GeographicLib::Constants::WGS84_a(), | ||||||
|  |       ::GeographicLib::Constants::WGS84_f()}; | ||||||
|  | 
 | ||||||
|  |    return geodesic_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | } // namespace GeographicLib
 | ||||||
|  | } // namespace util
 | ||||||
|  | } // namespace qt
 | ||||||
|  | } // namespace scwx
 | ||||||
							
								
								
									
										24
									
								
								scwx-qt/source/scwx/qt/util/geographic_lib.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								scwx-qt/source/scwx/qt/util/geographic_lib.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <GeographicLib/Geodesic.hpp> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace qt | ||||||
|  | { | ||||||
|  | namespace util | ||||||
|  | { | ||||||
|  | namespace GeographicLib | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |  * Get the default geodesic for the WGS84 ellipsoid. | ||||||
|  |  * | ||||||
|  |  * return WGS84 ellipsoid geodesic | ||||||
|  |  */ | ||||||
|  | const ::GeographicLib::Geodesic& DefaultGeodesic(); | ||||||
|  | 
 | ||||||
|  | } // namespace GeographicLib
 | ||||||
|  | } // namespace util
 | ||||||
|  | } // namespace qt
 | ||||||
|  | } // namespace scwx
 | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| #include <scwx/qt/view/level3_raster_view.hpp> | #include <scwx/qt/view/level3_raster_view.hpp> | ||||||
|  | #include <scwx/qt/util/geographic_lib.hpp> | ||||||
| #include <scwx/common/constants.hpp> | #include <scwx/common/constants.hpp> | ||||||
| #include <scwx/util/logger.hpp> | #include <scwx/util/logger.hpp> | ||||||
| #include <scwx/util/threads.hpp> | #include <scwx/util/threads.hpp> | ||||||
|  | @ -7,7 +8,6 @@ | ||||||
| 
 | 
 | ||||||
| #include <boost/range/irange.hpp> | #include <boost/range/irange.hpp> | ||||||
| #include <boost/timer/timer.hpp> | #include <boost/timer/timer.hpp> | ||||||
| #include <GeographicLib/Geodesic.hpp> |  | ||||||
| 
 | 
 | ||||||
| namespace scwx | namespace scwx | ||||||
| { | { | ||||||
|  | @ -202,12 +202,12 @@ void Level3RasterView::ComputeSweep() | ||||||
|    p->longitude_ = descriptionBlock->longitude_of_radar(); |    p->longitude_ = descriptionBlock->longitude_of_radar(); | ||||||
|    p->range_     = descriptionBlock->range(); |    p->range_     = descriptionBlock->range(); | ||||||
|    p->sweepTime_ = |    p->sweepTime_ = | ||||||
|       util::TimePoint(descriptionBlock->volume_scan_date(), |       scwx::util::TimePoint(descriptionBlock->volume_scan_date(), | ||||||
|                       descriptionBlock->volume_scan_start_time() * 1000); |                             descriptionBlock->volume_scan_start_time() * 1000); | ||||||
|    p->vcp_ = descriptionBlock->volume_coverage_pattern(); |    p->vcp_ = descriptionBlock->volume_coverage_pattern(); | ||||||
| 
 | 
 | ||||||
|    GeographicLib::Geodesic geodesic(GeographicLib::Constants::WGS84_a(), |    const GeographicLib::Geodesic& geodesic = | ||||||
|                                     GeographicLib::Constants::WGS84_f()); |       util::GeographicLib::DefaultGeodesic(); | ||||||
| 
 | 
 | ||||||
|    const uint16_t xResolution = descriptionBlock->x_resolution_raw(); |    const uint16_t xResolution = descriptionBlock->x_resolution_raw(); | ||||||
|    const uint16_t yResolution = descriptionBlock->y_resolution_raw(); |    const uint16_t yResolution = descriptionBlock->y_resolution_raw(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat