TerrainLayer::CacheBinMetadata::CacheBinMetadata(const Config& conf) { _valid = !conf.empty(); conf.getIfSet("cachebin_id", _cacheBinId); conf.getIfSet("source_name", _sourceName); conf.getIfSet("source_driver", _sourceDriver); conf.getIfSet("source_tile_size", _sourceTileSize); conf.getObjIfSet("source_profile", _sourceProfile); conf.getObjIfSet("cache_profile", _cacheProfile); conf.getIfSet("cache_create_time", _cacheCreateTime); const Config* extentsRoot = conf.child_ptr("extents"); if ( extentsRoot ) { const ConfigSet& extents = extentsRoot->children(); for (ConfigSet::const_iterator i = extents.begin(); i != extents.end(); ++i) { std::string srsString; double xmin, ymin, xmax, ymax; optional<unsigned> minLevel, maxLevel; srsString = i->value("srs"); xmin = i->value("xmin", 0.0f); ymin = i->value("ymin", 0.0f); xmax = i->value("xmax", 0.0f); ymax = i->value("ymax", 0.0f); i->getIfSet("minlevel", minLevel); i->getIfSet("maxlevel", maxLevel); const SpatialReference* srs = SpatialReference::get(srsString); DataExtent e( GeoExtent(srs, xmin, ymin, xmax, ymax) ); if (minLevel.isSet()) e.minLevel() = minLevel.get(); if (maxLevel.isSet()) e.maxLevel() = maxLevel.get(); _dataExtents.push_back(e); } } // check for validity. This will reject older caches that don't have // sufficient attribution. if (_valid) { if (!conf.hasValue("source_tile_size") || !conf.hasChild("source_profile") || !conf.hasChild("cache_profile")) { _valid = false; } } }
void SplatCoverageLegend::fromConfig(const Config& conf) { conf.getIfSet("name", _name); conf.getIfSet("source", _source); ConfigSet predicatesConf = conf.child("mappings").children(); for(ConfigSet::const_iterator i = predicatesConf.begin(); i != predicatesConf.end(); ++i) { osg::ref_ptr<CoverageValuePredicate> p = new CoverageValuePredicate(); i->getIfSet( "name", p->_description ); i->getIfSet( "value", p->_exactValue ); i->getIfSet( "class", p->_mappedClassName ); if ( p->_mappedClassName.isSet() ) { _predicates.push_back( p.get() ); } } }