SPI is a scientific and meteorological virtual globe offering immense processing, analysis and visualization capabilities, with a user interface similar to Google Earth and NASA World Wind. SPI uses an "always 3D" rendering method. Everything is always rendered in three dimensions, looking from the top it looks like a regular 2D map, but moving the camera around gives a new perspective of things.
SPI is built in Tcl/Tk. Most of the rendering and scientific functionalities are built as binary extensions to Tcl in the form of objects and functions and then used in SPI’s Tcl source code.
An exhaustive API described in another document allows for very powerful scripting, going from generation of a map to calculating flux along the path of a shape like country boundary. This API can be used to interact with many kind of data like RPN standard file, CMC trajectories, ESRI shapefiles, GeoTIFF imagery, BURP observation files and more,.
git clone --recursive git@gitlab.science.gc.ca:ECCC_CMOE_APPS/SPI
You will need cmake with a version at least 3.16
. ssmuse-sh -x /fs/ssm/main/opt/cmake-3.16.4
There are many dependencies to build SPI
. r.load.dot rpn/codetools/1.5.1
. r.load.dot rpn/libs/19.7.0
. r.load.dot rpn/vgrid/6.5.0
External dependencies (GDAL,URP,ECCODES,LIBECBUFR,...). Within the ECCC/SCIENCE network, a package containing all the dependencies cna be loaded
export CMD_EXT_PATH=/fs/ssm/eccc/cmd/cmds/ext/20210211; . ssmuse-sh -x $CMD_EXT_PATH
Even though you could load an SSM package, you should build libeerUtils first as it is intimely tied to SPI
The build process requires the definition of a variable indicating where the build will occur
export SSM_DEV=[where to build]
mkdir -p $SSM_DEV/src $SSM_DEV/package $SSM_DEV/workspace $SSM_DEV/build
cd libSPI
./makeit -ext
./makeit -reconf -build -ssm
To build a package for external distribution, use the root makeit script.
makeit -src
This will build a source package including SPI, GenPhysX and libeerUtils.
An automatic system of tests has been developed. For each push in the
master
branch the system tests are launched to guarantee that the
all the tests pass for the master
branch.