OSGEarth getGeographicSRS(),getGeodeticSRS(),getGeocentricSRS() 的得到的坐标系的区别

osgEarth supports three basic coordinate system types:
• Geographic - A whole-earth, ellipsoidal model. Coordinates are spherical angles in degrees (longitude and
latitude). Examples include WGS84 and NAD83. (Learn more)
• Projected - A local coordinate system takes a limited region of the earth and “projects” it into a 2D cartesion
(X,Y) plane. Examples include UTM, US State Plane, and Mercator. (Learn more.)
• ECEF - A whole earth, cartesian system. ECEF = Earth Centered Earth Fixed; it is a 3D cartesion system
(X,Y,Z) with the origin (0,0,0) at the earth’s center; the X-axis intersecting lat/long (0,0), the Y-axis intersecting
lat/long (0,-90), and the Z-axis intersecting the north pole. ECEF is the native system in which osgEarth renders
its graphics. (Learn more)
osg一共支持三种坐标系统,经纬度坐标(geographic)投影坐标系(Projected)和空间大地直角坐标系(ECEF)
基准面包括水平基准面和垂直基准面
Horizontal Datum
A datum is a reference point (or set of points) against which geospatial measurements are made. The same location on
earth can have different coordinates depending on which datum is in use. There are two classes of datum:
A horizontal datum measures positions on the earth. Since the earth is not a perfect sphere or even a perfect
ellipsoid, particular datums are usually designed to approximate the shape of the earth in a particular
region. Common datums include WGS84 and NAD83 in North America, and ETR89 in Europe.
所谓水平基准面就是对应的参考椭球的参数(定位和定向)一般会包含参心椭球和质心椭球,54和80的椭球定义就是参心椭球,WGS84和CGCS2000就是质心椭球,这里OSGearth应该默认的WGS84的
质心椭球。同时利用了Proj4 里面有大量的各种椭球参数
介绍:Proj4是一个免费的GIS工具,软件还称不上。它专注于地图投影的表达,以及转换。采用一种非常简单明了的投影表达--PROJ4,比其它的投影定义简单,但很明显。很容易就能看到各种地理坐标系和地图投影的参数,同时它强大的投影转换功能,也是非常吸引人的。许多的 GIS软件中也将其集成在内。Proj可以在 window的命令下有可运行的 EXE文件,其实它更主要的是一个库!可以用来编一些批处理。在 Linux下除了可以直接运行外,还可以作为库来进行更高功能的开发。
Vertical Datum
A vertical datum measures elevation. There are several classes of vertical datum; osgEarth supports geodetic (basedon an ellipsoid) and geoid (based on a sample set of elevation points around the planet).osgEarth has the following vertical datums built in:Geodetic - the default; osgEarth uses the Horizontal datum ellipsoid as a reference
• EGM84 geoid
• EGM96 geoid - commonly called MSL; used in DTED and KML
• EGM2008 geoid
By default, SRS’s in osgEarth use a geodetic vertical datum; i.e., altitude is measured as “height above ellipsoid
(HAE)”.
高程基准主要包含的是所谓的大地高(物体到椭球的法线距离)和正高(垂线到大地水准面的距离)geodetic代表大地高,geoid带表正高
由此在OSGEarth的spatialreference类中有三种方法getGeographicSRS(),getGeodeticSRS(),getGeocentricSRS() 首先从英文字面上区分,Geographic是地理坐标 Geodetic代表的是大地测量坐标  geocentric代表的是地心坐标 再结合源文件中给出的解释         /** Gets a reference to this SRS’s underlying geodetic SRS. This is the same as the
            geographic SRS [see getGeographicSRS()] but with a geodetic vertical datum (in
            which Z is expressed as height above the geodetic ellipsoid). /const SpatialReference getGeodeticSRS() const; 即是说这个getgeodetic()得到的参考系和getgeographic的到的参考系是一样的区别在于getgeodetic()得到的z是大地高,而getgeographic得到的高是规定的大地水准面对应的正高。从源文件spatitalReference.cpp中也可以看出getgeodetic()return _geodetic_srs.get();       getGeographicSRS()  return _geo_srs.get();  在定义中,osg::ref_ptr    _geo_srs;       osg::ref_ptr    _geodetic_srs;  // _geo_srs with a NULL vdatum.说明geodetic没有定义的垂直参考面,会直接使用oe默认的大地高参考系。

你可能感兴趣的:(osgEarth)