77范文网 - 专业文章范例文档资料分享平台

osgearth学习文档

来源:网络收集 时间:2019-01-27 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

osgEarth::Drivers::TMSOptions Class Reference 通过程序加载数据

赶紧进入正题,程序加载各种数据,首先介绍一下总体的方式

/*这里XXXOptions 是根据不同的数据类型选择不同驱动,比如加载本地数据可以使用GDALOptions ,加载TMS数据可以使用TMSOptions(注意TMSOptions可以加载本地也可以加载网上数据),WMSOptions可以加载网上数据(注意这个options主要加载影像和图片数据),ArcGISOptions加载ArcGIS Server发布数据。*/ osgEarth::Drivers::XXXOptions XXXLayer;

/*这里就是加载的数据路径,如果加载的本地数据就是本地数据的路径,如果加载是网 上数据就是相应的网址*/

XXXLayer.url()=osgEarth::URI(\

/*加载的数据是分层管理,每加载进来一个数据在earth上就是一个数据层,这里给数据层付个名字。*/

std::string LayerName=\

/*osgearth里layer主要有三种类型 ImageLayer、ElevationLayer和ModleLayer ,前两个大家从字面就可以知道第一个是加载影像和第二个是加载高程数据的,第三个是主要用来加载shp数据,至少我是这样用的,不知道还能否加载其他数据类型。确定加载用的驱动、数据源位置(路径)、数据层名和初始化了数据层,接下来就是把数据层加到地球中如下所示。*/

osg::ref_ptr

layer

=new osgEarth::XXXLayer(osgEarth::XXXLayerOptions(LayerName,XXXLayer));

m_pMap->addImageLayer(layer.get()); (1)加载本地数据

a 本地影像数据,数据类型为tif

osgEarth::Drivers::GDALOptions imagelayerOpt;//选择GDALOptions imagelayerOpt.url()

=

osgEarth::URI(\

Files\\\\osgVR74\\\\osgVR74\\\\world.tif\//影像数据路径 std::string imagelayerName = \ //影像数据层名 osg::ref_ptr

imageLayer

=

new osgEarth::ImageLayer(osgEarth::ImageLayerOptions(imagelayerName ,imagelayerOpt)); //初始数据层

m_pMap->addImageLayer(imageLayer .get()); b 本地高程数据,数据类型为tif

osgEarth::Drivers::GDALOptions demlayerOpt; //使用还是GDALOptions demlayerOpt.url()

=

osgEarth::URI(\

Files\\\\osgVR74\\\\osgVR74\\\\worlddem.tif\//高程数据路径 std::string demlayerName = \//高程数据层名 osg::ref_ptr

demLayer

=

new

osgEarth::ImageLayer(osgEarth::ImageLayerOptions(demlayerName,demlayerOpt));//初始数据层

m_pMap->addImageLayer(demLayer.get());

加载本地经过package 切片的数据还可以用TMSOptions,

osgEarth::Drivers::TMSOptions tmsOpt;////选择TMSOptions 驱动

tmsOpt.url()=osgEarth::URI(\/package 切片生成金字塔文件下的 xml

std::stringDemtmslayerName=\//图层名

osgEarth::ElevationLayerOptionstmslayerOpt(DemtmslayerName,tmsOpt); osg::ref_ptr TmsDemLayer osgEarth::ElevationLayer(tmslayerOpt);

m_pMap->addElevationLayer(TmsDemLayer.get());//初始化图层并加入到地球中 (2)加载网上数据

a 加载ArcGIS Server 发布的数据加载方式与上面提到的类似 osgEarth::Drivers::ArcGISOptions MapImageLayer;

MapImageLayer.url()=osgEarth::URI(\p003/MapServer\

std::string CdlayerName=\

osg::ref_ptr

cdlayer

=new

=

new

osgEarth::ImageLayer(osgEarth::ImageLayerOptions(CdlayerName,MapImageLayer));

m_pMap->addImageLayer(cdlayer.get());

//这里注意,当osgearth访问ArcGIS Server 发布数据的时候有些问题很奇怪,用上面的方式访问ArcGIS Server 国外发布的数据没问题,但是访问自己发布的数据就会有问题,经过试验投影要设成3857才能正常访问。

b 加载网上数据还可以用WMSOptions 加载方式同上。

2015/12/14

1.osgEarth::Util::MapNodeHelper.解析内部的命令行参数。

非静态成员变量不能使用类名直接访问。例如:osgEarth::Util::MapNodeHelper:: load() 这样的形式是错误的。

osg::Group * load (osg::ArgumentParser &args, osgViewer::View *view, Control *userControl=0L) const

函数是载入map文件,解析所有的内部命令行参数与外部的XML文件。 2. osgEarth::MapNode。建立OsgEarth的根节点。

3. osgEarth::Util::Controls::Grid. 此类是父类Container按照栅格形式组织子类。 4. osgEarth::Util::Controls::LabelControl.表示一个字符串的控件。 2015/12/15

1.void osgViewer::View::setCameraManipulator ( osgGA::CameraManipulator * manipulator, bool resetPosition = true ) 设置相机操作器。

OsgViewer::Viewer的继承关系如下图所示。

视图-View;视景器-Viewer。 osgViewer::View类别 2015/12/17

1.osgGA::GUIEventHandler为GUI事件提供一个基本的接口。

2.osgEarth::Map map是mapNode所渲染的主要的数据模型,包括所有的层对象。 3. osgEarth::Terrain 是为地形图的接口服务的

4 .osgEarth::ElevationQuery 查询地图上任意点的高程数据 5. osgEarth::GeoPoint 2015/12/20

1. osg::ArgumentParser 解析参数的类。

2. osgEarth::Annotation::ModelNode。从URI传递一个3D模型(注释节点)然后放置在一个地理节点。 2015/12/21

动态显示经纬度坐标以及高程方法

1. osgEarth::SpatialReference Class.保留描述参考椭球体和地理空间数据的投影的相关数据。 2.osgEarth::MapNode Class 中的函数const SpatialReference * MapNode::getMapSRS()const.得

到地图的地理空间参考系统。

3.osgEarth::Util::Controls:: ControlCanvas Class。将控件与OSG视景相关联。

4. osgGA::GUIEventHandler 为GUI事件提供一个基本的接口。在这个类的基础上,派生了其他的类,比如在高程与经纬度查询的osgViewer::StatsHandler类(为了增加屏幕状态到视景体的事件句柄),osgViewer::WindowSizeHandler类(改变窗口模式的屏幕分辨率和开关全屏模式和窗口模式的事件句柄),osgGA::StateSetManipulator类(实验类,不能被观察一段时间,但是能够返回到某个点)。 5.动态显示经纬度和高程 经纬度查询的机制。

主要是利用碰撞检测机制,鼠标点在二维的屏幕上的坐标,然后利用碰撞检测求得世界坐标X,Y,Z,然后再将世界坐标转换成与地理相关的三维坐标,然后再将此地理三维坐标转换成与经纬度有关的坐标。 重写handle函数。

bool handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa ) {

if (ea.getEventType() == osgGA::GUIEventAdapter::MOVE && aa.asView()->getFrameStamp()->getFrameNumber() % 10 == 0) {

osgViewer::View* view = static_cast(aa.asView()); update( ea.getX(), ea.getY(), view ); }

return false;

}

其中的osgGA::GUIEventAdapter类是存储键盘,鼠标和窗口事件。osgGA::GUIActionAdapter是抽象基类,它定义了GUIEventHandlers事件句柄将要访问GUI的接口。 然后调用相应的更新函数update();

void update( float x, float y, osgViewer::View* view ) {

bool yes = false;

// look under the mouse: osg::Vec3d world;

osgUtil::LineSegmentIntersector::Intersections hits; if ( view->computeIntersections(x, y, hits) ) {

world = hits.begin()->getWorldIntersectPoint();

// convert to map coords: GeoPoint mapPoint;

mapPoint.fromWorld( _terrain->getSRS(), world );

// do an elevation query:

double query_resolution = 0; // 1/10th of a degree double out_hamsl = 0.0;

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库osgearth学习文档在线全文阅读。

osgearth学习文档.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/460232.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: