IRasterLayer pRasterLayer = (IRasterLayer)ArcMap.Document.FocusMap.get_Layer(0); IGeoDataset pGeoDataset = (IGeoDataset)pRasterLayer; IGeoReference pGeoReference = (IGeoReference)pRasterLayer; if(pGeoReference.CanGeoRef == false) { return; } //基準参照点(現在のマップ座標系に基づいたラスタ レイヤの特定セルのポイント) IPointCollection fromPoints = new MultipointClass(); fromPoints.AddPoint(pGeoDataset.Extent.LowerLeft); fromPoints.AddPoint(pGeoDataset.Extent.UpperLeft); fromPoints.AddPoint(pGeoDataset.Extent.UpperRight); fromPoints.AddPoint(pGeoDataset.Extent.LowerRight); IEnvelope pEnvelope = ArcMap.Document.ActiveView.Extent; //基準参照点(現在のマップ座標系に基づいた対応するポイント) IPointCollection toPoints = new MultipointClass(); toPoints.AddPoint(pEnvelope.LowerLeft); toPoints.AddPoint(pEnvelope.UpperLeft); toPoints.AddPoint(pEnvelope.UpperRight); toPoints.AddPoint(pEnvelope.LowerRight); pGeoReference.Warp(fromPoints, toPoints, 0); //移動 pGeoReference.Rectify(@"D:\Workspace\raster.img", "IMG"); //レクティファイ(第引数:フォーマット)
IGeoReference を利用したラスターデータセットのジオリファレンス
2016/9/1 (木)