-
Notifications
You must be signed in to change notification settings - Fork 15
home
It's a working title. Community Satellite Persistence of Vision? Presenter of Variables?
This is a moon-shot standalone rapid prototype for fluidly presenting meteorological imagery - specifically large-scale datasets like AHI/ABI/AMI - in combination with other sources. It should be immediately approachable to the novice, sufficient in accuracy for real analysis exercises, and free for use and modification by the community.
Ultimately, this should make use of the capability of modern multiplatform OpenGL (including WebGL at some point) to provide full-resolution imagery manipulation, animation, as well as scientific combination and enhancement capability in a classroom setting.
A lot of capability of modern computers resides in the video subsystem. Efforts such as vispy show that a lot of heavy lifting for time-critical or data-intensive rendering can be done using well-standardized OpenGL capabilities across languages, operating systems, and even in the web browser using WebGL now.
By smartly buffering into OpenGL the right subset tiles of a huge (up to 22000x22000 x16bands x12frames) dataset, we hope to achieve a fluid and resource-efficient user experience for data analysis.
Later experiments will include using GLSL (shading language) to allow real-time adjustments, enhancements and combinations of bands to be rendered in realtime.
Once we have a stable and useful system, we can look at porting the engine to other target systems, e.g. Web/mobile/tablet.
The initial prototyping is done in Anaconda Python 3 using PyQt4 and PyOpenGL. This is a stable, science-oriented, modular and modern development environment available for Windows, Mac and Linux.
We will lean on other high-quality open source systems in the geoscience and satellite communities to provide subsystems, plugins or know-how. GDAL for large-scale data warping, PROJ.4 for projection math, Shapely for geographic area representation, grib_api for ground station data, et cetera. Much code will be borrowed from Polar2Grid, CSPP, and so on.
Establishing simple-to-approach extensibility and cooperation with other programs is a priority. Building a monolithic system incapable of shedding past missteps is a sure route to failure. A simple internal data representation ("workspace") should allow others to bring their data into the system in minutes, not days. Authoring plugins should not require deep knowledge of the internals of the visualization application.
In fact, multiple complementary or alternative applications in multiple languages may have to cooperate in one workspace to get the user what s/he wants. For instance, a probe process written in MATLAB should be able to take shape selection information from the map GUI, and provide an HTML control updated with a D3.js javascript visualization.
Download Anaconda 3 v2.3 or newer for your platform. You don't need admin to install it.
conda create -n cspov python=3.4 anaconda
source activate cspov
conda install netCDF4 h5py pyopengl vispy gdal pyproj
export PYTHONPATH=/path/to/CSPOV/py
python -m cspov