遥感图像快速传输算法
来源:互联网 发布:unix与windows 编辑:程序博客网 时间:2024/05/20 17:28
遥感技术的飞速发展为人们提供了大量的地球空间信息,然而制作地图缓存即切图过程本身是一项非常耗时的工作,按传统的切缓存做法,存在着影像数据不能及时上线使用,即时效性差;切片制作过程频繁、难以管理,需要强大的硬件支持;海量的切片数据容易造成磁盘碎片化等问题,因而如何解决瓦片碎片化问题是解决遥感图像快速传输的关键。
设想这样的场景:如果空间上相邻的瓦片在磁盘上的存储也是相关的,那么不仅能够很好的解决磁盘碎片的问题,同时还可以降低对磁盘的seek,优化遥感影像的传输。众所周知,Hilbert曲线是目前空间自相关性最好的空间填充曲线,如果以该曲线作为索引对遥感瓦片进行索引,从而实现遥感瓦片的重组织。
德国数学家David Hilbert发现了一种曲线,首先把一个正方形等分成四个小正方形,依次从西南角的正方形中心出发往北到西北正方形中心,再往东到东北角的正方形中心,再往南到东南角正方形中心,这是一次迭代,如果对四个小正方形继续上述过程,往下划分,反复进行,最终就得到一条可以填满整个正方形的曲线,这就是Hibert曲线,其大致过程如下图所示:
Hibert曲线生成过程
实现步骤:
1、首先对遥感瓦片进行切片;
2、利用游程编码对瓦片进行压缩处理;
3、利用Hilbert曲线进行瓦片重编码;
3、根据编码对瓦片进行线性化存储,并在索引文件中记录编码位置;
部分实现代码:
1、Hilbert编码代码:
//rotate/flip a quadrant appropriatelyvoid rot(int n, int *x, int *y, int rx, int ry) { if (ry == 0) { if (rx == 1) { *x = n - 1 - *x; *y = n - 1 - *y; } //Swap x and y int t = *x; *x = *y; *y = t; }}int xy2d(int n, int x, int y) { int rx, ry, s, d = 0; for (s = n / 2; s>0; s /= 2) { rx = (x & s) > 0; ry = (y & s) > 0; d += s * s * ((3 * rx) ^ ry); rot(s, &x, &y, rx, ry); } return d;}//convert d to (x,y)void d2xy(int n, int d, int *x, int *y) { int rx, ry, s, t = d; *x = *y = 0; for (s = 1; s<n; s *= 2) { rx = 1 & (t / 2); ry = 1 & (t ^ rx); rot(s, x, y, rx, ry); *x += s * rx; *y += s * ry; t /= 4; }}
0 0
- 遥感图像快速传输算法
- 遥感图像
- 快速图像细化算法
- 遥感图像分类综述
- 遥感图像彩色合成
- 遥感图像处理流程
- 遥感图像处理流程 .
- 遥感图像预处理
- 遥感图像处理
- 遥感图像处理流程
- 遥感图像去黑边
- 遥感图像滤波处理
- 遥感图像处理步骤
- 遥感图像读取
- 遥感图像存储格式
- 遥感图像几何校正
- 遥感图像融合
- 遥感成像原理与遥感图像特征
- HDU 5029(三维正方形)
- DirectX9 投影
- poj1004
- LeetCode (12) Path Sum (二叉树路径和判断)
- 剑指offer面试28
- 遥感图像快速传输算法
- 算法题8
- VC颜色区分故障
- 07-图5. 旅游规划(25)
- 计算机体系结构Computer Architecture
- TextView 设置成一条分割线
- 垃圾回收
- Python中的装饰器(语法糖)
- 排序算法