EarthKit
From InfovisWiki
Contents |
Description
These are all the components and framework development activities associated with cartography (geographic visualization) functionality within the Titan toolkit.
Short Term Work
-
Develop super cool use cases-
GTD database - Network heat map?
-
-
Research geo projections (Jeff) - Larger textures
- Explore interaction
- Zoom on double-click
- Pop up on mouse over or single click
-
architecture and implementation. - Integration into ThreatView (See EarthKit ThreatView integration)
-
Linked selection -
Graph display (both nodes and links) -
Labels on graph nodes -
Labels on graph links -
Political boundaries (David T.) - Region labels (state, country labels)
- Lineal labels (graph edges)
- Dynamic point labelling (Dave P.)
-
- Dynamic labels / icons based on priorities.
-
Turn vtkLabelPlacer into a filter with two outputs (icon polydata, text polydata) -
Make vtkPointSetToLabelHierarchy accept multiple inputs. Instead of storage being anoctree<set<vtkIdType> > >, it becomesoctree<set<pair<int,vtkIdType> > >. The first entry in the pair specifies the input port. - Have the vtkLabelPlacer keep a sorted list of labels placed in the last N frames and place them before traversing the octree.
-
Traverse the octree in the proper order (basically a breadth-first traversal of all octree nodes within a given distance, with nodes closer to the camera coming first within a given level of the octree). -
Tie the label placer, the GeoView, the icon renderer, and some kind of text rendering into a test application for benchmarking.
-
-
Figure out EarthKit Threading Model
Dependencies
The ThreatView integration depends on Tim or Eric finding time to work on it or at least provide guidance.
Long Term Work
- EarthKit background research - never-ending literature and software survey
- EarthKit wish list - use cases, feature requests, etc.
- EarthKit architecture - some initial work on the requirements and architecture.
Work Completed
- Package up current functionality so that Brian W can use it in a small vtksnl app (Jeff) - vtkGeoView should be ready to be added to a small application, by adding it to a QVTKWidget. After making a view, you can add a vtkGeoGraphRepresentation which will render a graph which has data arrays called "latitude" and "longitude" (array names are configurable). See GeoView application to see how this is done. Linked selection with vtkGraphLayoutView is working.
- Shift-selection bug - Fixed.
- More responsive interation - Fixed. A bug in vtkOpenGLTexture was causing all textures to reload at the start of every pan/zoom interaction event. This no longer happens.
- Better initial view - Now vtkGeoTerrainGlobeSource generates 16x16 polydata instead of 8x8.
- Quality of rendered globe (NASA image too dark), possibly change lighting. Now uses Natural Earth image by default. Made the lighting ambient (this hides polygon boundaries).
- Prototype for non-overlapping icon/label mapper in 3D. This prototype works with boxes which could represent icons or labels. Currently does a quadratic-time box-overlap algorithm (if a box overlaps another drawn box, it is not drawn). I made a video of the current prototype. Notice the imperfections in computing screen box overlaps.
- Widget for tilt, zoom, and changing heading.
- Research geo labeling (Jeff)
- Develop super cool use cases (partial):
- Added political boundaries a while back
- Added US Census data (city lat/long, name, and population) for demonstrating label placement. This is in
vtkSNL/Applications/GeoView/LabelPlacer/data.
- Research geo error metrics / caching (Dave P.)
- Research overlays (David T.)
- WorldWind has a "terrain-follow" mode where curves are adaptively sampled to within a screen-space tolerance on a per-frame basis. Other curves are rendered at some fixed altitude which is either cleverly chosen or cleverly allowed to intersect the ground. So far I haven't been able to find any other open source software or papers that describe rendering vector data projected onto a terrain surface deformed by a raster height field.
- Wiki page outlining the integration into ThreatView (including schedule, tasks, responsible parties, etc...)
- Turn off labels on the other side of the globe (Dave P.)
