dpaulat / supercell-wx Goto Github PK
View Code? Open in Web Editor NEWSupercell Wx is a free, open source advanced weather radar viewer.
Home Page: https://supercell-wx.rtfd.io
License: MIT License
Supercell Wx is a free, open source advanced weather radar viewer.
Home Page: https://supercell-wx.rtfd.io
License: MIT License
If events are updated out of sequence, the most recently received update will incorrectly be treated as the newest. This is not expected to happen during normal retrieval of text products, but can easily occur when loading products manually.
As a user, I should be able to view all of the radar sites as labels on the map. Double clicking a radar's label should switch my current radar site to the site that was clicked.
Zone and county files will update effective September 19, 2023. Final versions are expected to be posted by July 18. The new files need integrated.
Auto-refresh will intermittently fail at the start of a new UTC day, and disable refresh due to "no products available". The product must be selected again in order to re-enable refresh.
If a color table contains lower case statements, the color table does not load. The current logic assumes statements will be case sensitive as defined in the Color Table File Specification:
http://www.grlevelx.com/manuals/color_tables/files_color_table.htm
Populate Version Information in the About dialog from Git, and a manual version tag
When an alert/warning is hovered over on the map, a status window should be displayed giving additional information about the alert. There should be a clickable action to pull up the full alert information, similar to the tabular view.
A short option should be available to display only Impact-Based Warning Tags, as opposed to the entire text message segment.
Cleanup duplicative resource usage between map instances that use a shared OpenGL context. Consider caching certain resources to avoid having to reload when certain settings change.
It would be nice to be able to pass a flag on my shortcut to disable the console window for those of us uninterested in seeing it.
When the radar product ComputeSweep() function takes a long time (~0.5 seconds or more), animation at higher speeds fails to render updated scans. This is seen on Linux when animating level 2 products, due to #54.
This is likely due to a race condition involving computing the sweep. It could be due to requesting another product too quickly, or another reason.
If the product renders quickly enough, or the animation is slow enough (loop speed), the issue is not seen.
Notify the user when a new release is available. Allow disabling via a setting.
Automated builds need setup for Windows and Linux
Qt Plugins are not deployed with the Linux package. As a result, the application fails to run without these already installed and locatable in the current environment.
This should be resolved using the existing deploy mechanism going to Qt 6.5, but needs to be verified.
Currently, radar products are not garbage collected. Old products should be purged from memory.
When hovering over the time in the upper right of the map, expand the status window to display detailed radar product information.
There is extensive use of the parallel STL using C++17 execution policies. The use of these algorithms behave as expected when compiling for Windows using MSVC.
When compiled for Linux using GCC, the parallel STL defaults to a serial backend, causing poor performance of parallel algorithms.
The Linux build should be updated to use a parallel backend, such as TBB, or another suitable parallel processing mechanism.
The color table displayed on the map should have a legend. Consider flipping from horizontal to vertical with an inset. This is likely to uncover scaling issues with various products.
When a level 3 file is loaded with a radial count other than 360 or 720, the product will not display.
Debug Log:
[2023-05-24 22:46:06.096] [68496] [debug] [scwx::qt::manager::radar_product_manager] LoadProviderData: KLSX, L3, N0C, 2023-05-25 03:37:09
[2023-05-24 22:46:06.097] [68496] [debug] [scwx::provider::aws_nexrad_data_provider] FindKey: 2023-05-25 03:44:16
[2023-05-24 22:46:06.230] [68496] [debug] [scwx::wsr88d::level3_file] Loading Data
[2023-05-24 22:46:06.231] [68496] [debug] [scwx::wsr88d::level3_file] Data Type: SD
[2023-05-24 22:46:06.231] [68496] [debug] [scwx::wsr88d::level3_file] ICAO: KLSX
[2023-05-24 22:46:06.231] [68496] [debug] [scwx::wsr88d::level3_file] Date/Time: 250344
[2023-05-24 22:46:06.231] [68496] [debug] [scwx::wsr88d::level3_file] Category: N0B
[2023-05-24 22:46:06.231] [68496] [debug] [scwx::wsr88d::level3_file] Site ID: LSX
[2023-05-24 22:46:06.231] [68496] [debug] [scwx::wsr88d::rpg::level3_message_factory] Found Message 153
[2023-05-24 22:46:06.271] [68496] [debug] [scwx::wsr88d::rpg::graphic_product_message] Loading Blocks
[2023-05-24 22:46:06.272] [68496] [debug] [scwx::wsr88d::rpg::graphic_product_message] Product symbology block valid: true
[2023-05-24 22:46:06.272] [68496] [debug] [scwx::qt::manager::radar_product_manager] Initialize()
[2023-05-24 22:46:06.399] [68496] [debug] [scwx::qt::manager::radar_product_manager] Coordinates (0.5 degree) calculated in 0.126764s
[2023-05-24 22:46:06.458] [68496] [debug] [scwx::qt::manager::radar_product_manager] Coordinates (1 degree) calculated in 0.058265s
[2023-05-24 22:46:06.458] [68496] [debug] [scwx::qt::manager::radar_product_manager] StoreRadarProductRecord()
[2023-05-24 22:46:06.459] [68496] [debug] [scwx::provider::aws_nexrad_data_provider] FindKey: 2023-05-25 03:37:09
[2023-05-24 22:46:06.459] [67428] [debug] [scwx::qt::map::map_widget] SelectRadarProduct: KLSX, L3, N0B, 2023-05-25 03:44:16
[2023-05-24 22:46:06.718] [68496] [debug] [scwx::qt::view::level3_radial_view] ComputeSweep()
[2023-05-24 22:46:06.718] [68496] [warning] [scwx::qt::view::level3_radial_view] Unsupported number of radials: 719
Warnings should be animated along with the radar scans. The timeline manager emits a SelectedTimeUpdated() signal, which can be used to render warnings active at the selected time.
I've experienced a rare (usually no more frequent than once per 24 hours of runtime) crash to desktop with handling of alert updates.
supercell-wx/scwx-qt/source/scwx/qt/model/alert_model.cpp
Lines 410 to 418 in 7f624e1
When line 415 above is executed, the application may crash if the message list for a key is empty. There should be two fixes:
If the Windows display scale is set to anything other than 100%, UI elements do not display at the correct position.
The Linux build should set the rpath or runpath of the executable in order to eliminate the need to set LD_LIBRARY_PATH when running.
County boundaries are needed on the map. This should be a selectable option. Layer ordering of boundaries vs. radar image seems appropriate, but coastlines are not visible underneath a radar image.
Display open source licenses and other credits in the About dialog (sub-dialog) acknowledgements markdown
Add support for NWS Local Storm Reports as described at https://www.spc.noaa.gov/climo/online/
A storm report should display on the map. When hovered over, additional information about the storm report should be displayed.
Storm reports should also be available in table format, similar to warnings. Maybe group them under alerts, using a separate tab?
Not sure if you could get access to it but having a option to show/hide convective outlooks like the ones shown over at https://www.spc.noaa.gov/products/outlook/
When navigating to an alert, the selected radar site should be updated to the nearest radar (consider WSR-88D vs. TDWR).
When double clicking an alert in the alert table, it should either "Go" or "View" the alert (default "Go", configurable in settings).
The application needs a user's guide. This should be done using Read the Docs or a similar method.
Currently only Mapbox is supported as a tile source. Add support for MapTiler. Consider making this flexible for custom map sources as well, as supported by the MapLibre library.
As more options become available on the side panel, collapsible groups should be implemented
Add a tone for severe weather alerts.
A new library will be required to play audio, with multiple formats preferred (e.g., ogg, mp3, wav, etc.). Qt Multimedia should be given consideration along with lighter weight options. Note GPL dependencies must be avoided.
To monitor for updated alerts, a connection to TextEventManager::AlertUpdated can be made (see alert_layer.cpp as an example).
Add selection for level 2 reflectivity declutter
The most recently used map style should be saved in the settings, similar to the last product selected.
The alert dock does not always refresh, and warning display has a tendency to become stale.
Add mPING support
This epic is intended to capture overall progress on support for level 3 products.
See the following for the latest status: https://supercell-wx.readthedocs.io/en/stable/features/nexrad-l3.html
When moving the mouse cursor over the map, information about the hovered location should be displayed, including latitude/longitude and radar bin data.
Asynchronous threads are outliving their parents. Some of this has been mitigated with the use of mutexes, but not completely. Because the thread pools are managed outside the object lifecycle, work posted to boost::asio does not ensure the completion prior to parent objects being destroyed - this must be managed by the objects. This is becoming more apparent now that animation is implemented, and the chance of a crash upon object destruction is increasing.
Thread pools should instead be managed by the objects that spawn threads. An example and partial fix is in 1c159a3.
Level 2 products appear to rock back and forth as the frames animate.
Currently, the level 2 rendering takes the start angle, and assumes 0.5 degree or 1 degree radials. However, the angle can vary between radials and scans, so this must be calculated every frame.
The solution will likely be similar to that in 9c44257, but I expect all frames must be recalculated, instead of non-standard ones.
The AWS Level 2 Prune Test has an intermittent failure, causing issues with CI.
I joined the discord server listed in the readme twice, and both times it had disappeared from my list. Is it an issue on my end or had I been kicked?
Thanks!
Add a timeline to the application. This feature should allow the display of animated radar data in a specific time window, in addition to historical data. All products should be synchronized on the timeline as available.
Completed for Prerelease 1:
Completed for Prerelease 3:
Required for completion:
Maybe (could be deferred to future update):
Add support for OS-provided location, or external GPS devices (e.g., Bluetooth, etc.).
Zone and county files will update effective March 8, 2023. The new files need integrated.
Linux support will come in a future update. Currently certain C++20 chrono features (timezones and formatting) are used, which only MSVC currently supports. GCC 16 is expected to bring additional support, otherwise portions will need rewritten, perhaps using Howard Hinnant's date library and/or fmt. Clang does not currently advertise support of these features.
supercell-wx/wxdata/include/scwx/util/threads.hpp
Lines 8 to 13 in a474608
Because futures are not tracked, if the application exits while an asynchronous operation is still running, undefined behavior can occur within those operations.
A mechanism needs to be created to track these futures and wait for asynchronous tasks to complete.
Support for additional NEXRAD providers is needed, including:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.