以下笔记来自《osgEarth用户手册》
CSDN分享:
目录
4.2.1 Feature Geometry model driver 要素几何模型驱动
4.2.2 Feature Stencil model driver 特征模板模型驱动
1. osgEarth 安装
1.1 获取源码
github下载osgEarth源码比较方便
1.2 准备工作
准备osgEarth依赖的第三方库:
- GDAL
- CURL
- GEOS
- SQLite 3
- LibZIP
1.3 编译osgEarth
略
1.4 测试
输入osgviewer sample.earth进行简单测试
2. 建立地图
即:如何以.earth为后缀的xml文件定义自己的地图
Earth File的核心作用是指明以下三点:
- 创建的地图类型:geocentric(三维球面的)或projected(二维投影的),前者呈现在三维球体上,后者投影到二维平面。
- 你可使用的图像、三面图elevation、矢量和模型数据
- 你的数据缓存在哪里
包含大量Earth File文件的github库地址:
2.1 地图文件元素索引
2.1.1 简单图像文件
加载遥感影像,使用iamge标签,驱动(driver)选择gdal
<!--一个简单的earth文件的例子-->
<map name="Sample-2-1-1" type="geocentric" version="2">
<!-- type有两种选项 geocentric 和 projected
version表明osgearth为2.x版本 -->
<!--全球影像图-->
<image name="GlobeImage" driver="gdal">
<!--driver为使用的驱动,加载影像,选择gdal-->
<!--下面的url是读取影响的路径-->
<url>D:/Project/OSG_project/05-《osgEarth用户手册》笔记/data/image/global.tif</url>
</image>
<!--文件缓存-->
<options>
<cache type="filesystem">
<path>./FileCache2-1-1</path>
</cache>
</options>
</map>
如果只是图片,不加高程的话,显示出来不是一个正圆型,能看出棱角:
如果map的type属性是projected:
<!--一个简单的earth文件的例子-->
<map name="Sample-2-1-1" type="projected" version="2">
<!--
type有两种选项 geocentric 和 projected
version表明osgearth为2.x版本
-->
<!--全球影像图-->
<image name="GlobeImage" driver="gdal">
<!--driver为使用的驱动,加载影像,选择gdal-->
<!--下面的url是读取影响的路径-->
<url>D:/Project/OSG_project/05-《osgEarth用户手册》笔记/data/image/global.tif</url>
</image>
<!--文件缓存-->
<options>
<cache type="filesystem">
<path>./FileCache2-1-1</path>
</cache>
</options>
</map>
2.1.2 多重图像层
osgEarth 支持多个图像源的地图。
在使用earth文件创建地图时,在基础层上覆盖高分辨率的插图,要添加多个图像到earth file文件中,只需要添加多个image标签即可。
注意:earth文件下面的图像会覆盖上面的图像。
2.2 高程数据
添加高程数据,使用标签heightfield,驱动为gdal。
<!--加载高程数据-->
<map name="Sample-2-2" type="geocentric" version="2">
<!--全球影像图-->
<image name="GlobeImage" driver="gdal">
<url>D:/Project/OSG_project/05-《osgEarth用户手册》笔记/data/image/global.tif</url>
</image>
<!--全球高程图-->
<heightfield name="GlobeHeightfield" driver="gdal">
<url>D:/Project/OSG_project/05-《osgEarth用户手册》笔记/data/heightfield/30m.tif</url>
</heightfield>
<!--文件缓存-->
<options>
<cache type="filesystem">
<path>./FileCache2-1-1</path>
</cache>
</options>
</map>
加上高程数据后,基本变成正圆:
同理,将map的类型type改为projected,地图在二维平面上出现。图略
注:在《osgEarth用户手册》中,加载高程的标签是elevation,驱动driver为gdal,但是我的30m高程数据加载后报错,可能和高程数据类型有关,不过我没有验证。
3. .Earth文件索引
osgEarth <map>标签
osgEarth能够识别和读取两种方式的地图:
- Geocentric:如果地球类型属性是地心的geocentric,圆形的round,球体的globe,或者是地球earth,那么这个地球就是以一个完整的地球形状的。注意:只有以地心为坐标的墨卡托模型才能被呈现成一个地心坐标的球体。
- Projected:如果地球类型属性projected或者平面(flat)的,那么这个地图就是一个平面投影的样子,这个类型的map在投影坐标系统中是非常有用的,比如UTM投影。而墨卡托模型和整个地球也可以用这种类型的map来表现,比如2D制图应用程序。
<map>标签属性:
name | 可读的地图名称 | 可选 |
type | 读取地图类型:geocentric(默认),projected | 可选 |
version | 制定地球文件格式的版本,使用osgEarth 2.x,版本号就是 "2" | 必选 |
子元素:
<options> | 配置地图和所有地形引擎的运行时行为 | 可选 |
<images> | 图像图层 | 可选 |
<heightfield> | 高程图层 | 可选 |
<model> | 一个模型的数据源(例如:功能,数据,外部模型) | 可选 |
<overlay> | 地形褶状几何层 | 可选 |
<Compositor>使用方法
<compositor元素>:这个元素控制osgEarth使用符合图像层
目前还没有使用到,暂时略过,后续补充...
4. Driver 驱动
4.1 图像/高程图像驱动器
这些驱动程序生成哪些构成地图的图片或者高程数据。
AGGlite | 将数据栅格化为若干图像片 |
ArcGIS | 从ESRI ArcGIS 地图服务系统或者网上ArcGIS服务器读取图像数据 |
Composite | 融合多层<image>层使之成为一个本地图像层 |
GDAL | 支持大量格式读取地理参考的影响和高程数据,包括GeoTIFF |
OSG | 使用OpenSceneGraph图片reader / writers 来读取那些非地理参考的图像,比如jpeg格式的图片 |
TileCache | ……(不太懂这个驱动,手册上面也没解释清楚) |
TileService | 从NASA WorldWind TileService库读取图像片 |
TMS | 从OSGeo TileMapService库读取图像片 |
WCS | 从OGC Web Coverage Service读取图像片 |
WMS | 从OSG Web Mapping Service读取图像片 |
VPB | 融合VitualPlanetBuilder地形 |
4.2 模型驱动 Model Drivers
模型驱动程序采集数据,并创建地形上可房子的节点。这些节点可能是“褶皱”层,也可能是三维模型
Feature GEometry | OSG的几何渲染数据 |
Feature Stencil | 使用模板缓冲技术褶皱化地形矢量数据 |
Simple | 家在外部模型,并放置在场景图中 |
4.2.1 Feature Geometry model driver 要素几何模型驱动
建立矢量特征数据的OSG几何形状
这个驱动可以简单的将矢量数据嵌入到几何图形中,同时会有一个可选择的高度偏移,这样你可以将几何图形放置于地形上。
结构:
<feature> | 描述要渲染的要素 | 必选 |
<style> | 定义矢量数据的整体外观 | 可选 |
<class> | 定义一个或多个要素类的功能分类 | 可选 |
<max_triangle_size> | 指定一个三角形的最大长度,角度。仅适用于geocentric型地图。可控制几何图形的细分曲面,使大型的形状可以更好地符合地球椭球的形状 | 默认="5.0" |
<feature_name> | 每个功能的解析式解析,名称在osg::Geometry中设置 |
<map name="Feature Geometry Demo" type="geocentric">
<image name="world" driver="gdal">
<url>../data/world.tif</url>
</image>
<model name="states" driver="feature_geom">
<!--配置OGR要素驱动来读取shapefile文件-->
<features name="states" driver="ogr">
<url>../data/usa.shp</url>
</features>
<!--对每个几何要素设置属性:名称-->
<feature_name>[name]</feature_name>
<!--外观细节-->
<style type="text/css">
states {
stroke: #ffff00;
stroke-width: 1.0;
altitude-offset: 1000;
}
</style>
</model>
<lighting>false</lighting>
</map>
4.2.2 Feature Stencil model driver 特征模板模型驱动
使用模板缓冲技术褶皱化地形矢量数据
结构:
此驱动支持以下子元素:
<features> | 描述要渲染的特点 | 必选 |
<style> | 定义矢量数据的整体外观 | 可选 |
<class> | 定义一个或多个要素类的功能分类 | 可选 |
<extrusion_distance> | 设定模板卷在各个方向上的距离 | 可选,默认="300000" |