osgEarth数据加载及组织解析

合集下载

osgEarth加载谷歌卫星地图的源码案例

osgEarth加载谷歌卫星地图的源码案例

osgEarth加载谷歌卫星地图的源码案例2014-12-24 11:51 242人阅读评论(0) 收藏举报osgEarth谷歌卫星地图一、准备工作安装水经注万能地图下载器,如果没有安装本软件,可以百度“水经注软件”到官方网站下载。

编译OSG、OSGEarth和第三方插件等,这里有一个已经编译好的vs2010+osgearth,下载地址“/share/link?shareid=107009&uk=2801833827”。

二、下载地图首先需要把谷歌卫星地图下载下来,这里以“郫县”为例。

启动水经注万能地图下载器,点击“框选下载区域”,双击下载区域,选择级数,如下图。

image001.jpg(269.3 KB, 下载次数: 0)下载附件保存到相册2014-12-23 16:01 上传在级别列表中,你可以选择任何级别,但一般来讲城区选择19级,郊区选择16级比理想,但选择级别之前,最好在在线地图浏览中先查看所想要下载的级别是否有数据,这里我们以10级为例。

选择好级别后,点击确定开始下载。

下载完成后会弹出对话框询问是否要立即导出,选择“是”,然后显示“导出图片数据”对话框,如下图所示。

在该对话框中,不需要作任何设置,点击“输出”按钮以默认参数导出数据即可。

默认导出路径为“D:\SGDownload\tt1_拼接[默认]\L10”。

三、VS2010创建应用程序解压编译包后还不能直接使用,需要设置环境变量:OSG_ROOT X:\OSGOSG_FILE_PATH %OSG_ROOT%\dataOSG_WINDOW 600 15 800 800Path %OSG_ROOT%\bin;设置文件目录属性Osgearth的一个主要目标是易于应用集成,实际上有2种方式去整合osgearth.第一种方式你可以建立一个earth file,然后在你的应用程序中加载它.第二种使用osgearth API的时候以编程方式动态建立一个地图。

基于OSGEARTH的三维数字地球平台设计与实现

基于OSGEARTH的三维数字地球平台设计与实现

基于OSGEARTH的三维数字地球平台设计与实现陈波;任清华;杨化斌【摘要】目前主流三维数字地球平台在数据支持和数据管理方面存在兼容性缺陷.针对三维数字地球平台建设需求,研究了osgEkth的实时地形渲染机制及三维数字地球开发过程中数据加载和海浪模拟技术难点.针对数据实时加载问题,提出基于数据库存储的LOD四叉树模型;针对海浪模拟逼真度不够问题,提出基于改良Higgins 算法的海浪模拟.重点结合软件构件化的设计思想,进行了面向实际工程应用的三维数字地球平台开发.【期刊名称】《电子科技》【年(卷),期】2015(028)010【总页数】4页(P65-68)【关键词】数字地球;软件构件化;改良的Higgins算法;osgEarth【作者】陈波;任清华;杨化斌【作者单位】空军工程大学信息与导航学院,陕西西安710077;空军工程大学信息与导航学院,陕西西安710077;空军工程大学信息与导航学院,陕西西安710077【正文语种】中文【中图分类】TP311.52“数字地球”概念最早是由美国副总统戈尔在美国科学研究院提出的[1]。

数字地球不仅可以提供数字地图地理信息查询服务,还可满足人们探索地球、管理地球的愿望。

其基本思想是将高分辨率的遥感影像覆盖全球,并通过建立覆盖全球的数字高程模型和地球景观模型,形成虚拟地球[2]。

近年来涌现了大量数字地球软件。

国外有Google公司的Google Earth,NASA的World Wind,微软的Virtual Earth等,国内有北大/北航的China Star,武汉大学的Geo Globe,中科院遥感所的DEPS CAS等[3],均含有高精度全球卫星影像,且提供简单的二次接口或部分开源,但具有以下不足:(1)只能使用单一的软件自带数字地球数据,无法集成其他软件所带的数字地球数据。

(2)大多数软件属于商业软件,价格昂贵,少数开源软件使用复杂,功能受限[3]。

(3)无法进行面向实际工程应用的二次开发,软件灵活性较差,无法满足多方面需求。

osgearth学习文档

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<osgEarth::XXXLayer> layer =new osgEarth::XXXLayer(osgEarth::XXXLayerOptions(LayerName,XXXLayer));m_pMap->addImageLayer(layer.get());(1)加载本地数据a 本地影像数据,数据类型为tifosgEarth::Drivers::GDALOptions imagelayerOpt;//选择GDALOptionsimagelayerOpt.url() = osgEarth::URI("E:\\vs2010Progam Files\\osgVR74\\osgVR74\\world.tif");//影像数据路径std::string imagelayerName = "worldimage"; //影像数据层名osg::ref_ptr<osgEarth::ImageLayer> imageLayer = new osgEarth::ImageLayer(osgEarth::ImageLayerOptions(imagelayerName ,imagelayerOpt));//初始数据层m_pMap->addImageLayer(imageLayer .get());b 本地高程数据,数据类型为tifosgEarth::Drivers::GDALOptions demlayerOpt;//使用还是GDALOptionsdemlayerOpt.url() = osgEarth::URI("E:\\vs2010Progam Files\\osgVR74\\osgVR74\\worlddem.tif");//高程数据路径std::string demlayerName = "worlddem";//高程数据层名osg::ref_ptr<osgEarth::ImageLayer> 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切片生成金字塔文件下的xmlstd::stringDemtmslayerName="TmsDem";//图层名osgEarth::ElevationLayerOptionstmslayerOpt(DemtmslayerName,tmsOpt);osg::ref_ptr<osgEarth::ElevationLayer> 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/ma p003/MapServer");std::string CdlayerName="worldimage";osg::ref_ptr<osgEarth::ImageLayer> cdlayer =new osgEarth::ImageLayer(osgEarth::ImageLayerOptions(CdlayerName,MapImageLayer));m_pMap->addImageLayer(cdlayer.get());//这里注意,当osgearth访问ArcGIS Server 发布数据的时候有些问题很奇怪,用上面的方式访问ArcGIS Server 国外发布的数据没问题,但是访问自己发布的数据就会有问题,经过试验投影要设成3857才能正常访问。

osgearth学习文档

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<osgEarth::XXXLayer> layer =new osgEarth::XXXLayer(osgEarth::XXXLayerOptions(LayerName,XXXLayer));m_pMap->addImageLayer(layer.get());(1)加载本地数据a 本地影像数据,数据类型为tifosgEarth::Drivers::GDALOptions imagelayerOpt;//选择GDALOptionsimagelayerOpt.url() = osgEarth::URI("E:\\vs2010Progam Files\\osgVR74\\osgVR74\\world.tif");//影像数据路径std::string imagelayerName = "worldimage"; //影像数据层名osg::ref_ptr<osgEarth::ImageLayer> imageLayer = new osgEarth::ImageLayer(osgEarth::ImageLayerOptions(imagelayerName ,imagelayerOpt));//初始数据层m_pMap->addImageLayer(imageLayer .get());b 本地高程数据,数据类型为tifosgEarth::Drivers::GDALOptions demlayerOpt;//使用还是GDALOptionsdemlayerOpt.url() = osgEarth::URI("E:\\vs2010Progam Files\\osgVR74\\osgVR74\\worlddem.tif");//高程数据路径std::string demlayerName = "worlddem";//高程数据层名osg::ref_ptr<osgEarth::ImageLayer> 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切片生成金字塔文件下的xmlstd::stringDemtmslayerName="TmsDem";//图层名osgEarth::ElevationLayerOptionstmslayerOpt(DemtmslayerName,tmsOpt);osg::ref_ptr<osgEarth::ElevationLayer> TmsDemLayer = new osgEarth::ElevationLayer(tmslayerOpt);m_pMap->addElevationLayer(TmsDemLayer.get());//初始化图层并加入到地球中(2)加载网上数据a 加载ArcGIS Server 发布的数据加载方式与上面提到的类似osgEarth::Drivers::ArcGISOptions MapImageLayer;MapImageLayer.url()=osgEarth::URI("");std::string CdlayerName="worldimage";osg::ref_ptr<osgEarth::ImageLayer> cdlayer =new osgEarth::ImageLayer(osgEarth::ImageLayerOptions(CdlayerName,MapImageLayer));m_pMap->addImageLayer(cdlayer.get());//这里注意,当osgearth访问ArcGIS Server 发布数据的时候有些问题很奇怪,用上面的方式访问ArcGIS Server 国外发布的数据没问题,但是访问自己发布的数据就会有问题,经过试验投影要设成3857才能正常访问。

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或测绘部门的获得,其坐标系一般都是地理坐标系),此时需要将地理坐标系转为投影坐标系。

geodata数据加载方式 小内存模式和标准模式

geodata数据加载方式 小内存模式和标准模式

# geodata数据加载方式:小内存模式和标准模式## 1. 介绍地理数据是我们生活中不可缺少的一部分,随着技术的发展,地理信息系统(GIS)的应用越来越广泛。

而在GIS中,geodata的加载方式也是至关重要的一环。

在本文中,我们将探讨geodata数据加载方式中的小内存模式和标准模式,并比较它们各自的优缺点。

## 2. 小内存模式小内存模式是一种基于内存的数据加载方式,它将数据直接加载到内存中进行处理。

这种方式相对于标准模式来说,对计算机的内存要求较低,能够在较小的内存空间中完成数据的加载和处理。

### 2.1 优点- 节约内存:小内存模式能够在有限的内存空间中加载大量的地理数据,适用于内存资源有限的设备。

- 加载速度快:由于数据直接加载到内存中,所以小内存模式在加载数据时速度较快。

### 2.2 缺点- 数据量限制:由于是基于内存的加载方式,所以能够加载的数据量受到内存大小的限制,较大的地理数据可能无法完全加载到内存中进行处理。

- 性能损耗:对于较大的数据量,小内存模式在处理性能上可能会受到一定影响,因为需要不断地进行内存交换操作。

## 3. 标准模式相对于小内存模式,标准模式是一种更加灵活的数据加载方式。

它不再将数据全部加载到内存中,而是通过分块加载的方式,在需要的时候动态加载数据,以降低内存的占用。

### 3.1 优点- 适用于大数据量:标准模式能够处理较大的地理数据,因为数据并不需要一次性加载到内存中,而是根据需要进行动态加载。

- 内存占用低:由于数据并不全部加载到内存中,所以标准模式在内存占用上要优于小内存模式。

### 3.2 缺点- 加载速度相对较慢:相对于小内存模式来说,由于需要动态加载数据,所以标准模式在加载速度上可能会稍慢一些。

- 对内存要求较高:虽然在内存占用上要优于小内存模式,但对于内存资源较少的设备来说,标准模式仍然可能会面临内存不足的问题。

## 4. 小结小内存模式和标准模式各有优缺点,选择合适的加载方式需要根据具体的场景和需求来进行权衡。

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.libosgd.libosgAnimationd.libosgDBd.libosgdb_osgearth_feature_ogrd.lib osgdb_osgearth_feature_tfsd.lib osgdb_osgearth_feature_wfsd.lib osgEarthd.lib osgEarthAnnotationd.lib osgEarthFeaturesd.lib osgEarthSymbologyd.libosgEarthUtild.libosgFXd.lib osgGAd.lib osgManipulatord.lib osgParticled.lib osgPresentationd.lib osgShadowd.lib osgSimd.lib osgTerraind.lib osgTextd.lib osgUtild.lib osgViewerd.lib osgVolumed.lib osgWidgetd.lib点击“确定“。

osgearth各个例子功能概述

osgearth各个例子功能概述

osgearth各个例⼦功能概述转⾃:/wl198302/article/details/21177309最近在学习osgearth,对其还不是很理解,有些例⼦不会运⾏,有些可以,把可以的做个统计,以备后⾯查⽤。

1、osgearth_graticule:⽣成经纬线。

2、osgearth_annotation:各类标注(点、线、⾯、模型、⽂本等)。

3、osgearth_city:加载⼀个城市三维模型,可以浏览。

4、osgearth_clamp:在⼀个区域加载⽣成5000个树⽊的三维模型展⽰。

5、osgearth_colorfilter:运⾏不起来……6、osgeatth_controls:有⼀个osg的图标,可以控制透明度与⽅向。

还有⼀些⽂本矩形框之类的。

7、osgearth_demo:qt的⼀个集成地球的例⼦8、osgearth_elevation:显⽰⿏标所指位置的经纬度、坐标系、⾼程(MSL\HAE)、分辨率。

不过运⾏⾮常缓慢。

9、osgearth_featureeditor:添加⼀条线,并可以修改线的节点与颜⾊(编辑时,线的形状变为虚线段)。

10、osgearth_featurfilter:出来⼀个地球,不知道需要什么数据才能运⾏出效果。

例⼦给出的⽤途为-简单的功能过滤,改变数据源特征属性的值。

11、osgearth_featureinfo:不是界⾯程序,不知道⼲嘛的……12、osgearth_featuremanip:出现⼀个地球,没明⽩⼲嘛的……13、osgearth_featurequery:同上……14、osgearth_imageoverlay:在地图上叠加⼀张gif图⽚,并可以控制图⽚的透明度。

15、osgearth_features:代码建⽴地图,并加载各国分界线的shp数据。

16、osgearth_los:以稍稍⽔平的视⾓,显⽰飞机模型绕⼀点旋转,还有⼀些运动对象。

17、osgearth_manip:地球上⽣成⼀个⽴体的helloworld⽂字,并且可以控制⽂字⾏⾛,快速定位不同级别的视点,让⽂字始终在屏幕中央,地球滚动,很好的功能 O(∩_∩)O~18、osgearth_map:代码⽣成地球tms地图图层。

从BigeMap数据到Osgearth数据加载

从BigeMap数据到Osgearth数据加载

从下载数据到加载数据的详细解析从上周四开始至昨天周一为止,自己一直在做准备Pakistan影响和高程数据的准备工作。

虽然是数据的准备工作,但是在这几天的工作,着实也是学到了不少东西,积累到不少经验,因此在这里做一个文档进行总结。

高程数据和影响数据处理过程很类似,在这里我只详细描述影响数据从下载到应用的全部过程。

下载数据下载数据应该是整个过程中相对比较烦人的一个工作。

想要下载到高清、无水印的数据不是想象中的那么简单。

工作之前队友王小芦和王雨霞对下载影响数据的工具已经进行了充分的调研,发现一款名为BigeMap的软件相对比较好用,因此在下载数据的过程中,我也是首选了BigeMap这款软件。

就BigeMap这款软件而言,也是存在它的本身缺陷的。

最大的困难就是这不是一款免费软件,或者购买或者通过做任务拿到正版授权,在这里授权部分不再赘述。

拿到BigeMap的正版授权的话,就可以下载数据了,自己在下载数据的时候也出现了很多问题。

首先就是层级的问题,自己并不清楚下载多少层数据。

其次就是选择哪个地区的数据下载。

在这里就给出下载数据的一些具体流程(以下载Pakistan数据为例):1、首先下载一块Pakistan全国11级数据,这块数据大小在1GB左右,是自己可以接受的范围2、接着放大地图,下载Pakistan局部地区13级数据。

至于下载哪一块区域就看自己的意向,本人在下载时,选择了Pakistan首都地区伊斯兰堡。

大小在1GB左右。

3、再放大地图,下载包含伊斯兰堡地区的15级数据,大小1GB左右4、再放大,下载伊斯兰堡城市的17级数据,大小在2GB左右5、最后将地图放大至最大,下载伊斯兰堡市区人口相对密集的地区,大小在5GB左右。

下载数据的过程是BigeMap的使用过程,BigeMap是一款设计非常好的软件,一般人员都会使用,所以这里就不在对下载数据进行详细解释。

下面我们来详细介绍切图以及osgearth怎么加载数据。

osgearth 参数

osgearth 参数

osgearth 参数
osgEarth是一个用于地理信息系统(GIS)的开源软件库,它使用OpenSceneGraph(OSG)作为其3D引擎。

osgEarth提供了许多参数来配置和定制其功能和行为。

以下是一些常见的osgEarth参数:
1. 模型位置:使用`url`字段表示模型的位置路径。

2. 视点图层:使用`viewpoints`关键字来表示,包含了`name`、`heading`、`lat`、`long`、`height`、`pitch`和`range`七个参数,分别表示图层名称、
方位角、位置纬度、经度、高度、俯仰角、范围。

3. 挤压符号:用于创建3D形状的挤压几何,例如从源矢量数据中挤压2D
向量。

4. 图标符号:描述二维图标的外观,常用于点替换,用图标代替几何模型。

5. 模型符号:描述外部的3D模型。

请注意,上述参数只是一部分osgEarth提供的参数,并不详尽无遗。

您应
该参考osgEarth的官方文档或源代码以获取完整的参数列表和详细说明。

osgearth gdalelevationlayer用法

osgearth gdalelevationlayer用法

osgEarth GdalElevationLayer用法简介osgEarth是一个用于地理空间可视化的开源工具包,它结合了OSG (OpenSceneGraph)和GDAL(Geospatial Data Abstraction Library)等库的功能,提供了一套强大的地理空间数据处理和可视化工具。

其中,GdalElevationLayer是osgEarth中用于处理高程数据的图层类。

本文将介绍osgEarth中GdalElevationLayer的用法,包括如何创建图层、加载高程数据、设置图层参数以及与其他图层的组合等。

创建图层在osgEarth中,可以通过以下代码创建一个GdalElevationLayer图层对象:osgEarth::Drivers::GdalElevationOptions options;options.url() = "path/to/elevation.tif";osgEarth::GdalElevationLayer* elevationLayer = new osgEarth::GdalElevationLaye r(options);在上述代码中,首先创建了一个GdalElevationOptions对象,用于设置图层的参数。

其中,url()方法用于设置高程数据文件的路径。

然后,利用这个参数对象创建了一个GdalElevationLayer对象。

加载高程数据osgEarth中的GdalElevationLayer支持多种高程数据格式,包括GeoTIFF、DTED 和SRTM等。

可以通过设置url()方法指定高程数据文件的路径,也可以通过设置profile()方法指定高程数据的坐标系。

下面是一个加载GeoTIFF格式高程数据的示例代码:osgEarth::Drivers::GdalElevationOptions options;options.url() = "path/to/elevation.tif";osgEarth::GdalElevationLayer* elevationLayer = new osgEarth::GdalElevationLaye r(options);osgEarth::Map* map = new osgEarth::Map();map->addLayer(elevationLayer);在上述代码中,首先创建了一个GdalElevationOptions对象,并设置了高程数据文件的路径。

osgEarth手册

osgEarth手册

1、OSGEARTH 安装OsgEarth是一个跨平台的库,可以使用版本号为2.6.2或更新版本的Cmake 对其进行编译。

1.1、获取源码三个方法可以获取osgearth源码:Option1:使用GITosgEarth源码托管于GitHub,所以我们需要一个Git客户端。

Windows下推荐T ortoiseGit,SVN 小乌龟的Git 版本。

评价:该有的功能基本都有了,还是不错的。

备注:GitHub是一个为那些使用Git版本控制系统的项目提供基于互联网的存取服务的Git存取站点。

它是由GItHub公司(先前被称作用Logical Awesome)的开发者Chris Wanstrath, PJ Hyett, 和Tom Preston-Werner 使用Ruby on Rails写成的。

最新版本是Version 2.0,osgearth_2.0_T2011-02-24。

Option2: 下载tarballtarball是linux下最方便的打包工具,是以tar这个指令来打包与压缩的档案。

下载页面: /gwaldron/osgearth/downloadsOption3:使用版本控制SVN在您的SVN客户端上键入:/gwaldron/osgearth.git1.2、准备工作osgEarth需要第三方支持库才能编译。

所需的依赖服务如下:●OpenSceneGraph 2.8或更新的●GDAL 1.6或更新的,Geospatial Data Abstraction Layer的缩写。

是一个在X/MIT许可协议下的开源栅格空间数据转换库●CURL- HTTP transfer library,是一个利用URL语法在命令行方式下工作的文件传输工具。

可选依赖如下(没有他们,osgEarth可以运行,但将会失去一些功能):●GEOS3.2.0或更高版本-C++拓展库,这个库是用来osgEarthFeatures模块执行各种几何处理操作,如缓冲和交集。

osgearth取高程方法

osgearth取高程方法

osgearth取高程方法osgEarth是一个开源的地理信息系统(GIS)工具包,它提供了一种简单而强大的方法来显示和分析地球空间数据。

在osgEarth中,取得高程数据的方法是通过使用高程图层。

本文将详细介绍osgEarth中的高程图层及其使用方法。

高程图层是osgEarth中用于显示地球表面高程的一种图层类型。

它可以从各种数据源获取高程数据,如地形数据集、DEM数据等。

osgEarth支持多种高程数据格式,包括ESRI Grid、GeoTIFF、DTED 等。

用户可以根据自己的需求选择合适的高程数据源。

在osgEarth中,要使用高程图层,首先需要创建一个Map对象,并将高程图层添加到地图中。

可以使用代码如下所示:```cpposgEarth::Map* map = new osgEarth::Map();osgEarth::ElevationLayer* elevationLayer = new osgEarth::ElevationLayer();map->addLayer(elevationLayer);```接下来,需要指定高程图层的数据源。

osgEarth提供了多种数据源类型,包括本地文件、在线服务等。

例如,可以使用以下代码将高程图层的数据源设置为本地的DEM文件:```cpposgEarth::ElevationLayerOptions elevationLayerOptions; elevationLayerOptions.url() = "path/to/dem.tif"; elevationLayer->setOptions(elevationLayerOptions);```除了本地文件,osgEarth还支持从在线服务获取高程数据。

例如,可以使用以下代码将高程图层的数据源设置为NASA的SRTM数据:```cpposgEarth::ElevationLayerOptions elevationLayerOptions; elevationLayerOptions.url() = "http://elevation/nasa_srtm"; elevationLayer->setOptions(elevationLayerOptions);```在设置好高程图层的数据源后,还可以对高程图层进行一些其他设置。

osgEarth使用笔记4—加载矢量数据

osgEarth使用笔记4—加载矢量数据

osgEarth使用笔记4—加载矢量数据目录1. 概述2. 详论2.1. 基本绘制2.2. 矢量符号化2.2.1. 可见性2.2.2. 高度设置2.2.3. 符号化2.2.4. 显示标注2.3. 其他3. 结果4. 问题1. 概述前面文章加载的底图数据是一种栅格数据,还有一种很重要的地理信息表现形式是矢量数据。

在osgEarth中,这部分包含的内容还是很丰富的,这里就总结一二。

2. 详论在《osgEarth使用笔记1——显示一个数字地球》这篇文章中代码的基础之上,添加加载显示矢量的代码:1.#include<Windows.h>2.#include<iostream>3.#include<string>4.5.#include<osgViewer/Viewer>6.#include<osgDB/ReadFile>7.8.#include<osgEarth/MapNode>9.#include<osgEarth/ImageLayer>10.11.#include<osgEarthDrivers/gdal/GDALOptions>12.#include<osgEarthDrivers/cache_filesystem/FileSystemCache>13.#include<osgEarthDrivers/feature_ogr/OGRFeatureOptions>14.15.#include<osgEarthFeatures/FeatureSourceLayer>16.#include<osgEarthFeatures/FeatureModelLayer>17.18.#include<osgEarthUtil/EarthManipulator>19.ing namespace std;21.22.void AddVector(osg::ref_ptr<osgEarth::Map> map)23.{24.//25.std::string filePath ="D:/Work/OSGNewBuild/osgearth-2.10.1/data/world.shp";26.osgEarth::Drivers::OGRFeatureOptions featureData;27.featureData.url()= filePath;28.29.// 如果缺少空间参考,可以手动指定30.// ifstreaminfile("C:/Data/vector/hs/23.prj");31.// string line;32.// getline(infile, line);33.// featureData.profile()->srsString() = line;34.35.// Make a feature source layer and add itto the Map:36.osgEarth::Features::FeatureSourceLayerOptio ns ogrLayer;()= filePath +"_source";38.ogrLayer.featureSource()= featureData;39.osgEarth::Features::FeatureSourceLayer* featureSourceLayer =newosgEarth::Features::FeatureSourceLayer(ogrLayer);40.map->addLayer(featureSourceLayer);41.osgEarth::Features::FeatureSource*features = featureSourceLayer->getFeatureSource();42.if(!features)43.{44.printf(("无法打开该矢量文件!"));45.return;46.}47.48.//49.osgEarth::Features::FeatureModelLayerOption s fmlOpt;()= filePath;51.fmlOpt.featureSourceLayer()= filePath +"_source";52.fmlOpt.enableLighting()=false;53.54.osg::ref_ptr<osgEarth::Features::FeatureMod elLayer> fml =newosgEarth::Features::FeatureModelLayer(fmlOpt);55.map->addLayer(fml);56.}57.58.int main()59.{60.osgEarth::ProfileOptions profileOpts;61.62.//地图配置:设置缓存目录63.osgEarth::Drivers::FileSystemCacheOptions cacheOpts;64.string cacheDir ="D:/Work/OSGNewBuild/tmp";65.cacheOpts.rootPath()= cacheDir;66.67.//68.osgEarth::MapOptions mapOpts;69.mapOpts.cache()= cacheOpts;70.mapOpts.profile()= profileOpts;71.72.//创建地图节点73.osg::ref_ptr<osgEarth::Map> map =new osgEarth::Map(mapOpts);74.osg::ref_ptr<osgEarth::MapNode> mapNode = new osgEarth::MapNode(map);75.76.osgEarth::Drivers::GDALOptions gdal;77.gdal.url()="D:/Work/OSGNewBuild/osgearth-2.10.1/data/world.tif";78.osg::ref_ptr<osgEarth::ImageLayer> layer = new osgEarth::ImageLayer("BlueMarble", gdal);79.map->addLayer(layer);80.81.AddVector(map);82.83.osgViewer::Viewer viewer;84.viewer.setSceneData(mapNode);85.86.osg::ref_ptr<osgEarth::Util::EarthManipulator> mainManipulator = new osgEarth::Util::EarthManipulator;87.viewer.setCameraManipulator(mainManipulator);88.89.viewer.setUpViewInWindow(100,100,800,600);90.91.return viewer.run();92.}osgEarth表达矢量的基本思路是,先将其读取到矢量源图层FeatureSourceLayer中,这个图层加载到osgEarth的图层列表中是不显示的,必须得再加载一个专门的符号化图层,将其符号号,才能正常显示。

osgearth 简单的例子

osgearth 简单的例子

1. 介绍osgEarthosgEarth是一个开源的地理空间3D渲染引擎,它建立在OpenSceneGraph(OSG)之上,提供了一套方便易用的工具和库,用于构建高性能的3D地球可视化应用程序。

osgEarth支持多种数据格式和地理空间数据源,包括地形数据、卫星影像、矢量数据等,用户可以利用osgEarth快速、灵活地构建出各种类型的地球可视化应用。

2. osgEarth的基本概念在了解osgEarth之前,需要了解一些基本概念。

osgEarth使用用于地球可视化的场景图,其中包含了地形、卫星影像、矢量数据和其他图层信息。

osgEarth使用图层树来管理这些数据,每个图层都有自己的样式和渲染规则。

osgEarth还提供了一套简单的、高效的符号渲染系统,可以用于在地图中显示各种地理要素。

3. osgEarth的简单例子下面通过一个简单的例子来介绍osgEarth的基本用法。

假设我们有一些地形数据和卫星影像数据,我们希望将它们加载到osgEarth中进行可视化展示。

(1)我们需要创建一个OSG Viewer实例,作为osgEarth可视化的窗口。

(2)我们需要创建一个Map实例,用于管理地理空间数据。

我们可以向Map实例中添加地形图层和卫星影像图层。

(3)接下来,我们需要创建一个MapNode实例,它是地球可视化的根节点。

我们可以将Map实例和OSG Viewer实例传递给MapNode实例。

(4)我们将MapNode实例添加到OSG Viewer中,这样就完成了地球可视化的搭建工作。

通过以上简单的步骤,我们就可以将地形数据和卫星影像数据加载到osgEarth中进行可视化展示了。

当然,osgEarth还提供了丰富的样式和渲染规则设置,可以根据实际需求进行定制化操作。

4. 总结osgEarth作为一个开源的地理空间3D渲染引擎,提供了丰富的功能和灵活的工具,可以帮助用户快速、高效地构建各种类型的地球可视化应用。

osgearth源代码中各个sample案例详解

osgearth源代码中各个sample案例详解

osgearth源代码中各个sample案例详解英文版详解OSGEarth源代码中的各个Sample案例OSGEarth, an open-source geospatial visualization library, offers a range of sample cases to demonstrate its capabilities. These samples not only showcase the functionality of OSGEarth but also provide valuable insights into how the library can be used in real-world scenarios. In this article, we delve into each of the sample cases in the OSGEarth source code, explaining their purpose, implementation, and key learnings.Sample 1: Basic Map VisualizationThis sample demonstrates the basic functionality of loading and displaying a map using OSGEarth. It covers the steps involved in initializing the library, loading a map layer, and rendering it on the screen. Key takeaways include understanding the core components of OSGEarth and how to set up a basic map visualization pipeline.Sample 2: Interactive Map NavigationThis sample extends the basic map visualization by adding interactive navigation features such as panning, zooming, and rotating the map. It highlights the ease with which OSGEarth integrates user interaction and demonstrates how to handle map navigation events programmatically.Sample 3: Geospatial Queries and AnalysisThis sample demonstrates the geospatial querying and analysis capabilities of OSGEarth. It covers techniques such as querying for features within a specific area, calculating distances and areas, and performing spatial joins. This sample highlights the power of OSGEarth in geospatial data analysis and processing.Sample 4: Integration with External Data SourcesThis sample demonstrates how OSGEarth can be integrated with external data sources such as shapefiles, KML files, and databases. It covers the steps involved in loading and displaying data from these sources within the OSGEarth framework. Thissample is essential for those looking to integrate their own geospatial data into OSGEarth applications.Sample 5: Advanced Visualization TechniquesThis sample showcases advanced visualization techniques such as layer styling, symbology, and animations using OSGEarth. It covers techniques to enhance the visual appeal of maps and improve user engagement. Developers interested in creating visually appealing and engaging maps will find this sample particularly useful.In conclusion, the samples in the OSGEarth source code provide a comprehensive overview of the library's capabilities and offer valuable insights into its usage. From basic map visualization to advanced visualization techniques and integration with external data sources, these samples cover a wide range of scenarios and use cases. Developers and enthusiasts alike can benefit from exploring these samples and applying the knowledge gained to their own geospatial visualization projects.中文版详解OSGEarth源代码中的各个Sample案例OSGEarth是一个开源的地理空间可视化库,提供了一系列示例案例来展示其功能。

osgEarth数据加载及组织解析

osgEarth数据加载及组织解析

osgEarth数据加载及组织解析1.osgEarth的数据加载流程由前文可知,用户可以使用osgEarth自己的earth文件,简单指定各种数据源,而不用关心数据如何渲染,便能在三维球上显示各种地形数据。

本节,将会解读osgEarth如何解析earth文件,利用用户提供的数据源,来构建三维球上的各种地形。

图3.1所示是加载数据的整体流程,本节将就这四个步骤进行具体的解读。

图3.1 osgEarth数据加载整体流程1.1 读取earth文件osgEarth继承了OSG的插件机制,所以osgEarth提供了专门读取earth文件的osgdb_earth插件。

通过查找并调用此插件,达到读取earh文件的目的。

图3.2展示了查找读取earth插件的具体流程:图3.2 查找读取earth插件的具体流程这个具体流程展示了osgEarth如何找到读取earth的插件——osgdb_earth.dll。

这个流程其实也是osg插件机制中的具体流程,主要在read函数中根据文件后缀名查找读写插件,查找策略见前文,找到插件后便根据文件名构建ReadNodeFunctor的仿函数,然后调用doRead()函数来具体读取。

无论读取earth文件,还是读取影像数据、高程数据或一般的文字,都是这样一个流程,通过找到具体插件后调用插件里的doRead函数。

在osgdb_earth中,主要就是将earth文件中的内容转换成后面构造map需要的conf对象。

图3.3展示了一个包含标签比较全面的earth文件,图3.4为转换后的conf结果结构图:图3.3 普通earth文件内部代码图3.4 earth文件转换后的conf对象结构图如图所示,将earth文件中的标签转换成就conf对象就是将标签语言的嵌套转换成父子关系,然后每个对象包含自己的属性值。

1.2 构建map由上一节可知,通过earth插件,将earth文件中的数据属性,渲染属性等构成conf对象。

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

osgEarth数据加载及组织解析1.osgEarth的数据加载流程由前文可知,用户可以使用osgEarth自己的earth文件,简单指定各种数据源,而不用关心数据如何渲染,便能在三维球上显示各种地形数据。

本节,将会解读osgEarth如何解析earth 文件,利用用户提供的数据源,来构建三维球上的各种地形。

图3.1所示是加载数据的整体流程,本节将就这四个步骤进行具体的解读。

图3.1 osgEarth数据加载整体流程1.1 读取earth文件osgEarth继承了OSG的插件机制,所以osgEarth提供了专门读取earth文件的osgdb_earth 插件。

通过查找并调用此插件,达到读取earh文件的目的。

图3.2展示了查找读取earth插件的具体流程:图3.2 查找读取earth插件的具体流程这个具体流程展示了osgEarth如何找到读取earth的插件——osgdb_earth.dll。

这个流程其实也是osg插件机制中的具体流程,主要在read函数中根据文件后缀名查找读写插件,查找策略见前文2.1.3的OSG插件机制,找到插件后便根据文件名构建ReadNodeFunctor的仿函数,然后调用doRead()函数来具体读取。

无论读取earth文件,还是读取影像数据、高程数据或一般的文字,都是这样一个流程,通过找到具体插件后调用插件里的doRead函数。

在osgdb_earth中,主要就是将earth文件中的内容转换成后面构造map需要的conf对象。

图3.3展示了一个包含标签比较全面的earth文件,图3.4为转换后的conf结果结构图:图3.3 普通earth文件内部代码图3.4 earth文件转换后的conf对象结构图如图所示,将earth文件中的标签转换成就conf对象就是将标签语言的嵌套转换成父子关系,然后每个对象包含自己的属性值。

1.2 构建map由上一节可知,通过earth插件,将earth文件中的数据属性,渲染属性等构成conf对象。

接下来,就是根据这些属性,来构造一个包含影像、高程、模型等的map。

图3.5展示了osgEarth 构造map流程:图3.5 通过属性构造map对象由图可知,此时构造的map,并没有实际的读取数据,仅仅是将从earth文件中获取的conf 对象属性进行分类,构造了一个逻辑map,主要指定了map包含什么图层,每个图层的名字、数据源和所需driver插件。

1.3 构建mapNode这一步将是加载数据中的重点。

在这一步,将会通过上一步获取的map对象及options对象,调用具体的driver插件,来构成地形节点。

构建mapNode的过程可以分为两步,第一步是在osgViewer(OSG最基本的场景图形浏览器,osgEarth最基本的场景图形浏览器是在osgViewer基础上改进的osgEarth_viewer,其主要是加载组织地形数据等,核心渲染功能还是osgViewer)渲染前的预处理,主要在地形引擎的preInitialize()中完成。

osgEarth2.4的默认地形引擎为MpterrainEngineNode,所以一般是在MpterrainEngineNode::preInitialize()中完成第一步。

这其中,主要完成地形节点的初步框架构建,及底图影像的加载。

如图3.6所示图3.6 构建mapNode第一步逻辑第二步便是在osgviewer开始渲染,创建漫游,相机开始添加场景时,进行后续的添加,并使用TileKey管理构建四叉树组织。

此时根据视点范围及距离,通过OSG的PagedLOD分页机制,动态调度选择加载区域瓦片节点。

关于数据如何按四叉树进行组织,分页LOD如何动态调度选择加载数据将在后文进行详细解读。

此处主要关注构建mapNode的流程和最后mapNode的逻辑节点树。

如图3.7所示。

图3.7 构建mapNode第二步逻辑下面便来解读每一步的详细流程。

图3.8 构建mapNode第一步详细流程图3.8展示的是构建mapNode第一步的详细流程,最后生成包含了地形节点、模型节点和overlay模型节点的子树。

其中,在根据map的空间参考坐标系设置TerrainEngineNode的坐标系和椭球模型时,map对象有获取profile属性。

Profile是确定数据的空间信息重要属性,其如何确定数据的空间信息将在后文进行详细说明。

若map对象的options中没有设置profile,默认将其中的SRS(空间参考系)设置为WGS84坐标系。

图3.9 构建mapNode第二步详细流程图3.9展示的是构建mapNode第二步详细流程。

此处只挑出了重点的函数,主要创建了第一层的TileKey和根节点。

每个rootNode包含四叉树索引组织的key,包括范围信息等,然后还包含这块范围的各种数据,所以,创建根节点的createRootNode将是我们下面分析的重点。

图3.10 创建根节点的逻辑流程图3.10展示的是创建根节点的逻辑流程。

由图可知,归纳为做了两件事,第一件即创建了包含影像图层、高程图层及TileKey的瓦片模型,第二件事是将这个模型以PagedLOD形式加入根节点。

其中TileKey包含模型的空间信息,能正确确定数据在三维球上的正确位置,且以四叉树形式被组织起来。

PagedLOD即分页LOD,能根据视点范围动态选择加载哪些节点。

这两个技术将在后文详细解读。

图3.11 createRootNode流程图 3.11展示了创建根节点的详细流程。

其中,在创建影像图层和高程图层中,相应的execute函数里分别调用了createImage()函数和createHeightfields()函数,这两个函数根据数据中的option属性,调用了相应driver的插件,而进行了实际具体的数据读取。

如果需要写自己的插件读取影像数据或高程数据,则必须重载这两个函数。

图3.12 GeoLocator的具体空间信息处理GeoLocator确定了瓦片模型的位置,如图3.12所示,主要通过key获取地形块的范围,然后再移至相应的位置。

综上,一个包含地形节点、模型节点和overlay模型节点的mapNode便被正确的构成了。

其中最主要的便是地形节点的构造,它包含的影像图层、高程图层等都以四叉树结构进行组织,以分页LOD模式进行动态调度渲染。

更为详细的流程图,可参见附件中的osgEarth数据读取流程。

1.4 加载节点至场景树最后的加载节点至场景树很简单,就是创建一个group节点,将mapNode包含进去,然后这个将加入osgViewer的渲染流程。

具体代码如下:osg::Group* root = new osg::Group();root->addVhild(mapNode.get());在程序运行时,因为视野的改变,osgEarth会利用PagedLOD动态的加载卸载瓦片节点,而会重复上面构造mapNode的步骤来构造新的节点。

2.空间信息组织编码及位置确定上一节内容解读了osgEarth 如何将earth 文件读入,并利用其中的XML 标签构建地形结点从而达到渲染目的。

这一节则主要解读如何将数据放入三维球正确的位置并进行组织。

简单而言,关于位置属性的记录,osgEarth 就只是利用任何地形数据都会包括的投影坐标系及经纬度信息进行定位。

这样的优点在于,无论何种数据源的数据,只要能最后确定一定的投影参考系,便能保证被放置在正确的位置,数据之间保持正确的拓扑关系和逻辑关系。

而相关的投影系转换,标准,表达方式,国际上规定也十分明确。

一个统一的标准,使osgEarth 能接纳更多源的数据。

本节,就会首先介绍osgEarth 相关的空间参考系,然后再解读其具体如何确定数据在三维球上的位置。

同时,由前文可知,osgEarth 通过创建用四叉树结构的分层瓦片缓存,可以快速加载大地形数据。

最后,将解读其生成的缓存文件编码。

2.1 空间参考系osgEarth 中,每个map 对象,layer 对象,tilesource 对象,均有决定其所属空间位置的属性profile 。

Profile 中,包含记录对象空间参考系的属性SRS 。

通常,我们用经纬度来表示数据的位置。

可是不同空间参考系中,相同的经纬度不一定表示一个地方。

所以,osgEarth 中每个数据对象都会包含空间参考系属性SRS 。

一个空间参考系,包含以下内容[15]: ①坐标系类型 ②水平基准 ③高程基准 ④投影下面也就这四个方面对osgEarth 的空间参考系进行介绍。

(一)坐标系类型osgEarth 支持三种地图的显示方法。

①地理坐标系类型展示的方式便是三维数字地球,使用角度制的经纬度。

代表包括WGS84坐标系和NAD83坐标系。

②投影坐标系类型展示的方式是将三维区域投影到二维(X,Y )平面。

代表包括UTM 投影,墨卡托投影。

① ECEF即Earth Centered Earthh Fixed 。

是osgEarth 自定义的坐标系类型,是一种三维的笛卡尔坐标系,原点定于球心,X 轴指向纬度/经度(0,0),Y 轴指向纬度/经度(0,-90),Z 轴指向北极。

其坐标系体系同OSG 的世界坐标系体系是一致的,如图3.13所示。

图3.13 ECEF(二)水平基准面根据地理空间测量方法的不同,基准面便会不同。

同一个地方也可以有不同的基准标准。

Z 轴Y 轴 X 轴因为地球并不是一个完美的球体,甚至不是一个完美的椭球,所以为了拟合地球的形状,特定的地方会选用特定的水平基准面。

一般而言,在北美会使用WGS84和NAD83,在欧洲会使用ETR89。

在osgEarth中,默认的水平基准面是WGS84,如果没有为数据设定相应的水平基准信息,osgEarth会默认设置WGS84的相关参数。

(三)高程基准面高程基准是为了测量高程的。

有许多类的高程基准,osgEarth支持两种高程基准:大地基准面(基于椭球)和大地水准面(基于地球上一些高程点)。

osgEarth内置以下四种高程基准面:①Geodetic(大地基准面)。

此为默认高程基准面,osgEarth使用水平基准面椭球来作参考。

②EGM84 geoid(大地水准面)③EGM96 geoid(大地水准面),一般被称为MSL,在DTED和KML数据中会被使用④EGM2008 geoid(大地水准面)在osgEarth中,默认的高程基准面是geodetic高程水准面,海拔依据HAE(height above ellipsoid)来测量。

(四)投影SRS同时也提供投影信息,即将三维点投影到二维平面的方法。

因为osgEarth依赖GDAL和OGR两个工具库,所以它能支持上千种投影方法,如有名的UTM投影,兰伯特投影。

相关文档
最新文档