目标:(三十六)中的103
Geographic采用经纬高,高度是平均海平面高(需要有垂直水准面辅助)
Geodetic采用经纬高,高度是相对椭球体的法线高
ECEF(也即Geocentric)采用地心直角坐标系XYZ
Project采用投影坐标系
osgEarth/SpatialReference
class OSGEARTH_EXPORT SpatialReference : public osg::Referenced
{
/** True if this is a geographic SRS (lat/long/msl) */
virtual bool isGeographic() const;
/** True if this is a geodetic SRS (lat/long/hae) */
virtual bool isGeodetic() const;
/** True if this is a projected SRS (i.e. local coordinate system) */
virtual bool isProjected() const;
/** True if this is an ECEF system (geocentric/meters) */
virtual bool isECEF() const;
}
osgEarth/SpatialReference.cpp
bool
SpatialReference::isGeographic() const
{
if ( !_initialized )
const_cast<SpatialReference*>(this)->init();
return _is_geographic;
}
bool
SpatialReference::isGeodetic() const
{
if ( !_initialized )
const_cast<SpatialReference*>(this)->init();
return _is_geographic && !_vdatum.valid();
}
bool
SpatialReference::isProjected() const
{
if ( !_initialized )
const_cast<SpatialReference*>(this)->init();
return !_is_geographic && !_is_ecef;
}
bool
SpatialReference::isECEF() const
{
if ( !_initialized )
const_cast<SpatialReference*>(this)->init();
return _is_ecef;
}
什么是垂直水准面,有什么意义?
垂直水准面一般是用来定义当地的水平面的,是相对地球椭球体的一个偏移量。在进行高程转化时有用(hae<--->msl)。目前osgEarth支持的垂直水准面有:vdatum_egm84、vdatum_egm96、vdatum_egm2008,他们通过Drivers的形式创建。
osgEarth/VerticalDatum
class OSGEARTH_EXPORT VerticalDatum : public osg::Object
{
osg::ref_ptr<Geoid> _geoid;
}