首页 > 代码库 > 影像裁剪一些体会
影像裁剪一些体会
最近一直在做影像裁剪的功能:
从影像服务器上下载影像(WebMercator投影),服务接口需要传入WGS84坐标的多边形,返回WebMercator影像。
客户端需要进行影像的转换成高斯投影(Beijing54为例)
认为WGS84地理坐标到北京54高斯投影在存在七参数的情况下是可逆变换。
WGS84地理坐标到WebMercator投影是投影变换是可逆变换。这有点让人难以理解!
想得到的影像是一个矩形区域,如果直接传人WGS84地理坐标系下的矩形,裁剪出来的影像是没有黑边的。
但是根据Beijing54高斯投影坐标系下划分的矩形,反算到WGS84坐标再传入得到的影像是有黑边的。即使这时候把得到的影像重新转换成Beijing54投影坐标系。
影像不同基准面进行转换基本上都会产生黑边。
因此在得到了Beijing54投影后的影像后还需要进行再一次的裁剪。这时候就用范围裁剪就好了,AE只需要改变IRasterProps的有关属性就能实现,实在太强大了。
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 = http://www.mamicode.com/{ 0, 0, 0 };27 rasterProps.NoDataValue =http://www.mamicode.com/ nodata;28 }29 else30 {31 rasterProps.NoDataValue = http://www.mamicode.com/0;32 }33 ISaveAs saveas = (ISaveAs)raster;34 saveas.SaveAs(path, null, "JPEG");35 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。