|
osgEarth 2.1.1
|
Public Member Functions | |
| TilePattern (const std::string &pattern) | |
| const std::string & | getPattern () const |
| const double & | getTileWidth () const |
| const double & | getTileHeight () const |
| void | getTileBounds (const int &x, const int &y, double &minX, double &minY, double &maxX, double &maxY) |
| std::string | getRequestString (const int &x, const int &y) |
| const std::string & | getLayers () |
| const std::string & | getFormat () |
| const std::string & | getStyles () |
| const std::string & | getSRS () |
| const osg::Vec2d & | getTopLeftMin () |
| const osg::Vec2d & | getTopLeftMax () |
| const int & | getImageWidth () |
| const int & | getImageHeight () |
| const std::string & | getPrototype () |
| const osg::Vec2d & | getDataMin () |
| void | setDataMin (const osg::Vec2d &min) |
| const osg::Vec2d & | getDataMax () |
| void | setDataMax (const osg::Vec2d &max) |
Private Member Functions | |
| void | init () |
Private Attributes | |
| std::string | _layers |
| std::string | _format |
| std::string | _styles |
| std::string | _srs |
| int | _imageWidth |
| int | _imageHeight |
| osg::Vec2d | _topLeftMin |
| osg::Vec2d | _topLeftMax |
| double | _tileWidth |
| double | _tileHeight |
| std::string | _prototype |
| std::string | _pattern |
| osg::Vec2d | _dataMin |
| osg::Vec2d | _dataMax |
Friends | |
| class | TileServiceReader |
Classes for utilizing the JPL OnEarth tiled access patterns described at http://onearth.jpl.nasa.gov/tiled.html
Another good discussion on how the format works is described here: http://lists.eogeo.org/pipermail/tiling/2006-March/000017.html
The TileService specifies a series of predefined WMS access patterns that will result in very fast access. The tiling is quadtree based with the lowest level of detail generally consisting of 4 256x256 degree tiles with the upper left corner at -180,90. TilePattern corresponds to the
Definition at line 41 of file TileService.
| TilePattern::TilePattern | ( | const std::string & | pattern | ) |
Definition at line 49 of file TileService.cpp.
| const osg::Vec2d& TilePattern::getDataMax | ( | ) | [inline] |
Definition at line 71 of file TileService.
{return _dataMax;}
| const osg::Vec2d& TilePattern::getDataMin | ( | ) | [inline] |
Definition at line 68 of file TileService.
{return _dataMin;}
| const std::string& TilePattern::getFormat | ( | ) | [inline] |
Definition at line 55 of file TileService.
{return _format;}
| const int& TilePattern::getImageHeight | ( | ) | [inline] |
Definition at line 64 of file TileService.
{return _imageHeight;}
| const int& TilePattern::getImageWidth | ( | ) | [inline] |
Definition at line 63 of file TileService.
{return _imageWidth;}
| const std::string& TilePattern::getLayers | ( | ) | [inline] |
Definition at line 54 of file TileService.
{return _layers;}
| const std::string& TilePattern::getPattern | ( | ) | const [inline] |
Definition at line 46 of file TileService.
{return _pattern;}
| const std::string& TilePattern::getPrototype | ( | ) | [inline] |
Definition at line 66 of file TileService.
{return _prototype;}
| std::string TilePattern::getRequestString | ( | const int & | x, |
| const int & | y | ||
| ) |
Definition at line 108 of file TileService.cpp.
{
double minX, minY, maxX, maxY;
getTileBounds(x, y, minX, minY, maxX, maxY);
char buf[2048];
sprintf(buf, _prototype.c_str(), minX, minY, maxX, maxY);
return buf;
}
| const std::string& TilePattern::getSRS | ( | ) | [inline] |
Definition at line 57 of file TileService.
{return _srs;}
| const std::string& TilePattern::getStyles | ( | ) | [inline] |
Definition at line 56 of file TileService.
{return _styles;}
| void TilePattern::getTileBounds | ( | const int & | x, |
| const int & | y, | ||
| double & | minX, | ||
| double & | minY, | ||
| double & | maxX, | ||
| double & | maxY | ||
| ) |
Definition at line 99 of file TileService.cpp.
{
minX = _topLeftMin.x() + (double)x * _tileWidth;
maxX = minX + _tileWidth;
maxY = _topLeftMax.y() - (double)y * _tileHeight;
minY = maxY - _tileHeight;
}
| const double& TilePattern::getTileHeight | ( | ) | const [inline] |
Definition at line 49 of file TileService.
{ return _tileHeight; }
| const double& TilePattern::getTileWidth | ( | ) | const [inline] |
Definition at line 48 of file TileService.
{ return _tileWidth; }
| const osg::Vec2d& TilePattern::getTopLeftMax | ( | ) | [inline] |
Definition at line 60 of file TileService.
{return _topLeftMax;}
| const osg::Vec2d& TilePattern::getTopLeftMin | ( | ) | [inline] |
Definition at line 59 of file TileService.
{return _topLeftMin;}
| void TilePattern::init | ( | ) | [private] |
Definition at line 57 of file TileService.cpp.
{
_dataMin.x() = -180;
_dataMin.y() = -90;
_dataMax.x() = 180;
_dataMax.y() = 90;
//request=GetMap&layers=global_mosaic&srs=EPSG:4326&format=image/jpeg&styles=visual&width=512&height=512&bbox=-180,-166,76,90
//Convert the filename to lower case
std::string lower = osgDB::convertToLowerCase( _pattern );
_layers = extractBetween(lower, "layers=", "&");
_styles = extractBetween(lower, "styles=", "&");
_srs = extractBetween(lower, "srs=", "&");
_format = extractBetween(lower, "format=image/", "&");
_imageWidth = as<int>(extractBetween(lower, "width=", "&"), 0);
_imageHeight = as<int>(extractBetween(lower, "height=", "&"), 0);
//Read the coordinates of the top left tile
std::string bbox = extractBetween(lower, "bbox=", "&");
sscanf(bbox.c_str(), "%lf,%lf,%lf,%lf", &_topLeftMin.x(), &_topLeftMin.y(), &_topLeftMax.x(), &_topLeftMax.y());
//Compute the tile dimensions
_tileWidth = _topLeftMax.x() - _topLeftMin.x();
_tileHeight = _topLeftMax.y() - _topLeftMin.y();
//Create the prototype
string::size_type len = lower.find( bbox );
if (len != string::npos)
{
string beforeBB = _pattern.substr(0, len);
string::size_type after = len + bbox.length();
string afterBB = "";
if (after < _pattern.length()-1)
{
afterBB = _pattern.substr(after, _pattern.length() - after);
}
_prototype = beforeBB + std::string("%lf,%lf,%lf,%lf") + afterBB;
}
}
Here is the call graph for this function:| void TilePattern::setDataMax | ( | const osg::Vec2d & | max | ) | [inline] |
Definition at line 72 of file TileService.
{_dataMax = max;}
| void TilePattern::setDataMin | ( | const osg::Vec2d & | min | ) | [inline] |
Definition at line 69 of file TileService.
{_dataMin = min;}
friend class TileServiceReader [friend] |
Definition at line 75 of file TileService.
osg::Vec2d TilePattern::_dataMax [private] |
Definition at line 96 of file TileService.
osg::Vec2d TilePattern::_dataMin [private] |
Definition at line 95 of file TileService.
std::string TilePattern::_format [private] |
Definition at line 80 of file TileService.
int TilePattern::_imageHeight [private] |
Definition at line 84 of file TileService.
int TilePattern::_imageWidth [private] |
Definition at line 83 of file TileService.
std::string TilePattern::_layers [private] |
Definition at line 79 of file TileService.
std::string TilePattern::_pattern [private] |
Definition at line 93 of file TileService.
std::string TilePattern::_prototype [private] |
Definition at line 92 of file TileService.
std::string TilePattern::_srs [private] |
Definition at line 82 of file TileService.
std::string TilePattern::_styles [private] |
Definition at line 81 of file TileService.
double TilePattern::_tileHeight [private] |
Definition at line 90 of file TileService.
double TilePattern::_tileWidth [private] |
Definition at line 89 of file TileService.
osg::Vec2d TilePattern::_topLeftMax [private] |
Definition at line 87 of file TileService.
osg::Vec2d TilePattern::_topLeftMin [private] |
Definition at line 86 of file TileService.
1.7.3