osgearth学习文档

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="earth";

/*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("E:\\vs2010Progam

Files\\osgVR74\\osgVR74\\world.tif");//影像数据路径

std::string imagelayerName = "worldimage"; //影像数据层名

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("E:\\vs2010Progam

Files\\osgVR74\\osgVR74\\worlddem.tif");//高程数据路径

std::string demlayerName = "worlddem";//高程数据层名

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("//Edvis_-1/Layer_0/tms.xml");//package

切片生成金字塔文件下的 xml

std::stringDemtmslayerName="TmsDem";//图层名

osgEarth::ElevationLayerOptionstmslayerOpt(DemtmslayerName,tmsOpt);

osg::ref_ptr TmsDemLayer = new

osgEarth::ElevationLayer(tmslayerOpt);

m_pMap->addElevationLayer(TmsDemLayer.get());//初始化图层并加入到地球中

(2)加载网上数据

a 加载ArcGIS Server 发布的数据加载方式与上面提到的类似

osgEarth::Drivers::ArcGISOptions MapImageLayer;

MapImageLayer.url()=osgEarth::URI("http://xxx.xxx.xxx.xxx.:xxxx/arcgis/rest/services/world/map003/MapServer");

std::string CdlayerName="worldimage";

osg::ref_ptr cdlayer =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();

合集下载

使用BIGEMAP制作OSGEARTH瓦片地图

使用BIGEMAP制作OSGEARTH瓦片地图

使用BIGEMAP制作OSGEARTH瓦片地图

愈挫愈勇 (QQ473943748)

摘要: osgEarth是基于OSG的与GoogleEarth类似的跨平台地形SDK,笔者结合自己的经验,利用BIGEMAP来进行地图影像资源的下载,给大家介绍一种适用于osgEarth的TMS 地图瓦片数据集的制作方法。

关键词: BIGEMAP; OSGEARTH;瓦片

一、 引言

OpenSceneGraph是一个开源的三维引擎,被广泛的应用在视化仿真、游戏、虚拟现实、科学计算、三维重建、地理信息、太空探索、石油矿产等领域。OSG采用标准C++和OpenGL编写而成,可运行在所有的Windows平台、OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX、Android和FreeBSD 操作系统。OSG在各个行业均有着丰富的扩展,能够与使用OpenGL书写的引擎无缝的结合,使用国际上最先进的图形渲染技术,让每个用户都能站在巨人的肩上。而osgEarth是正是基于OSG的与GoogleEarth类似的跨平台地形SDK。osgEarth的开源特性使得相当多的人对其进行了研究,而对于广大工程人员来说,一个漂亮的地图是其开展应用的第一步,为此,笔者结合自己的经验,给大家介绍一种适用于osgEarth的地图瓦片数据集的制作过程。

二、地图影像资源的收集

本文笔者利用BIGEMAP(免费版)软件来进行地图影像资源的下载,以谷歌中国地图(图1)为例,选中菜单项中的“矩形框”,在地图上任意选取一个矩形区域(图2),后选择界面右上方的“编辑”,修改矩形框的范围为:-180.0-180.0 ,-90.0-90.0(图3),这样就框中了全球区域(图4)。双击矩形区域内部,就弹出地图下载对话框(图5),将“存储选项”选择“瓦片:TMS ”,“PNG”图片格式,瓦片级别根据需要选择,由于硬盘空间原因,本文只选到了8级,单击“确定”后就开始了瓦片的下载,详细情况可以在“下载列表”里查看。下载结束后生成的瓦片在“TMS”文件夹下,里面有0-8级PNG格式的瓦片(图6-7)。至此,基于BIGEMAP谷歌中国的地图瓦片就收集完毕了。

OSGEarth编译与测试

OSGEarth编译与测试

第一章 OSGEarth编译与测试

2.1 OSGEarth编译

第一步:配置系统环境变量。

新设置OSG_FILE_PATH变量,值为E:\OSGearth\OSGEARTH\data; E:\OSGearth\GDAL\data;

向PATH添加值:

E:\OSGearth\3rdParty\bin;

E:\OSGearth\OSGEARTH\bin\Debug;

E:\OSGearth\OSGEARTH\bin\Release;

第二步:使用“生成”->“批生产”,选择all_build(debug|win32和release|win32)进行生成。

在生成的过程中会提示出现以下错误:

错误提示 处理方法

无法打开包括文件:“geos/platform.h” 将D:\geos-3.3.1\vs2010\include\geos文件夹中的文件复制到E:\osgearth\geos\include\geos中

无法打开包括文件:“zlib.h” 将D:\zlib125\zlib-1.2.5\中zlib.H文件复制到E:\osgearth\libzip\include文件夹中

在编译过程中存在4个文件无法编译成功,但是不影响正常的测试。

第三步:修改这些错误。

上述错误的问题主要出现在E:\osgearth\osgearth\src\applications\osgearth_imageoverlay\osgearth_imageoverlay.cpp文件的36-39行。

原因是OSG_MIN_VERSION_REQUIRED(2,9,6)限制了osg的版本。本文使用了v3.0.1版,因此需要添加需要添加ImageOverlayEditor文件。

(目前还没有解决)

2.2 OSGEarth测试

测试release版本:

1.打开cmd窗口,进入E:\osgearth\osgearth\vs2010\bin\Release;

基于osgEarth的地形建模仿真

基于osgEarth的地形建模仿真

数据库技术・Data Base Technique 

基于osgEarth的地形建模仿真 

本文利用基于金字塔结构 的分块地形层次细节(1CVCl of detai1,LOD)简化算法,较好地 解决了大场景建模中速度与精度 间的最优化问题 

【关键词】OSG数字地球数据 

要渲染大场景地形,就需要用到 

osgEarth,它是基于OSG开发出来,专门用来 

进行对地形渲染的工具。它所采用的实时数据 

地形是支持在线跟离线两种模式的。除了可以 自己进行地形建模外,还支持从网络上下载实 

时的地形数据进行渲染和加载。它所支持的地 

图文件类型多样,包括WCS,TMS和WMS 

等,还可以直接从一些在线的地形数据服务器 

下载数据,例如:Google map,Ya-hoo map, 

ArcGIS Online等。本文主要介绍如何通过 

osgEarth渲染一个数字地球。 

1基于金字塔结构的地形绘制方法 

在大场景环境的三维快速重建过程中, 

一般采用均匀采样的高度场(digital elevation 

model,DEM)来表示地形表面。一般的说来, 

现在所要的地形高程数据都是由卫星拍摄的, 

卫星影像的精度提高,所传回的数据库也就越 

大。如此大数据量的场景重建对osgEarth来说 

实现实时绘制是十分困难的。 

为了能实时重建大数据量的地形模型, 

我们引入一种基于金字塔结构的地形实时绘制 

框架。金字塔是一种多分辨率层次模型,但在 

构建金字塔时很难做到分辨率的连续变化,因 此我们采用倍率方法构建。可以用一个公式来 

表示各层的分辨率。 

设地形的初始分辨率为r ,倍率为m,则 

第l层的分辨率为 

rl m (2-1) 

其中,倍率m可以是任何大于1的整数, 

一般取值为2,即每2x2个点合称为1个上层 

点。在这种情况下,如果初始地形分辨率为1 

米,则第一层的分辨率为2米,第l层的分辨 

率为2 米,我们只要根据自己所需要的分辨 率来选择分层,就会减少很多计算量,这就大 

OSGEarth地形和影像的数据预处理

OSGEarth地形和影像的数据预处理

OSGEarth地形和影像的数据预处理

OSGEarth是一个GIS工具,主要用来实现三维GIS的基本功能,其中最为基础当属对地形和影像的处理以及进行三维地形的构建与渲染。下面简要说明下osgearth中对数据的要求以及数据处理的方法。

一、数据来源

OSGEarth的地形和影像数据来源是以常见的地形和影像,包括各种高程数据和遥感影像数据。osgearth中地形和影像数据主要以TIFF格式为主,其来源是测量数据、CAD数据、或者是直接从网上下载的数据。

二、数据处理

OSGearth中数据必须要有坐标系。坐标系可以是地理坐标系和投影坐标系。当为了生成地球场景时,需要数据为地理坐标系;当生成平面场景时,数据必须为投影坐标系。

1、数据配准

数据坐标存在的问题时,地形和影像数据部匹配的时候,需要进行配准。

配准:利用道路图层和jpg影像,使用georeferencing 工具选取标志性地物进行配准。

2、数据没有坐标系的情况下(可以通过ArcGIS的查看图层的坐标系),我们需要自己定义一个坐标系。自定义一个坐标系的方法:用Arctoolbox工具中的Data Management Tools ->Projections and Transformations->Define

Projection工具定义坐标系(包括投影坐标系个地理坐标系)

图 1 定义坐标系

注意:在完全不知道坐标系的情况下,在定义坐标系时,可以随便指定一个坐标系(不管是地理坐标系还是投影坐标系都可以)。但是如果知道了数据的坐标(比如,有的数据是CAD数据(一般是平面坐标,即是X、Y是六位和七位数组成的一个数值))。在这中情况下,我们可以查看X、Y的坐标值,确定此数据的带号以及在定义投影坐标时是否需要做500公里的偏移处理。(你们公司的专业GIS人员应该知道!!!)。

3、osgearth的数据需要的是投影坐标系时,而原始数据却是地理坐标系(比如,数据是从google earth或测绘部门的获得,其坐标系一般都是地理坐标系),此时需要将地理坐标系转为投影坐标系。其简单过程可以如下:

osgEarth如何加载离线谷歌卫星地图瓦片的源码教程

osgEarth如何加载离线谷歌卫星地图瓦片的源码教程

osgEarth如何加载离线谷歌卫星地图瓦片的源码教程

说明

本实例演示重新编译bing驱动直接加载本地离线影像瓦片地图。

本实例使用软件版本:osg3.3.1和osgEarth2.5 VC10编译环境(参考osgearth加载谷歌卫星地图的源码案例),vs2010,水经注万能地图下载器。

影像瓦片来源“水经注万能地图下载器”。如果没有安装本软件,可以百度“水经注软件”到官方网站下载。

一、下载瓦片数据

启动水经注万能地图下载器,点击“我的下载”,选择“新建任务”,弹出“选择地图类型” 对话框,选择相应的地图类型,点击“确认”,如下图。

弹出“新建任务”对话框

输入全球坐标,由于我们需要导出瓦片数据,为了增加缩放效果,这里我们从1级到8级都勾选上。选择好级别后,点击开始下载。下载完成后会弹出对话框询问是否要立即导出,选择“是”,然后显示“导出图片数据”对话框,如下图所示。

在该对话框中,选择导出“瓦片:Bing Map”,导出级别“1-8”,选择保存路径,点击“输出”按钮导出数据即可。

二、重新编译Bing驱动

新建“osgdb_osgearth_bingd” 动态库项目,如下图所示。

点击“确定”,弹出“应用程序向导”,如下图所示。

点击下一步

选择程序类型“DLL”,点击“完成”。

添加“包含目录”和“库目录”

包含目录设置为“D:\OSG\include”

库目录设置为“D:\OSG\lib“

以上目录路径根据OSG文件位置设定。

附加依赖项

OpenThreads.lib

osgd.lib

osgAnimationd.lib

osgDBd.lib

osgdb_osgearth_feature_ogrd.lib

osgdb_osgearth_feature_tfsd.lib

osgdb_osgearth_feature_wfsd.lib

osgEarthd.lib

osgEarthAnnotationd.lib

osgearthsetelevation范围

osgearthsetelevation范围

osgearthsetelevation范围

osgearthsetelevation范围是一个在地理信息系统领域中广泛应用的工具。osgearth是一个开源的地理信息引擎,用于创建和渲染虚拟地球场景,而osgearthsetelevation则是osgearth的一个插件,用于设置地球场景的海拔高度信息。通过使用osgearthsetelevation,用户可以为地球场景中的各个点设置具体的海拔高度数值,从而实现更加真实的地形表现。

osgearthsetelevation的范围涵盖了地球场景的整个海拔高度信息的设置。用户可以通过使用osgearthsetelevation插件,定义不同区域的地形特征。例如,对于一个模拟真实地球场景的应用项目,我们可以使用osgearthsetelevation来设置山脉、河流、湖泊等地形要素的海拔高度。用户可以根据实际地理数据,如地形地貌图、卫星遥感图等,为地球场景中每个地理位置设置具体的海拔高度数值。

osgearthsetelevation的使用步骤如下:

步骤一:准备地形数据

osgearthsetelevation需要使用地形数据来生成地球场景的海拔高度信息。通常,这些地形数据可以通过高程数据采集、地理信息系统(GIS)数据导入等方式获取。在准备地形数据时,需要确保数据的准确性和完整性,以便能够生成真实且具有可视化效果的地球场景。可以使用的地形数据格式包括但不限于DTED、SRTM等等。

步骤二:导入地形数据

使用osgearthsetelevation插件,可以将准备好的地形数据导入osgearth引擎中。导入地形数据的过程涉及到将地形数据转化为引擎可以识别和处理的格式。osgearth支持多种数据格式的导入,如GeoTIFF、Shapefile等。用户可以选择适合自己数据的格式进行导入,并配置相关的参数以实现对海拔高度信息的设置。

步骤三:设置地形特征

【最新推荐】Arcgis个人学习总结02 (3000字)word版本 (1页)

【最新推荐】Arcgis个人学习总结02 (3000字)word版本

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!

== 本文为word格式,下载后可方便编辑和修改! ==

Arcgis个人学习总结02 (3000字)

也许您还喜欢:

 学习总结

 党员的权利与义务学习总结

 学习心得体会 (1500字)

 我的网上学习总结 (4000字)

 自主学习总结 (500字)

 学习心得和小结

 三查三看第一阶段学习总结

 教师业务学习总结 (5000字)

 网络学习总结 (500字)

 学习总结(格式完整) (6000字)

 和利时学习总结 (5000字)

 个人学习总结

2019-Arcgis个人学习总结02 (3000字)-推荐word版 (1页)

2019-Arcgis个人学习总结02 (3000字)-推荐word版

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!

== 本文为word格式,下载后可方便编辑和修改! ==

Arcgis个人学习总结02 (3000字)

也许您还喜欢:

 学习总结

 党员的权利与义务学习总结

 学习心得体会 (1500字)

 我的网上学习总结 (4000字)

 自主学习总结 (500字)

 学习心得和小结

 三查三看第一阶段学习总结

 教师业务学习总结 (5000字)

 网络学习总结 (500字)

 学习总结(格式完整) (6000字)

 和利时学习总结 (5000字)

 个人学习总结

osgearth实践应用案例

osgearth实践应用案例

1. 地理信息系统(GIS)应用:osgEarth可以与GIS软件集成,用于创建高度精确的地理信息系统。例如,osgEarth可以用于创建地图、分析地形数据、显示地理位置等。

2. 3D可视化:osgEarth可以将地理数据转化为3D模型,实现地理数据的可视化展示。例如,osgEarth可以用于创建虚拟地球模型,展示地球上的地形、水域、建筑物等。

3. 地理数据分析:osgEarth提供了丰富的地理数据分析功能,可以进行地形分析、地理数据可视化等。例如,osgEarth可以用于分析地形高程数据,计算坡度、坡向等地形指标。

4. 场景模拟与规划:osgEarth可以用于场景模拟与规划,例如城市规划、交通规划等。osgEarth可以将地理数据与实时数据结合,进行场景模拟和规划分析。

5. 航空航天应用:osgEarth可以用于航空航天应用,例如飞行模拟、无人机导航等。osgEarth可以创建高度精确的地球模型,用于飞行仿真和导航。

6. 智能交通系统:osgEarth可以与交通系统集成,用于交通数据可视化和分析。例如,osgEarth可以显示交通拥堵情况,进行交通流量预测等。

以上仅为osgEarth的一些实践应用案例,osgEarth还可以应用于许多其他领域,如农业、环境保护、水资源管理等。

[原][OE][官方例子]osgearth_annotationOE地球添加热点标签

[原][OE][官⽅例⼦]osgearth_annotationOE地球添加热点标签

OE代码样例

/* -*-c++-*- */

/* osgEarth - Dynamic map generation toolkit for OpenSceneGraph

* Copyright 2016 Pelican Mapping*

*

* osgEarth is free software; you can redistribute it and/or modify

* it under the terms of the GNU Lesser General Public License as published by

* the Free Software Foundation; either version 2 of the License, or

* (at your option) any later version.

*

* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档