码迷,mamicode.com
首页 > 其他好文 > 详细

影像裁剪一些体会

时间:2014-08-04 17:32:18      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   2014   

最近一直在做影像裁剪的功能:

从影像服务器上下载影像(WebMercator投影),服务接口需要传入WGS84坐标的多边形,返回WebMercator影像。

客户端需要进行影像的转换成高斯投影(Beijing54为例)

 

bubuko.com,布布扣

认为WGS84地理坐标到北京54高斯投影在存在七参数的情况下是可逆变换。

WGS84地理坐标到WebMercator投影是投影变换是可逆变换。这有点让人难以理解!

 

想得到的影像是一个矩形区域,如果直接传人WGS84地理坐标系下的矩形,裁剪出来的影像是没有黑边的。

但是根据Beijing54高斯投影坐标系下划分的矩形,反算到WGS84坐标再传入得到的影像是有黑边的。即使这时候把得到的影像重新转换成Beijing54投影坐标系。

影像不同基准面进行转换基本上都会产生黑边。

因此在得到了Beijing54投影后的影像后还需要进行再一次的裁剪。这时候就用范围裁剪就好了,AE只需要改变IRasterProps的有关属性就能实现,实在太强大了。

bubuko.com,布布扣
 1 //基准变换并重裁剪
 2         public static void DatumTransformation(IRasterDataset2 rasterDataset, ISpatialReference outSR, IGeoTransformation geoTransformation, string path, IPolygon Vectorlayer)
 3         {
 4             IRaster raster = rasterDataset.CreateFullRaster();
 5             IRasterProps rasterProps = (IRasterProps)raster;
 6             double cellSize = rasterProps.MeanCellSize().X;//注意先获取象素大小
 7             rasterProps.SpatialReference = outSR;//设置完新的空间参考之后会改变象素大小,因此要重采样
 8             IGeoTransformationOperationSet operationSet = new GeoTransformationOperationSetClass();
 9             operationSet.Set(esriTransformDirection.esriTransformForward, geoTransformation);
10             operationSet.Set(esriTransformDirection.esriTransformReverse, geoTransformation);
11 
12             IRaster2 raster2 = (IRaster2)raster;
13             raster2.GeoTransformations = operationSet;//基准面转换
14             IEnvelope envelop = new EnvelopeClass();
15             envelop.XMin = Vectorlayer.Envelope.XMin;
16             envelop.YMin = Vectorlayer.Envelope.YMin;
17             envelop.XMax = Vectorlayer.Envelope.XMax + cellSize;
18             envelop.YMax = Vectorlayer.Envelope.YMax + cellSize;
19             rasterProps.Extent = envelop;//再次裁剪,此时会改变象素大小,默认保证行列数不变
20             IRasterGeometryProc ReSample = new RasterGeometryProcClass();
21             ReSample.Resample(rstResamplingTypes.RSP_NearestNeighbor, cellSize, raster);//重采样
22             IRasterBandCollection bandCol = (IRasterBandCollection)raster;
23             int nBandCount = bandCol.Count;
24             if (nBandCount == 3)
25             {
26                 int[] nodata = { 0, 0, 0 };
27                 rasterProps.NoDataValue = nodata;
28             }
29             else
30             {
31                 rasterProps.NoDataValue = 0;
32             }
33             ISaveAs saveas = (ISaveAs)raster;
34             saveas.SaveAs(path, null, "JPEG");
35         }
View Code

 

 

 

影像裁剪一些体会,布布扣,bubuko.com

影像裁剪一些体会

标签:style   blog   http   color   os   io   for   2014   

原文地址:http://www.cnblogs.com/yhlx125/p/3890512.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!