Changeset 4957


Ignore:
Timestamp:
Jan 28, 2015 4:39:03 PM (9 years ago)
Author:
ldelgass
Message:

Add protocol option to enable/disable disk caching of image layers

Location:
geovis/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • geovis/trunk/RenderServer.h

    r4636 r4957  
    2121class Stats;
    2222
    23 #define GEOVIS_VERSION_STRING "0.6.0"
     23#define GEOVIS_VERSION_STRING "0.6.1"
    2424
    2525#define MSECS_ELAPSED(t1, t2) \
  • geovis/trunk/Renderer.cpp

    r4956 r4957  
    3434#include <osgEarth/FileUtils>
    3535#include <osgEarth/Cache>
     36#include <osgEarth/CachePolicy>
    3637#include <osgEarthDrivers/cache_filesystem/FileSystemCache>
    3738#include <osgEarth/MapNode>
     
    11221123bool Renderer::addImageLayer(const char *name,
    11231124                             osgEarth::TileSourceOptions& opts,
     1125                             bool enableCache,
    11241126                             bool makeShared,
    11251127                             bool visible)
     
    11391141    if (makeShared) {
    11401142        layerOpts.shared() = true;
     1143    }
     1144    if (!enableCache) {
     1145        TRACE("Disabling cache for layer %s", name);
     1146        layerOpts.cachePolicy() = osgEarth::CachePolicy(osgEarth::CachePolicy::USAGE_NO_CACHE);
    11411147    }
    11421148    if (!visible) {
     
    12411247void Renderer::setImageLayerVisibility(const char *name, bool state)
    12421248{
    1243 #if OSGEARTH_MIN_VERSION_REQUIRED(2, 4, 0)
    12441249    if (!_map.valid()) {
    12451250        ERROR("No map");
     
    12531258        TRACE("Image layer not found: %s", name);
    12541259    }
    1255 #endif
    12561260}
    12571261
    12581262void Renderer::addElevationLayer(const char *name,
    1259                                  osgEarth::TileSourceOptions& opts)
     1263                                 osgEarth::TileSourceOptions& opts,
     1264                                 bool enableCache,
     1265                                 bool visible)
    12601266{
    12611267    if (!_map.valid()) {
     
    12681274    }
    12691275    osgEarth::ElevationLayerOptions layerOpts(name, opts);
     1276    if (!enableCache) {
     1277        layerOpts.cachePolicy() = osgEarth::CachePolicy(osgEarth::CachePolicy::USAGE_NO_CACHE);
     1278    }
     1279    if (!visible) {
     1280        layerOpts.visible() = false;
     1281    }
    12701282    // XXX: GDAL does not report vertical datum, it should be specified here
    12711283    // Common options: geodetic (default), egm96, egm84, egm2008
     
    13071319void Renderer::setElevationLayerVisibility(const char *name, bool state)
    13081320{
    1309 #if OSGEARTH_MIN_VERSION_REQUIRED(2, 4, 0)
    13101321    if (!_map.valid()) {
    13111322        ERROR("No map");
     
    13191330        TRACE("Elevation layer not found: %s", name);
    13201331    }
    1321 #endif
    13221332}
    13231333
     
    17111721void Renderer::setModelLayerVisibility(const char *name, bool state)
    17121722{
    1713 #if OSGEARTH_MIN_VERSION_REQUIRED(2, 4, 0)
    17141723    if (!_map.valid()) {
    17151724        ERROR("No map");
     
    17231732        TRACE("Model layer not found: %s", name);
    17241733    }
    1725 #endif
    17261734}
    17271735
  • geovis/trunk/Renderer.h

    r4956 r4957  
    216216
    217217    bool addImageLayer(const char *name, osgEarth::TileSourceOptions& opts,
    218                        bool makeShared = false, bool visible = true);
     218                       bool enableCache = true, bool makeShared = false,
     219                       bool visible = true);
    219220
    220221    void removeImageLayer(const char *name);
     
    250251    }
    251252
    252     void addElevationLayer(const char *name, osgEarth::TileSourceOptions& opts);
     253    void addElevationLayer(const char *name, osgEarth::TileSourceOptions& opts,
     254                           bool enableCache = true, bool visible = true);
    253255
    254256    void removeElevationLayer(const char *name);
  • geovis/trunk/RendererCmd.cpp

    r4655 r4957  
    956956            }
    957957        }
     958        bool cache = true;
     959        if (objc > 7) {
     960            if (GetBooleanFromObj(interp, objv[6], &cache) != TCL_OK) {
     961                return TCL_ERROR;
     962            }
     963        }
    958964        if (driver[0] == 'd' && strcmp(driver, "debug") == 0) {
    959965            osgEarth::Drivers::DebugOptions opts;
    960966            name = Tcl_GetString(objv[5]);
    961             ret = g_renderer->addImageLayer(name, opts);
     967            ret = g_renderer->addImageLayer(name, opts, cache);
    962968        } else if (driver[0] == 'g' && strcmp(driver, "gdal") == 0) {
    963969            osgEarth::Drivers::GDALOptions opts;
    964970            opts.url() = url;
    965             name = Tcl_GetString(objv[6]);
    966             ret = g_renderer->addImageLayer(name, opts);
     971            name = Tcl_GetString(objv[7]);
     972            ret = g_renderer->addImageLayer(name, opts, cache);
    967973        } else if (driver[0] == 't' && strcmp(driver, "tms") == 0) {
    968974            osgEarth::Drivers::TMSOptions opts;
     
    972978            //opts.tmsType() = tmsType;
    973979            //opts.format() = format;
    974             name = Tcl_GetString(objv[6]);
    975             ret = g_renderer->addImageLayer(name, opts);
     980            name = Tcl_GetString(objv[7]);
     981            ret = g_renderer->addImageLayer(name, opts, cache);
    976982        } else if (driver[0] == 'w' && strcmp(driver, "wms") == 0) {
    977983            osgEarth::Drivers::WMSOptions opts;
    978             char *wmsLayers = Tcl_GetString(objv[6]);
    979             char *format = Tcl_GetString(objv[7]);
     984            char *wmsLayers = Tcl_GetString(objv[7]);
     985            char *format = Tcl_GetString(objv[8]);
    980986            bool transparent;
    981             if (GetBooleanFromObj(interp, objv[8], &transparent) != TCL_OK) {
     987            if (GetBooleanFromObj(interp, objv[9], &transparent) != TCL_OK) {
    982988                return TCL_ERROR;
    983989            }
     
    987993            opts.transparent() = transparent;
    988994
    989             name = Tcl_GetString(objv[9]);
    990             ret = g_renderer->addImageLayer(name, opts);
     995            name = Tcl_GetString(objv[10]);
     996            ret = g_renderer->addImageLayer(name, opts, cache);
    991997        } else if (driver[0] == 'x' && strcmp(driver, "xyz") == 0) {
    992998            osgEarth::Drivers::XYZOptions opts;
     
    9961002            //opts.invertY() = invertY;
    9971003            //opts.format() = Tcl_GetString(objv[6]);
    998             name = Tcl_GetString(objv[6]);
    999             ret = g_renderer->addImageLayer(name, opts);
     1004            name = Tcl_GetString(objv[7]);
     1005            ret = g_renderer->addImageLayer(name, opts, cache);
    10001006        } else {
    10011007            Tcl_AppendResult(interp, "unknown image driver \"", driver,
  • geovis/trunk/geovis_protocol.txt

    r4636 r4957  
    133133
    134134Specific image layer types:
    135 map layer add image gdal <url> <layerName>
     135map layer add image gdal <url> <cache> <layerName>
    136136    Add a GDAL image layer from a file or URL
    137 map layer add image wms <url> <layers> <format> <transparent> <layerName>
     137map layer add image wms <url> <cache> <layers> <format> <transparent> <layerName>
    138138    Add a WMS image layer from a URL + layer string
    139139    <url> = URL of WMS service
     140    <cache> = bool indicating if tiles should be cached on disk
    140141    <layers> = layers string for WMS server
    141142    <format> = Image format to return (e.g. 'png')
    142143    <transparent> = bool
    143 map layer add image tms <url> <layerName>
     144map layer add image tms <url> <cache> <layerName>
    144145    Add a TMS image layer from a URL
    145146    <url> = URL of TMS service
    146 map layer add image xyz <urlPattern> <layerName>
     147    <cache> = bool indicating if tiles should be cached on disk
     148map layer add image xyz <urlPattern> <cache> <layerName>
    147149    Add an image layer from a web map using a template URL
     150    <cache> = bool indicating if tiles should be cached on disk
    148151
    149152Elevation layers:
Note: See TracChangeset for help on using the changeset viewer.