osgEarth的Rex引擎原理分析(四十三)osgEarth的Geographic、Geodetic、Geocentric和Project的关系

目标:(三十六)中的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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值