|
我用ERDAS编辑了一张影象图片用VPB生成地形,其左上角坐标为(31.610625,120.234375)。然后我把某建筑用(31.610625,120.234375)坐标代替其中的lat,lon,height为建筑模型中心点的Z坐标。
osg::ref_ptr<osg::CoordinateSystemNode> csn = new osg::CoordinateSystemNode();
csn->setEllipsoidModel(new osg::EllipsoidModel());
csn->addChild(osgDB::readNodeFile("XXXX"));
double o,p,q;
csn->getEllipsoidModel()->convertLatLongHeightToXYZ(osg::inDegrees(lat),osg::inDegrees(lon),height,o,p,q);
osg::Vec3d up = csn->getEllipsoidModel()->computeLocalUpVector(o,p,q);
osg::ref_ptr<osg::MatrixTransform> mt = new osg::MatrixTransform;
osg::Matrixd matrix1;
matrix1.makeRotate(osg::Vec3d(0,0,1),up);
osg::Matrixd matrix2;
matrix2.makeTranslate(osg::Vec3d(o,p,q));
mt->setMatrix(matrix1*matrix2);
mt->addChild(&Geode);
osg::ref_ptr<osg::Group> gp = new osg::Group;
gp->addChild(mt);
osgDB::writeNodeFile(*(gp),“XXXX”);
最后得到的的模型并不在VPB产生的地形的左上角,有少许偏差。
我想是可以用的函数不一样导致计算结果不一样。
所以问下VPB用什么计算坐标的呢 |
|