WorldWind源码剖析系列:影像存储类ImageStore、Nlt影像存储类NltImageStore和WMS影像存储类WmsImageStore

影像存储类ImageStore

影像存储类ImageStore提供了计算本地影像路径和远程影像影像URL访问的各种接口,是WmsImageStore类和NltImageStore类的基类。当划分完层次的网格,填充完网格的坐标信息后,将先调用LoadFile()函数,若返回NULL,则先下载后渲染,如果非NULL则以返回的Texture直接进行渲染,具体如下:QuadTileSet.ImageStores[i].LoadFile(this),实际调用的是lmageStore.cs文件的LoadFile(QuadTile qt)先通过stringfilePath=GetLocalPath(qt)得到本地该影像数据应该保存的路径,找到该路径和文件就加载。该类的类图如下。

 

影像存储类基类ImageStore提供的主要字段、属性和方法简要描述如下:

protected string     m_dataDirectory;//影像数据目录

protected double m_levelZeroTileSizeDegrees = 36; //金字塔影像的零级瓦片大小度数

protected int m_levelCount = 1; //细节影像层级数

protected string m_imageFileExtension; //源影像文件扩展名

protected string m_cacheDirectory; //本图层影像数据缓冲子目录

protected string m_duplicateTexturePath; //复制纹理路径

protected string m_serverlogo; //影像数据服务器Logo

public virtual bool IsDownloadableLayer//是否是可下载的图层

虚方法public virtual string GetLocalPath(QuadTile qt)先根据所要请求的四叉树瓦片qt中所包含的瓦片层级、行号、列号和源影像文件扩展名m_imageFileExtension构建相对路径,然后,判断如果影像数据目录m_dataDirectory不为空,则将其和相对路径连接起来构建绝对路径并返回;如影像数据目录为空,则判断影像数据缓冲子目录m_ cacheDirectory为空,返回由缓冲子目录和相对目录构建的绝对路径;然后用有效扩展名字符串const string ValidExtensions = ".bmp.dds.dib.hdr.jpg.jpeg.pfm.png.ppm.tga.gif.tif";来验证缓冲子目录下的文件是否为所支持的有效文件,如果是则返回其路径。

虚方法protected virtual string GetDownloadUrl(QuadTile qt) 根据所要请求的四叉树瓦片qt的相关信息返回其URL字符串。需要被子类重载,以控制实现影像是被如何下载的。

虚方法public virtual void DeleteLocalCopy(QuadTile qt)删除本地缓冲的瓦片拷贝。

虚方法protected virtual void ConvertImage(Texture texture, string filePath)将影像转换为DDS格式的压缩纹理文件。

方法public Texture LoadFile(QuadTile qt)载入所要请求的四叉树瓦片qt所对应的影像,并返回纹理对象。

方法void QueueDownload(QuadTile qt, string filePath)根据所要请求的四叉树瓦片qt及其所在的绝对路径,将这一请求转换为GeoSpatialDownloadRequest请求对象,并将该请求对象加入到下载队列中。

Nlt影像存储类NltImageStore

Nlt影像存储类类NltImageStore用来读取NLT风格存储在BIL文件中的地形/高程数据。 其中,NLT是NASA Learning Technologies的首字母缩写。

string m_dataSetName;//数据集名称

string m_serverUri;//请求服务的URL字符串

public override bool IsDownloadableLayer属性重载父类同名属性

构造函数public NltImageStore(string dataSetName,string serverUri)仅仅完成字段初始化

protected override string GetDownloadUrl(QuadTile qt) 重载父类同名虚方法,具体实现请查阅源码

WMS影像存储类WmsImageStore

WMS影像存储类WmsImageStore用来获取遵循OGC规范的WMS服务。其提供的主要字段、属性和方法简要描述如下:

string m_serverGetMapUrl;//描述WMS服务的URL字符串

string m_wmsLayerName; //WMS服务的图层名称

string m_wmsLayerStyle; //WMS服务的图层风格

string m_imageFormat; //WMS服务的图层影像格式

string m_version; //WMS服务的版本号

int  m_textureSizePixels = 512; //WMS服务的影像纹理大小,用所含像素数衡量

public override bool IsDownloadableLayer属性重载父类同名属性

protected override string GetDownloadUrl(WorldWind.Renderable.QuadTile qt) 重载父类同名虚方法,具体实现请查阅源码

原文地址:https://www.cnblogs.com/rainbow70626/p/4556747.html