SIFT Developer Documentation¶
SIFT, Satellite Information Familiarization Tool, is a GUI application for viewing and analyzing earth-observing satellite data. This documentation is meant for developers of SIFT or those interested in the low-level details (programming interfaces, public APIs, overall designs, etc). For general information on the use of SIFT, official releases, and installation instructions of those releases see the SIFT home page.
For source code and other information now provided by the home page see the GitHub repository. Some of the original design documentation of SIFT can be found on the repository’s wiki. This site’s documentation will slowly replace the low-level documents on the wiki.
Design Overview¶
SIFT’s software design revolves around a few key components:
- Main Window (GUI)
- Workspace
- Document
- Scene Graph
Each of these components is described in the sections below. Other components involved in accomplishing SIFT’s feature.
Main Window¶
Currently the main window for the SIFT GUI connects all other components and helper objects. This may change in future versions of SIFT. By defining things this way the main window has access to UI events and can connect them to the other SIFT components that need to use them like those listed below.
Workspace¶
The Workspace acts as the manager of on-disk or remote data. It will handle importing requested datasets, caching binary data, and storing dataset metadata in a database for easier querying. Since the Workspace manages all of the cached data it is also the best place that SIFT components will go for variations on the data (different resolutions, data within a polygon, etc).
Document¶
The Document acts as the “model” of the Model-View-Controller design of SIFT. Through the Document a developer can get access to individual layer objects containing metadata, layer order, and animation order. In the future as other features are added to SIFT the Document may provide user profile or configuration information.
Scene Graph¶
The Scene Graph wraps all map canvas elements visual elements.
It handles connecting all mouse events from the map canvas like pan and zoom
events. The majority of this components responsibility is to map SIFT
functions to the python vispy
library.