Skip to content
Ray Garcia edited this page Aug 21, 2015 · 37 revisions

purpose

This is a moon-shot standalone prototype for fluidly learning AxI imagery science in combination with other sources.

Ultimately, this should make use of the capability of modern multiplatform OpenGL (including WebGL at some point) to provide full-resolution imagery manipulation, animation, and combination in a classroom setting.

what we hope to learn

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.

methodology

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 like Polar2Grid 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.

Establishing simple-to-approach extensibility and cooperation with other systems is a priority. 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.

dev environment setup and startup

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

Clone this wiki locally