没有合适的资源?快使用搜索试试~ 我知道了~
osgEarth学习笔记
5星 · 超过95%的资源 需积分: 44 69 下载量 58 浏览量
2011-12-03
12:21:42
上传
评论 1
收藏 458KB PDF 举报
温馨提示
试读
13页
osgEarth的开发入门级介绍! 主要介绍了,。earth文件的使用。
资源推荐
资源详情
资源评论
osgEarth 学习笔记
作者:oman 邮箱:gelu110@126.com
注:内容基本来源于官方网站,本人水平有限,如有不妥或错误还
请指正,转载请注明出处
1. 通过 earth 文件创建图层时,可以指定多个影像数据源和多个高程数据源,
数据源的顺序决定渲染顺序,在 earth 文件中处于最前的在渲染时处于最底
层渲染;所以如果有高低精度不同的影响数据或者高程数据,在创建 earth
文件时要将粗精度的数据放在上方 xml 节点,高精度的放在其下面的节点;
2. osgEarth 自带多种驱动器,不同的驱动器驱动不同的数据源,自己也可以扩
展驱动器读取相应的数据;
3. 可以通过 profile 属性指定数据的投影方式或者数据分页方式以及地理空间
延展;osgEarth 通过 profile 创建数据四叉树,每个四叉树节点数据瓦片通过
TileKey 类来标示;一个地形数据能否正常工作要看创建它的驱动器是否能够
创建和对应 profile 兼容的数据瓦片;比如,如果要生成地球数据,就需要指
定 global-geodetic 或者 global-mercator profile,相应的数据源要能够在这种
profile 下生成相应的地形数据;
4. 通过 earth 文件,最基本的也是最主要的功能是我们可以指定生成地形的坐
标属性(地理坐标或投影坐标)影像数据、高程数据、矢量数据、模型数据、
以及缓冲位置,通过这些基本要素就可以轻易生成我们想要的地形;
5. osgEarth 只能使用 16 或 32 位的高程数据源;
6. 如果直接使用原始的影像、高程以及矢量数据,可以用 GDAL 驱动器,在这
种情况下需要注意几个性能的问题。第一,将数据源预先进行坐标变换,变
换为目标地形坐标,否则 osgEarth 会对源数据进行坐标投影变换,这将降低
数据的加载及处理速度。如果预先已经将数据源进行正确的坐标变换,
osgEarth 就可以省略这个步骤,从而提高其实时处理速度;第二,预先对影
像数据进行瓦片处理,比如 tiff 格式的影像数据,它是逐行扫描存储的,而
osgEarth 是每次读取一个瓦片数据,如果预先对影像数据进行瓦片处理,在
动态过程中 osgEarth 就不需要每次读取整个大块影像数据然后提取其需要的
瓦片数据,而可以直接读取相应的瓦片数据即可,这样就大大提高了瓦片数
据的读取速度。可以通过 gdal_translate 工具对影像数据进行瓦片处理;第三,
创建金字塔数据集可以使 osgEarth 读取数据更加高效,可以用 gdaladdo 工具
创建金字塔数据集;总之,要想提高 osgEarth 的处理效率,就要预先创建高
效的数据瓦片结构,除了用 gdal、vpb 等工具外,也可以通过 osgEarth 的数
据缓冲机制创建预处理的瓦片数据集。比如我们可以创建一个如下的 earth
文件将数据缓冲到指定的目录:
<map name="bluemarble" type="geocentric" version="2">
<!--Add a reference to the image -->
<image name="bluemarble" driver="gdal">
<url>c:/data/bluemarble.tif</url>
</image>
<options>
<!--Tell osgEarth to cache the tiles in a TMS format-->
<cache type="tms">
<path>c:/osgearth_cache</path>
<!--Tell osgEarth to cache the tiles to JPG to save
disk space-->
<format>jpg</format>
</cache>
</options>
</map>
这种缓冲方式只能缓冲在执行该文件时浏览过的地形数据,而不能自动缓冲
所有的数据,要想自动缓冲所有的数据,就需要用到 osgEarth 自带的一个
工具,osgearth_seed, 通过 osgearth_seed --max-level 7
bluemarble.earth 将数据全部缓冲到指定位置,通过这种方式缓冲后,我们
就拥有了一个完整的 TMS 数据源,我们可以直接通过文件目录的方式访问该
数据源,也可以将该数据源拷贝到我们自己的本地 web 服务目录下。详情见
http://osgearth.org/wiki/DataPreparation。除此之外还可以用 MapTiler 以及
TileCache 工具创建瓦片数据源,用它创建的瓦片数据源也可以直接在
osgEarth 下使用;
7. 可以通过两种方式将 osgEarth 集成到我们自己的 osg 应用程序中,第一种就
是直接通过 earth 文件的方式,直接将 earth 文件读入作为一个 osg 节点加入
场景即可,另外一种方式就是通过 osgEarth 的 API。通过 API 的方式大体需
要以下几个步骤:创建 map 对象——创建影像数据层——创建高程数据层—
—将影像数据层以及高程数据层加入到 map 对象——根据前面创建的 map
对象创建 mapNode 节点——将 mapNode 节 点 加 入 到 场 景 ; 示例见
http://osgearth.org/wiki/DevelopersGuide。无论是通过 earth 文件创建的地形
还是通过 API 创建的地形,我们都可以在运行时对其进行修改,如果是用
earth 文件创建的地形,需要先找到该 earth 文件对应的 mapNode,通过以
上两种方式创建的 mapNode,我们可以对地形进行修改操作,如添加新的影
像、高程数据,移除特定的影像、高程数据,重新制定影像、高程数据的顺
序等;
8. 如果我们的地形用的是地心坐标系,可以会碰到当相机距离地面非常近的时
候地形被裁减掉的问题,要解决这个问题我们可以通过设置相机的远近裁剪
比率或者创建 AutoClipPlaneHandler 来解决。AutoClipPlaneHandler 可以动态监视相机,
当相机距离地面很近时动态调整相机的近裁减面;
9. 在地形上放置模型对象时可以使用 ObjectPlacer 类,通过该类可以直接通过经纬度坐标
进行模型的放置操作;
10. osgEarth 的目标是能够在 osg 中开发基于地理信息的应用,能够方便地浏览地理模型数
据,能够与开放标准的地理数据兼容;osgEarth 渲染地形的模式分为两种:实时在线模
式(直接使用原始数据渲染生成)以及离线模式(数据预处理成瓦片数据或地形数据库);
11. osgEarth 使用于以下几种情况的应用:快速方便地运行地形地图数据;使用开放标准的
地形地图数据,如 WMS、TMS、WCS 等;通过 Web 服务的方式集成本地存储的地形地
图数据;系统要求以瘦客户端的方式运行;经常处理随着时间改变的数据;集成商业数
据;
12. 在使用 osgEarth 自带的漫游器 EarthManipulator 时,如果给漫游器设置一个矩阵或者给
漫游器设置一个 TetherNode 然后再解除,然后再移动相机位置,这时计算出的 Center
会有一个跳跃,然后才正常,造成这个问题的原因是给漫游器设置了参考节点(通过
SetNode 函数)造成的,设置了参考节点后漫游器要根据参考节点重新计算 Center 和相
机姿态等参数,在以上两种情况发生时,在重新计算 Center 时出现了偏差,要想避免
以上两种情况下造成的移动异常,可以不让相机结合参考节点重新计算 Center,即将
Pan 函数中的 recalculateCenter 注释掉即可;
13. Map 的类型分为 geocentric 和 projected 两种类型,即地心方式和投影方式,要建立圆
形地球就用 geocentric 类型,用这种类型如果要制定 profile,只有 geodetic(WGS84 投影)
和 mercator(墨卡托投影)两种模式;
14. Earth 文件详解:
<!—type 属性可以是 geocentric 和 projected 两种模式,分别对应地心坐标
系和平面投影坐标系,默认是地心坐标模式。Version 是 osgEarth 的主版本号,
必须有版本号-->
<map name=”myMap” type=”geocentric”/”projected” version=”2”>
<!—定义地图各图层的运行时显示属性-->
<options>
<!—定义数据缓冲机制,缓冲类型有三种,tms、sqlite3 以及 tile cache,默
认是 tms,如果将 cache_only 设为 true,osgEarth 将只加载缓冲的数据,不
加载任何非缓冲的数据,默认是 false-->
<cache type=”tms”/”sqlite3”/”tilecache” cache_only=”false”>
<!—缓冲数据存放目标目录,适用于 tms 以及 tilecache 两种类型,直接指
定缓冲目录-->
<path>C:/myCache</path>
<!—缓冲数据存放目标文件,适用于 sqlite3,指定数据库文件名-->
<path>C:/myCache.db</path>
<!—缓冲目标文件类型,适用于 tms 以及 tilecache 两种类型,如果没有指定
类型,将默认用影像数据或高程数据的类型-->
<format>jpg</format>
<!—tms 类型,仅适用于 tms 类型,注意如果该类型是 google,索引就是反
的-->
<tms_type>google</tms_type>
<!—缓冲文件最大值,单位是 MB,不知道该属性是否只是适用于 sqlite3,
有待确定-->
<max_size>300</max_size>
</cache>
剩余12页未读,继续阅读
资源评论
- steven_young0072012-06-05虽然已经从别的渠道得到这个资料了,但还是评价一下,这个东东是目前比较不错的osgearth资料,值得初学者学习,earth的一些基本操作使用都有介绍
道法自然
- 粉丝: 4
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
- 贪心算法介绍及代码示例讲解
- CR13SP35MSI64 Crystal 水晶报表运行组件最后版本64位
- 图像分类数据集:玉米叶是否感染分类数据集(2分类,包含训练集、验证集)
- 小U商城.zip
- 高光谱图像计算机视觉分类图像预处理工具集,包含去除图片无关背景,数据增强,生成标签文件等功能
- (顶刊复现)基于配电网韧性提升的应急移动电源预配置和动态调度(下)-MPS动态调度
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功