Changeset 6511 for geovis


Ignore:
Timestamp:
Aug 30, 2016 10:04:22 PM (8 years ago)
Author:
ldelgass
Message:

Add method to compute extent of terrain mask layer.

Location:
geovis/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • geovis/trunk/Renderer.cpp

    r6509 r6511  
    25552555            }
    25562556            TRACE("Image layer %s srs: %s extent: %g %g %g %g",
    2557                  name, ext.getSRS() ? ext.getSRS()->getName().c_str() : "nil",
    2558                  ext.xMin(), ext.yMin(), ext.xMax(), ext.yMax());
     2557                  name, ext.getSRS() ? ext.getSRS()->getName().c_str() : "nil",
     2558                  ext.xMin(), ext.yMin(), ext.xMax(), ext.yMax());
    25592559            return true;
    25602560        }
     
    25802580            }
    25812581            TRACE("Elevation Layer %s srs: %s extent: %g %g %g %g",
    2582                  name, ext.getSRS() ? ext.getSRS()->getName().c_str() : "nil",
    2583                  ext.xMin(), ext.yMin(), ext.xMax(), ext.yMax());
     2582                  name, ext.getSRS() ? ext.getSRS()->getName().c_str() : "nil",
     2583                  ext.xMin(), ext.yMin(), ext.xMax(), ext.yMax());
    25842584            return true;
    25852585        }
    25862586    } else {
    25872587        TRACE("Elevation layer not found: %s", name);
     2588    }
     2589    return false;
     2590}
     2591
     2592bool Renderer::getTerrainMaskLayerExtent(const char *name, osgEarth::GeoExtent &ext)
     2593{
     2594    if (!_map.valid()) {
     2595        ERROR("No map");
     2596        return false;
     2597    }
     2598    osgEarth::MaskLayer *layer = getTerrainMaskLayerByName(name);
     2599    if (layer != NULL) {
     2600        const osgEarth::SpatialReference *srs = getMapSRS();
     2601        osgEarth::GeoExtent newExt(srs);
     2602        osg::Vec3dArray *polypts = layer->getOrCreateMaskBoundary(1.0f, srs, NULL);
     2603        if (polypts) {
     2604            for (size_t i = 0; i < polypts->size(); i++) {
     2605                osg::Vec3d pt = (*polypts)[i];
     2606                newExt.expandToInclude(pt);
     2607            }
     2608        }
     2609        if (!newExt.isValid()) {
     2610            ERROR("Couldn't find extent of layer %s", name);
     2611            return false;
     2612        }
     2613        ext = newExt;
     2614        TRACE("Mask Layer %s srs: %s extent: %g %g %g %g",
     2615              name, ext.getSRS() ? ext.getSRS()->getName().c_str() : "nil",
     2616              ext.xMin(), ext.yMin(), ext.xMax(), ext.yMax());
     2617        return true;
     2618    } else {
     2619        TRACE("Terrain mask layer not found: %s", name);
    25882620    }
    25892621    return false;
     
    26122644            }
    26132645            TRACE("Model Layer %s srs: %s extent: %g %g %g %g",
    2614                  name, ext.getSRS() ? ext.getSRS()->getName().c_str() : "nil",
    2615                  ext.xMin(), ext.yMin(), ext.xMax(), ext.yMax());
     2646                  name, ext.getSRS() ? ext.getSRS()->getName().c_str() : "nil",
     2647                  ext.xMin(), ext.yMin(), ext.xMax(), ext.yMax());
    26162648            return true;
    26172649        }
  • geovis/trunk/Renderer.h

    r6509 r6511  
    251251    }
    252252
    253     void getImageLayerNames(std::vector<std::string>& names)
     253    void getImageLayerNames(std::vector<std::string>& names) const
    254254    {
    255255        if (_map.valid()) {
     
    299299    }
    300300
    301     void getElevationLayerNames(std::vector<std::string>& names)
     301    void getElevationLayerNames(std::vector<std::string>& names) const
    302302    {
    303303        if (_map.valid()) {
     
    377377    void removeTerrainMaskLayer(const char *name);
    378378
     379    bool getTerrainMaskLayerExtent(const char *name, osgEarth::GeoExtent &ext);
     380
    379381    // Model layers
    380382
     
    384386    }
    385387
    386     void getModelLayerNames(std::vector<std::string>& names)
     388    void getModelLayerNames(std::vector<std::string>& names) const
    387389    {
    388390        if (_map.valid()) {
  • geovis/trunk/RendererCmd.cpp

    r6510 r6511  
    606606        return TCL_OK;
    607607    } else if (g_renderer->getElevationLayerExtent(name, ext)) {
     608        g_renderer->setViewpointFromExtent(ext, duration);
     609        return TCL_OK;
     610    } else if (g_renderer->getTerrainMaskLayerExtent(name, ext)) {
    608611        g_renderer->setViewpointFromExtent(ext, duration);
    609612        return TCL_OK;
Note: See TracChangeset for help on using the changeset viewer.