osgEarth 2.1.1
|
Static Public Member Functions | |
static TileService * | read (const std::string &location, const osgDB::ReaderWriter::Options *options) |
static TileService * | read (std::istream &in) |
Private Member Functions | |
TileServiceReader () | |
TileServiceReader (const TileServiceReader &tsr) |
Definition at line 225 of file TileService.
TileServiceReader::TileServiceReader | ( | ) | [inline, private] |
Definition at line 231 of file TileService.
{}
TileServiceReader::TileServiceReader | ( | const TileServiceReader & | tsr | ) | [inline, private] |
Definition at line 232 of file TileService.
{}
TileService * TileServiceReader::read | ( | const std::string & | location, |
const osgDB::ReaderWriter::Options * | options | ||
) | [static] |
Definition at line 211 of file TileService.cpp.
{ TileService *tileService = NULL; if ( osgDB::containsServerAddress( location ) ) { HTTPResponse response = HTTPClient::get( location, options); if (response.isOK() && response.getNumParts() > 0 ) { tileService = read( response.getPartStream( 0 ) ); } } else { if ((osgDB::fileExists(location)) && (osgDB::fileType(location) == osgDB::REGULAR_FILE)) { std::ifstream in( location.c_str() ); tileService = read( in ); } } return tileService; }
TileService * TileServiceReader::read | ( | std::istream & | in | ) | [static] |
Definition at line 272 of file TileService.cpp.
{ osg::ref_ptr<TileService> tileService = new TileService; osg::ref_ptr<XmlDocument> doc = XmlDocument::load( in ); if (!doc.valid()) { OE_INFO << "Failed to load TileService " << std::endl; return 0; } //Get the root TileMap element osg::ref_ptr<XmlElement> e_root = doc->getSubElement( ELEM_WMS_TILE_SERVICE ); if (!e_root.valid()) { OE_INFO << "Could not find root TileService element " << std::endl; return 0; } tileService->setVersion( e_root->getAttr( ATTR_VERSION ) ); //Get properties from the Service element. osg::ref_ptr<XmlElement> e_service = e_root->getSubElement( ELEM_SERVICE ); if (!e_service.valid()) { OE_INFO << "Could not find Service element " << std::endl; return 0; } tileService->setName( e_service->getSubElementText( ELEM_NAME ) ); tileService->setTitle( e_service->getSubElementText( ELEM_TITLE ) ); tileService->setAbstract( e_service->getSubElementText( ELEM_ABSTRACT ) ); tileService->setAccessConstraints( e_service->getSubElementText( ELEM_ACCESSCONSTRAINTS ) ); //Get the TiledPattern element which contains the TiledGroups osg::ref_ptr<XmlElement> e_tiledPatterns = e_root->getSubElement( ELEM_TILEDPATTERNS ); if (!e_tiledPatterns.valid()) { OE_INFO << "Could not find TiledPatterns element" << std::endl; return 0; } //Get the bounding box from the TiledPatterns osg::ref_ptr<XmlElement> e_bb = e_tiledPatterns->getSubElement( ELEM_LATLONBOUNDINGBOX ); if (e_bb.valid()) { double minX, minY, maxX, maxY; readBoundingBox(e_bb.get(), minX, minY, maxX, maxY); tileService->setDataMin(osg::Vec2d(minX, minY)); tileService->setDataMax(osg::Vec2d(maxX, maxY)); } addTilePatterns(e_tiledPatterns.get(), tileService.get()); OE_INFO << "Returning TileService with " << tileService->getPatterns().size() << " patterns " << std::endl; return tileService.release(); }