本来希望从GlobeMapper中生成切片直接加载到WorldWind中,但是没有成功!所以想比较一下和dstile生成的瓦片到底有什么区别?

所以这才第一次生成并加载了影像瓦片。貌似和GlobeMapper中的区别是路径的命名方式不一样!GlobeMapper是xx_xx.jpg,文件夹也都是两位。而dstile或者说WW需要的是4位,即xxxx_xxxx.jpg。

——2013.10.24-------------------------------------

今天又测试了一下,证明了GlobeMapper中制作的切片确实可以在WorldWind中显示。

跟踪代码QuadTile类Initialize()中Texture newTexture = QuadTileSet.ImageStores[i].LoadFile(this);

调用了WorldWind.ImageStore类中的Texture LoadFile(QuadTile qt)方法,内部string filePath = GetLocalPath(qt);

调用public virtual string GetLocalPath(QuadTile qt)。

 public virtual string GetLocalPath(QuadTile qt)
{
if(qt.Level >= m_levelCount)
throw new ArgumentException(string.Format("Level {0} not available.",
qt.Level)); string relativePath = String.Format(@"{0}\{1:D4}\{1:D4}_{2:D4}.{3}",
qt.Level, qt.Row, qt.Col, m_imageFileExtension);
//string relativePath = String.Format(@"{0}\{1}\{1}_{2}.{3}",
// qt.Level, qt.Row, qt.Col, m_imageFileExtension);
//string relativePath = String.Format(@"{0}\{1}\{1}_{2}.{3}",
// 3, 25, 53, m_imageFileExtension);
if(m_dataDirectory != null)
{
// Search data directory first
string rawFullPath = Path.Combine( m_dataDirectory, relativePath );
if(File.Exists(rawFullPath))
return rawFullPath;
} // If cache doesn't exist, fall back to duplicate texture path.
if (m_cacheDirectory == null)
return m_duplicateTexturePath; // Try cache with default file extension
string cacheFullPath = Path.Combine( m_cacheDirectory, relativePath );
if(File.Exists(cacheFullPath))
return cacheFullPath; // Try cache but accept any valid image file extension
const string ValidExtensions = ".bmp.dds.dib.hdr.jpg.jpeg.pfm.png.ppm.tga.gif.tif"; string cacheSearchPath = Path.GetDirectoryName(cacheFullPath);
if(Directory.Exists(cacheSearchPath))
{
foreach( string imageFile in Directory.GetFiles(
cacheSearchPath,
Path.GetFileNameWithoutExtension(cacheFullPath) + ".*") )
{
string extension = Path.GetExtension(imageFile).ToLower();
if(ValidExtensions.IndexOf(extension)<)
continue; return imageFile;
}
} return cacheFullPath;
}

可以看到相对路径的组织方式,

string relativePath = String.Format(@"{0}\{1:D4}\{1:D4}_{2:D4}.{3}",qt.Level, qt.Row, qt.Col, m_imageFileExtension);

于是我干脆写死路径,出现如下结果。

GlobeMapper和dstile生成的瓦片并无本质区别,只是路径,或者说文件的命名方式有差别。只要能正确组织数据就可以加载。

GlobeMapper默认生成的xml文件估计是用于服务器端发布的吧。我还是从新写的影像的配置文件,和dstile一样。

[World Wind学习]21.影像切割的更多相关文章

  1. [转]World Wind学习总结一

    WW的纹理,DEM数据,及LOD模型 以earth为例 1. 地形数据: 默认浏览器纹理数据存放在/Cache/Earth/Images/NASA Landsat Imagery/NLT Landsa ...

  2. Asp.NetCore源码学习[2-1]:日志

    Asp.NetCore源码学习[2-1]:日志 在一个系统中,日志是不可或缺的部分.对于.net而言有许多成熟的日志框架,包括Log4Net.NLog.Serilog 等等.你可以在系统中直接使用这些 ...

  3. OpenCV学习(21) Grabcut算法详解

    grab cut算法是graph cut算法的改进.在理解grab cut算之前,应该学习一下graph cut算法的概念及实现方式. 我搜集了一些graph cut资料:http://yunpan. ...

  4. JavaSE入门学习21:Java面向对象之接口(interface)(二)

    一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...

  5. Asp.NetCore源码学习[2-1]:配置[Configuration]

    Asp.NetCore源码学习[2-1]:配置[Configuration] 在Asp. NetCore中,配置系统支持不同的配置源(文件.环境变量等),虽然有多种的配置源,但是最终提供给系统使用的只 ...

  6. 深度学习遥感影像(哨兵2A/B)超分辨率

    这段时间,用到了哨兵影像,遇到了一个问题,就是哨兵影像,它的RGB/NIR波段是10米分辨率的,但是其他波段是20米和60米的,这就需要pansharpening了,所以我们需要设计一种算法来进行解决 ...

  7. Python学习--21天Python基础学习之旅(Day08-Day21)

    Day08: Chapter 11 异常 1.1如果try代码块中代码运行没有问题,则运行时跳过except代码块.(有异常时执行except中的代码,没有异常则跳过except中的代码) try-e ...

  8. Python学习--21天Python基础学习之旅(Day01、Day02)

    21天的python基础学习,使用<Python从入门到实践>,并且需要手敲书中的code,以下为整个学习过程的记录. Day01: 安装python时要选择复选框 Add Python ...

  9. python学习(21) smtp发送邮件

    原文链接: https://www.jianshu.com/p/369ec15bfe22 本文介绍python发送邮件模块smtplib以及相关MIME模块.smtplib用于生成邮件发送的代理,发送 ...

随机推荐

  1. OpenCV学习:播放avi视频文件

    #if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...

  2. 在WCF中实现双工通信

    双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息.基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合.双工MEP又具 ...

  3. 5、Cocos2dx 3.0游戏开发找小三之測试例子简单介绍及小结

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 測试例子简单介绍 Cocos2d-x ...

  4. Linux buffer/cache异同

    buffers与cached 1).异同点 在Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从磁盘读入到这些内存中,然后再将数据分发给应用程序:当需要往文件中 ...

  5. ScrollView拉到尽头时出现阴影的解决方法

    <code class="hljs markdown has-numbering" style="display: block; padding: 0px; col ...

  6. lua常用操作

    1 .Lua生成随机数: Lua 生成随机数需要用到两个函数:math.randomseed(xx), math.random([n [, m]]) 1. math.randomseed(n) 接收一 ...

  7. qq邮箱发送,mail from address must be same as authorization user

    由于邮箱发送的邮箱账号更换,所以重新测试.结果一直出错,要不就是请求超时,要不就是未授权. 用smtp 开始的时候,端口使用495,结果是请求超时. 后来改成25,结果是未授权. 再后来听人说,有一个 ...

  8. jquery单选框radio绑定click事件实现和是否选中的方法

    使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项: 1. ...

  9. mac下搭建cocos2d-x2.2.1版本android编译环境教程

    首先我们先以引擎2.2.1为例子来新建一个TestJni的项目,来作为测试例. 创建方式如下: python create_project.py -project TestJni -package o ...

  10. linux下php安装

    nginx中配置php:  http://www.111cn.net/sys/nginx/64044.htm