zoukankan      html  css  js  c++  java
  • IRasterGeometryProc,一个可以控制raster对象的接口

    栅格影像加载到MapControl中以后,如果想更改影像的旋转、扭曲等形状,接口IRasterGeometryProc是个不错的选择。

    Remarks

    The RasterGeometryProc manipulates only Raster objects, not RasterBand or RasterDataset object. This is because the Raster is transient, as are the effects of the RasterGeometryProc. This means that any transformation will also go away when the Raster object goes out of scope.

    To keep the transformed data for later use, you must persist the transformation using Register or Rectify. If used on a Raster contained within a RasterLayer, processing performed by this object will be visible when the display is refreshed.

    Although Merge and Mosaic take Raster object as an input, any changes to the Raster object before calling the two methods will be ignored.

     

    该接口只能操作Raster对象,所以针对已经加载的RasterLayer对象,可以通过Rasterlayer.Raster获取到Raster对象,然后做相应的操作。比如如下代码,使用Warp方法修改形状

    IWorkspaceFactory pWSF = new RasterWorkspaceFactoryClass();
    IWorkspace pWS = pWSF.OpenFromFile(workSpace, 0);

    IRasterWorkspace pRWS = pWS as IRasterWorkspace;
    IRasterDataset pRasterDataset = pRWS.OpenRasterDataset(file.Name);
    IRasterLayer pRasterLayer = new RasterLayerClass();
    pRasterLayer.CreateFromDataset(pRasterDataset);

    IEnvelope envelope = pRasterLayer.AreaOfInterest;
    IPointCollection originPC = new PolygonClass();
    originPC.AddPoint(envelope.LowerLeft);
    originPC.AddPoint(envelope.UpperLeft);
    originPC.AddPoint(envelope.UpperRight);
    originPC.AddPoint(envelope.LowerRight);

    IPointCollection targetPointCollect = new PolygonClass();
    List<CPoint> targetPointList = ImageProcessHandler.GenerateFourCoordinateList(centerPoint, entity.ImageProcessConfig.CamaraParameter, true);

    IRaster raster = pRasterLayer.Raster;
    IRasterGeometryProc rasterGeometryProc = new RasterGeometryProcClass();
    rasterGeometryProc.Warp(originPC, targetPointCollect, esriGeoTransTypeEnum.esriGeoTransSpline, raster);

    axMapControl.AddLayer(pRasterLayer);
    axMapControl.Refresh();

    Members

     Description
    Method Clip Clips the input raster based on the specified envelope.
    Method Flip Flips the input raster.
    Read-only property IsPixelToMapTransSimple Indicates if the transformation of pixel to map is simple.
    Method LeastSquareFit Computes a least squares fit for the input control points.
    Method Merge Merges the input rasters into a single dataset.
    Method Mirror Mirrors the input raster.
    Method Mosaic Mosaics the input rasters into a single dataset.
    Method PointsTransform Transforms a set of points based upon the transformation being applied to the input raster.
    Method ProjectFast Projects the input raster using a single polynomial fit to compute the adjustment between coordinate systems.
    Method Rectify Persists the input raster to a new dataset of the specified format.
    Method Register Outputs the current transformation properties to the dataset header or auxilliary file.
    Method Resample Resamples the input raster to a new cellsize.
    Method ReScale Scales the input raster by the specified x and y scale factors.
    Method Reset Resets the input raster to its native coordinate space.
    Method Rotate Rotates the input raster around the specified pivot by an angle specified in degrees.
    Method Shift Shifts the input raster by deltaX and deltaY map units.
    Method TwoPointsAdjust Performs a Hermite transformation on the input raster based upon the 2 input control point pairs.
    Method Warp Warps the input raster based upon the input control points using the transformation type specified.

  • 相关阅读:
    C#三种模拟自动登录和提交POST信息的实现方法
    关于c#调用C++代码的一些应用的体会
    c# 路径空格---ProcessStartInfo参数问题
    用C#调用Matlab图像处理自制QQ游戏2D桌球瞄准器
    使用C#开发纽曼USB来电小秘书客户端小结
    C#传递参数到线程的n个方法
    C# : 操作Word文件的API
    c# 导出Excel
    使用C#: 自动切换鼠标的左右手习惯
    Linux 系统的文件类型
  • 原文地址:https://www.cnblogs.com/yingrufeng/p/9999715.html
Copyright © 2011-2022 走看看