倾斜摄影顶点XYZ转世界坐标系再转BLH
- 读取元数据metadata.xml,获取中心点坐标(centerx, centery);(我是将坐标系转换为了wgs84)
- 将经纬度转换为弧度;
double radx = osg::DegressToRadians(centerx); double rady =
osg::DegressToRadians(centery);
- 获取该模型向世界坐标系转换的trans矩阵(locaToWorld)
osg::Matric locaToWorld; //new一个椭球(默认为wgs84)
osg::EllipsoidModel* em = new osg::EllipsoidModel;
//z为0,因为倾斜摄影模型的中心点高度为0
em->computeLocalToWorldTransformFromLatLongHeight(radx, rady,
z,localToWorld);
- 假设有顶点 localVertices, 求在wgs84下的BLH
4.1. 将顶点vertices从模型局部坐标系转换到世界坐标系
osg::Vec3d worldVertices = localVertices * locaToWorld;
4.2. worldVertices 转为wgs84下的lonlatAlt
em->convertXYZToLatLongHeight(worldVertices.x(), worldVertices.y(),
worldVertices.z(), lonlatAlt.x(), lonlatAlt.y(), lonlatAlt.z());