WorldWind源码剖析系列:地形访问器类TerrainAccessor
地形访问器类TerrainAccessor
地形访问器类TerrainAccessor提供了对地形(高程)Terrain (elevation)访问的各种接口interface,是NltTerrainAccessor类的基类。类TerrainAccessor和NltTerrainAccessor封装了通过行列,或者经纬度值读取Cachd\Earth\SRTM对应层次BIL文件的高程信息的函数GetElevationAt等直接返回该点的高度值。该类类图如下。
基类TerrainAccessor提供的主要处理方法简要描述如下:
protected string m_name; //地形模型名称
protected double m_north; //地形北部边界
protected double m_south; //地形南部边界
protected double m_east; //地形东部边界
protected double m_west; //地形西部边界
public abstract float GetElevationAt(double latitude, double longitude, double targetSamplesPerDegree);抽象函数通过给定的经度、纬度和在该位置引用帧的分辨率精度来来获取浮点型高程数值。如果磁盘上没有可用的瓦片则返回0。派生类必须实现该函数。
public virtual float GetElevationAt(double latitude, double longitude) 虚函数通过给定的经度和纬度来获取浮点型高程数值。如果磁盘上没有可用的瓦片则返回0。内部实际是调用了上面的抽象函数。派生类可以根据自己的需要重载该函数。
public virtual TerrainTile GetElevationArray(double north, double south, double west, double east, int samples)虚函数通过给定的地形区域的边界包围盒和分辨率来获取高程数组。返回代表指定地形高程的瓦片。派生类可以根据自己的需要重载该函数。
Nlt地形访问器类NltTerrainAccessor
派生类NltTerrainAccessor用来读取NLT存储在BIL文件中的地形/高程数据。
其中,NLT是NASA Learning Technologies的首字母缩写。提供的主要字段、属性和方法简要描述如下:
public static int CacheSize = 100;//缓冲区大小
protected TerrainTileService m_terrainTileService; //地形瓦片服务
protected WmsImageStore m_wmsElevationSet; //WMS影像存储
protected TerrainAccessor[] m_higherResolutionSubsets; //地形访问器
protected Hashtable m_tileCache = new Hashtable();//瓦片缓冲的哈希表
public override float GetElevationAt(double latitude, double longitude, double targetSamplesPerDegree)
public override float GetElevationAt(double latitude, double longitude)
public override TerrainTile GetElevationArray(double north, double south, double west, double east,int samples)
以上三个成员方法重载父类的同名方法,功能不再赘述,具体请查阅代码。
派生类NltTerrainAccessor内嵌的类public class TerrainTileCacheEntry代表地形瓦片缓冲条目。
WorldWind源码剖析系列:地形访问器类TerrainAccessor的更多相关文章
- WorldWind源码剖析系列:影像图层类ImageLayer
影像图层类ImageLayer 影像图层类ImageLayer将单张影像作为纹理映射到星球表面上去.源影像必须是平面笛卡尔坐标系.该类的类图如下. 影像图层类ImageLayer提供的主要字段.属性和 ...
- WorldWind源码剖析系列:影像存储类ImageStore、Nlt影像存储类NltImageStore和WMS影像存储类WmsImageStore
影像存储类ImageStore 影像存储类ImageStore提供了计算本地影像路径和远程影像影像URL访问的各种接口,是WmsImageStore类和NltImageStore类的基类.当划分完层次 ...
- WorldWind源码剖析系列:表面影像类SurfaceImage
表面影像类SurfaceImage描述星球类(如地球)表面纹理影像.该类的类图如下. 表面影像类SurfaceImage包含的主要的字段.属性和方法如下: string m_ImageFilePath ...
- WorldWind源码剖析系列:表面瓦片类SurfaceTile
表面瓦片类SurfaceTile描述星球类(如地球)表面纹理影像的瓦片模型.其类图如下. 表面瓦片类SurfaceTile包含的主要的字段.属性和方法如下: int m_Level;//该瓦片所属金字 ...
- WorldWind源码剖析系列:下载请求类DownloadRequest
下载请求类DownloadRequest是各种下载请求的抽象基类,先派生出网络下载请求类WebDownloadRequest,再派生出地理空间下载请求类GeoSpatialDownloadReques ...
- WorldWind源码剖析系列:四叉树瓦片类QuadTile
四叉树瓦片类QuadTile提供了对影像和地形数据的四叉树访问模型.该类的类图如下. 四叉树瓦片类QuadTile提供的主要字段.属性和方法简要描述如下: public QuadTileSet Qua ...
- WorldWind源码剖析系列:网络下载类WebDownload
网络下载类WebDownload封装了对请求的瓦片进行网络下载的相关操作.该类使用了两个委托类型和一个枚举类型. 该类的类图如下. 网络下载类WebDownload各个字段和属性的含义说明如下: st ...
- WorldWind源码剖析系列:绘制参数类DrawArgs
绘制参数类DrawArgs主要对绘制时需要的对象如:设备对象Microsoft.DirectX.Direct3D.Device.Microsoft.DirectX.Direct3D.Font字体对象. ...
- WorldWind源码剖析系列:数学引擎类MathEngine
PluginSDK中的MathEngine类是密封类.不可继承,主要完成通用的数学计算功能.由于按平面展开层层划分,所以在WW里用到一个row,col的概念,类MathEngine封装了从行/列到经/ ...
- WorldWind源码剖析系列:代理助手类ProxyHelper
代理助手类ProxyHelper通过平台调用的互操作技术封送了若干Win32结构体和函数.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: 内嵌类型WINHTTP_AUTOPROX ...
随机推荐
- ESB企业服务总线
ESB是企业服务总线(Enterprise Service Bus)的缩写,是中间件技术与Web Service等技术结合的产物,也是SOA系统中的核心基础设施.ESB就是一个服务的中介,形成服务使用 ...
- POJ3304(KB13-C 计算几何)
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15335 Accepted: 4862 Descrip ...
- 【 js 基础 】【 源码学习 】 深浅拷贝
underscore的源码中,有很多地方用到了 Array.prototype.slice() 方法,但是并没有传参,实际上只是为了返回数组的副本,例如 underscore 中 clone 的方法: ...
- js实现获取URL参数
function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*) ...
- short、int、long、float、double区别
一.基本数据类型的特点,位数,最大值和最小值.1.基本类型:short 二进制位数:16 包装类:java.lang.Short 最小值:Short.MIN_VALUE=-32768 (-2的15此方 ...
- js将对象数组按照自定义规则排序
javascript对一个对象数组进行自定义规则排序,对象中有两个字段. 按照对象中一个字段a的值从小到大规则排序, 效果如下: 排序前: [0]:a=9,b=3 [1]:a=33,b=7 [2]:a ...
- JavaSE——多线程实现的两种方式
Thread类: 创建新执行线程有两种方法. 一种方法是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例.例如,计算大于某一规定值的质 ...
- Linux awk命令常见使用方法介绍
Linux awk命令常见使用方法介绍 By:授客 QQ:1033553122 awk运行方式有三种,其中常用的为命令行方式 awk [-F field_separator] '{patter ...
- Android 如何执行java命令
android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了 ...
- Unity Profiler连接Android真机调试
Profiler在Editor模式就可以观看性能消耗,但是毕竟电脑配置高,跟手机真机环境还是有区别.实际开发中的优化还是推荐用真机测试. 因为IOS一般比Android手机的配置高,在Android平 ...