本文整理汇总了C++中URI::base方法的典型用法代码示例。如果您正苦于以下问题:C++ URI::base方法的具体用法?C++ URI::base怎么用?C++ URI::base使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类URI
的用法示例。
在下文中一共展示了URI::base方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initialize
Status initialize(const osgDB::Options* dbOptions)
{
_dbOptions = Registry::instance()->cloneOrCreateOptions(dbOptions);
URI xyzURI = _options.url().value();
if ( xyzURI.empty() )
{
return Status::Error( "Fail: driver requires a valid \"url\" property" );
}
// driver requires a profile.
if ( !getProfile() )
{
return Status::Error( "An explicit profile definition is required by the XYZ driver." );
}
_template = xyzURI.full();
_rotateStart = _template.find("[");
_rotateEnd = _template.find("]");
if ( _rotateStart != std::string::npos && _rotateEnd != std::string::npos && _rotateEnd-_rotateStart > 1 )
{
_rotateString = _template.substr(_rotateStart, _rotateEnd-_rotateStart+1);
_rotateChoices = _template.substr(_rotateStart+1, _rotateEnd-_rotateStart-1);
}
_format = _options.format().isSet()
? *_options.format()
: osgDB::getLowerCaseFileExtension( xyzURI.base() );
return STATUS_OK;
}
示例2: if
bool
SubstituteModelFilter::findResource(const URI& uri,
const InstanceSymbol* symbol,
FilterContext& context,
std::set<URI>& missing,
osg::ref_ptr<InstanceResource>& output )
{
// be careful about refptrs here since _instanceCache is an LRU.
InstanceCache::Record rec;
if ( _instanceCache.get(uri, rec) )
{
// found it in the cache:
output = rec.value().get();
}
else if ( _resourceLib.valid() )
{
// look it up in the resource library:
output = _resourceLib->getInstance( uri.base(), context.getDBOptions() );
}
else
{
// create it on the fly:
output = symbol->createResource();
output->uri() = uri;
_instanceCache.insert( uri, output.get() );
}
// failed to find the instance.
if ( !output.valid() )
{
if ( missing.find(uri) == missing.end() )
{
missing.insert(uri);
OE_WARN << LC << "Failed to locate resource: " << uri.full() << std::endl;
}
}
return output.valid();
}
示例3: initialize
// one-time initialization (per source)
Status initialize(const osgDB::Options* dbOptions)
{
_dbOptions = Registry::instance()->cloneOrCreateOptions(dbOptions);
const Profile* profile = getProfile();
URI tmsURI = _options.url().value();
if ( tmsURI.empty() )
{
return Status::Error( "Fail: TMS driver requires a valid \"url\" property" );
}
// Take the override profile if one is given
if ( profile )
{
OE_INFO << LC
<< "Using override profile \"" << getProfile()->toString()
<< "\" for URI \"" << tmsURI.base() << "\""
<< std::endl;
_tileMap = TMS::TileMap::create(
_options.url()->full(),
profile,
_options.format().value(),
_options.tileSize().value(),
_options.tileSize().value() );
}
else
{
// Attempt to read the tile map parameters from a TMS TileMap XML tile on the server:
_tileMap = TMS::TileMapReaderWriter::read( tmsURI.full(), _dbOptions.get() );
if (!_tileMap.valid())
{
return Status::Error( Stringify() << "Failed to read tilemap from " << tmsURI.full() );
}
OE_INFO << LC
<< "TMS tile map datestamp = "
<< DateTime(_tileMap->getTimeStamp()).asRFC1123()
<< std::endl;
profile = _tileMap->createProfile();
if ( profile )
setProfile( profile );
}
// Make sure we've established a profile by this point:
if ( !profile )
{
return Status::Error( Stringify() << "Failed to establish a profile for " << tmsURI.full() );
}
// TileMap and profile are valid at this point. Build the tile sets.
// Automatically set the min and max level of the TileMap
if ( _tileMap->getTileSets().size() > 0 )
{
OE_DEBUG << LC << "TileMap min/max " << _tileMap->getMinLevel() << ", " << _tileMap->getMaxLevel() << std::endl;
if (_tileMap->getDataExtents().size() > 0)
{
for (DataExtentList::iterator itr = _tileMap->getDataExtents().begin(); itr != _tileMap->getDataExtents().end(); ++itr)
{
this->getDataExtents().push_back(*itr);
}
}
else
{
//Push back a single area that encompasses the whole profile going up to the max level
this->getDataExtents().push_back(DataExtent(profile->getExtent(), 0, _tileMap->getMaxLevel()));
}
}
// set up the IO options so that we do not cache TMS tiles:
CachePolicy::NO_CACHE.apply( _dbOptions.get() );
return STATUS_OK;
}
示例4: Error
Status
TMSTileSource::initialize(const osgDB::Options* dbOptions)
{
// local copy of options we can modify if necessary.
_dbOptions = Registry::instance()->cloneOrCreateOptions(dbOptions);
// see if the use passed in a profile
const Profile* profile = getProfile();
// URI is mandatory.
URI tmsURI = _options.url().value();
if ( tmsURI.empty() )
{
return Status::Error( Status::ConfigurationError, "Fail: TMS driver requires a valid \"url\" property" );
}
// A repo is writable only if it's local.
if ( tmsURI.isRemote() )
{
OE_DEBUG << LC << "Repo is remote; opening in read-only mode" << std::endl;
}
// Is this a new repo? (You can only create a new repo at a local non-archive URI.)
bool isNewRepo = false;
if (!tmsURI.isRemote() &&
!osgEarth::isPathToArchivedFile(tmsURI.full()) &&
!osgDB::fileExists(tmsURI.full()) )
{
isNewRepo = true;
// new repo REQUIRES a profile:
if ( !profile )
{
return Status::Error(Status::ConfigurationError, "Fail: profile required to create new TMS repo");
}
}
// Take the override profile if one is given
if ( profile )
{
OE_INFO << LC
<< "Using express profile \"" << getProfile()->toString()
<< "\" for URI \"" << tmsURI.base() << "\""
<< std::endl;
DataExtentList extents;
_tileMap = TMS::TileMap::create(
_options.url()->full(),
profile,
extents,
_options.format().value(),
256,
256);
//getPixelsPerTile(),
//getPixelsPerTile() );
// If this is a new repo, write the tilemap file to disk now.
if ( isNewRepo )
{
if ( !_options.format().isSet() )
{
return Status::Error(Status::ConfigurationError, "Missing required \"format\" property: e.g. png, jpg");
}
TMS::TileMapReaderWriter::write( _tileMap.get(), tmsURI.full() );
OE_INFO << LC << "Created new TMS repo at " << tmsURI.full() << std::endl;
}
}
else
{
// Attempt to read the tile map parameters from a TMS TileMap XML tile on the server:
_tileMap = TMS::TileMapReaderWriter::read( tmsURI.full(), _dbOptions.get() );
if (!_tileMap.valid())
{
return Status::Error( Status::ResourceUnavailable, Stringify() << "Failed to read configuration from " << tmsURI.full() );
}
OE_INFO << LC
<< "TMS tile map datestamp = "
<< DateTime(_tileMap->getTimeStamp()).asRFC1123()
<< std::endl;
profile = _tileMap->createProfile();
if ( profile )
setProfile( profile );
}
// Make sure we've established a profile by this point:
if ( !profile )
{
return Status::Error( Stringify() << "Failed to establish a profile for " << tmsURI.full() );
}
// resolve the writer
if ( !tmsURI.isRemote() && !resolveWriter() )
{
//.........这里部分代码省略.........