Data Conversions

To Do

  • Field to image/elevation layer: output GeoTIFF
  • Colormapping for image layers: convert single channel to RGB8
    • Example of rescaling 16-bit to 8-bit:
      gdal_translate -scale 0 65535 0 255 -ot Byte /tmp/trgb16.tif /tmp/trgb8.tif 
  • Field to model layer: output shape files from cloud or mesh/field?


To Do

Required for Demo / Use Cases

  • Allow setting layer order (move layers)
  • Allow setting layer translucency
  • Support WMS, TMS and XYZ image layers in Rappture map object and client viewer
  • Define high-level "base" layer types: e.g. Satellite imagery from OSM, Street map from OSM
  • Example using geoTIFF
  • Example using netcdf: should be covered by GDAL driver if they use the right geolocation data format
  • Example using shape files (started this: need to check in test -lld)
    • Need to define Rappture object representation for styles

Not required

  • handle grouping of layers
  • Example sending data to server.
  • On map controls for pan and zoom. Do we really need these? We have zoom in/out buttons already. Google maps no longer has a pan control and zoom controls are only +/-. Since we are going to be space constrained, this seems like a low priority.
  • Add user settings for units of position display readout. We need protocol to specify desired units.
  • Check for bad file paths (assume server sees the same). Since the server processes asynchronously and may not know a file is corrupt/unreadable or network resource is unavailable until the loader thread tries, there may still be unreported errors.
  • Add way for users to save viewpoints into a list of named viewpoints and recall them later. Also should allow tool developer to pre-populate this list.


  • Should it be mandatory that maps in different runs have the same "type" (geocentric or projected), "extents", and "projection"? Is there a good reason for allowing this? Would this mean separate server connections?
    • The renderer cannot mix geocentric and projected, so that means multiple server connections if you want to switch back and forth without starting over
    • Otherwise, layers can be reprojected onto the same map (geocentric or projected), but the map view is always using a single projection and extents (extents here means the edge of displayable data, not the zoomed extents). In geocentric view, the extents typically cover the globe (not sure if osgearth can render a spherical section).
  • What's our current set of layer types?
    • image
    • elevation
    • feature: generic styled feature layer
    • polygon: fixed style feature layer
    • point: fixed style feature layer
    • icon: fixed style feature layer (should have some standard icon images like pins and circles)
    • line: fixed style feature layer
    • label: fixed style feature layer

Map hints

typeThe type of map. Can be either "geocentric" or "projected"."projected"yes
projectionA string representing the projection of the map. May be WKT, EPSG Codes, PROJ4, or aliases like "spherical-mercator"."global-mercator"not yet
extentsA list of 4 numbers (xmin, ymin, xmax, and ymax) representing the extents of the map in map coordinates.""not yet
labelLabel of the map"Map"no
descriptionDescription of the map.""no
attributionAttribution for map data.""no
styleStyle array""not yet
cameraInitial camera settings""not yet
toolNameShort name of the tool""no
toolIdId of the tool""no
toolCommandCommand used to invoke the tool.""no
toolTitleTitle of the tool.""no
toolRevisionRevision of the tool.""no

Layer Properties

nameID of layer (must be supplied by user)N/Ayes
typeThe type of layer.Will always be one the types.yes
profileOptional projection of the layer. For use when there is no embedded projection or .prj file.""not yet
srsOptional projection of the layer. Use this OR profile. For use when there is no embedded projection or .prj file.""not yet
verticalDatumOptional projection of the layer. Use this OR profile. For use when there is no embedded projection or .prj file.""not yet
labelTitle of the layer.""no
descriptionDescription of the layer.""no
attributionAttribution string for layer data""no
visibleIs layer visible by default?1not yet
cacheCan layer be cached to disk?1not yet
sharedIs layer a base/overlay layer?0not yet
coverageIf set, don't interpolate values0not yet
opacityOpacity of layer. Not valid for elevation layers.1.0not yet
placardOptional array of placard settings. Only valid for feature layers.""not yet
driverLayer driver"debug"yes

Selector Properties

idID of selector (supplied by user)N/Ayes
nameSelector name""no
styleName of style. Use this OR styleExpression""no
styleExpressionJavaScript returning a style name or CSS style string. Use this OR style.""no
querySQL where clause. May be empty to select all records.""no
queryBoundsRestrict query to these bounds. List (space separated) of xmin ymin xmax ymax in SRS of feature source.""no
queryOrderBySQL order by clause""no

Viewpoint Properties

labelLabel to display on button/linkN/Ayes
descriptionLonger description of viewpoint""no
x,yHorizontal, vertical coordinates""no
latitude,longitudeOptional alternative to x,y: implies srs="wgs84"""no
z OR altitudeOptional altitude coordinate""no
distanceCamera distance to GeoPoint?""no
headingOptional camera azimuth/heading angle in degrees""no
pitchOption camera pitch angle in degrees""no
srsProjection string""no
verticalDatumVertical reference""no



To Do

  • Fix osgearth build: need to enable V8 for javascript support: requires a newer version than the one in Debian. Need to enable GEOS support.
  • Copy default map from /usr/share/osgearth into /opt/hubzero/rappture/render. Point Renderer.cpp to the location. Don't load default world.tif map.
  • (bug) Detect errors in loading layers or earth file, especially when file does not exist.
  • (protocol) Missing command to load initial layers.
  • (protocol) Missing command to save view.
  • (protocol) Missing command to restore view. Need to restore view after reset too.
  • (protocol) Missing command to pan. Pan amount is in relative normalized screen coords. e.g. 'camera pan 0 0' does not change the view. 'camera pan .5 0' moves the image right (camera left) by 1 half the screen width, and 'camera pan -.5 0' moves the image left (camera right) half a screen width. Positive Y moves the image up (camera down) and vice versa. What's the screen size? A: Whatever was set with the 'screen size' command, i.e. the image size.
  • (feature) Don't allow map to zoom beyond map extents.
  • (feature) Map should always fill the image. Think "zoom" mode on flat screen TVs. It is not possible to fill the screen and allow seeing all parts of the map if the map aspect doesn't match the screen aspect. Google maps handles this by repeating the map.
  • (protocol) Missing command: given x,y screen coordinate, return lat, long. Notes: returns coordinates in map srs units. Need way to specify conversions such as returning lat/long for mercator map, e.g. Also, the result depends on the camera position/orientation, which can be out of date when result is received if camera is animating, such as when moving to a new viewpoint. The result will be marked invalid if the screen coordinates do not lie on the map.
Last modified 5 years ago Last modified on May 17, 2016 12:12:24 PM