影像切片
尝试使用Java切tif影像,解决重采样的问题,本文空间参考使用经纬度坐标系。
瓦片存储原理
1、地图横向为-180度到180度,纵向为90度到-90度;
2、切片原点-180,90;
3、图片大小为256*256;
4、级别1全球范围纵向1张图片,横向2张图片,分辨率为180/256=0.703125;
5、每增加1个级别,分辨率缩小2倍,横纵向图片扩大2倍,总图片数量扩大4倍;20级别分辨率转换成米约是0.2m
6、任意经纬度所在的行列号计算公式为2l-1*(x+180)/180,2l-1*(90-y)/180,向上取整;
7、根据行列号,计算图片左上角的经纬度公式为-180+column*180*21-l,90-row*180*21-l;
8、每级别全球所需图片数量,横向上图片数2l,纵向上图片数2l-1;
下图为天地图img_c在级别1的2个瓦片
任意范围瓦片
假设给定范围为(120,121,30,31),计算在20级别下的纵向和横向上的跨越行列号
20级别的分辨率为0.703125*2-19
120度所在的行号为219*(120-(-180))/180=873813.3333,向上取整为873813
121度所在行号为219*(121-(-180))/180=876726.04444,向下取整减1为876726
31度所在的行号为219*(90-31)/180=171849.9555,向上取整为171849
121度所在行号为219*(90-30)/180=174762.6666,向下取整减1为174762
GeoTools切片思路
通过裁剪和重采样来实现,具体思路如下:
1、计算影像在各个级别下的跨越行列号,确定需要切片的瓦片列表
2、通过裁剪和重采样生成各瓦片
3、如果瓦片的分辨率小于影像分辨率,重采样方法使用平均值
4、如果瓦片的分辨率大于影像分辨率,重采样方法使用最邻近值