小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于C#的AE二次開發(fā)之影像數(shù)據(jù)的裁切(掩膜)

 印度阿三17 2020-01-12

我的開發(fā)環(huán)境為ArcGIS Engine 10.2與Visual studio2010,主地圖名稱為axMapControl1,如果變動則需要修改(注意相關(guān)事件的添加與動態(tài)鏈接庫的引入)。

  • 效果預(yù)覽

裁剪前裁剪后

實(shí)現(xiàn)代碼

  • 引用類庫

using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.ADF;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.GeoAnalyst;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.SpatialAnalyst;
using ESRI.ArcGIS.Geometry;
  • 代碼實(shí)現(xiàn)

private void 影像裁剪ToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (axMapControl1.get_Layer(0) is IFeatureLayer && axMapControl1.get_Layer(1) is IRasterLayer)
    {
        IFeatureLayer pFeatureLayer = axMapControl1.get_Layer(0) as IFeatureLayer;//輸入裁剪矢量圖層
        IRasterLayer pRasterLayer = axMapControl1.get_Layer(1) as IRasterLayer;//輸入裁剪柵格圖層
        IPolygon pPoly = pFeatureLayer.FeatureClass.GetFeature(0).Shape as IPolygon;//設(shè)置裁剪要素
        rasterClip(pRasterLayer, pPoly, "rasterClip0");//調(diào)用裁剪方法
        //強(qiáng)提醒,完成裁剪
        MessageBox.Show("裁剪完成!");
    }
}

/// <summary>
/// 掩膜處理
/// </summary>
/// <param name="pRasterLayer">輸入裁剪柵格圖層</param>
/// <param name="clipGeo">輸入裁剪矢量要素</param>
/// <param name="FileName">輸出文件名稱</param>
public void rasterClip(IRasterLayer pRasterLayer, IPolygon clipGeo, string FileName)
{
    IRaster pRaster = pRasterLayer.Raster;//獲取柵格文件
    IRasterProps pProps = pRaster as IRasterProps;
    object cellSizeProvider = pProps.MeanCellSize().X;
    IGeoDataset pInputDataset = pRaster as IGeoDataset;
    IExtractionOp pExtractionOp = new RasterExtractionOp() as IExtractionOp;
    IRasterAnalysisEnvironment pRasterAnaEnvir = pExtractionOp as IRasterAnalysisEnvironment;
    pRasterAnaEnvir.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref cellSizeProvider);
    object extentProvider = clipGeo.Envelope;//獲取矢量圖形范圍
    object snapRasterData = Type.Missing;
    pRasterAnaEnvir.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extentProvider, ref snapRasterData);
    IGeoDataset pOutputDataset = pExtractionOp.Polygon(pInputDataset, clipGeo as IPolygon, true);
    IRaster clipRaster;  //裁切后得到的IRaster
    if (pOutputDataset is IRasterLayer)
    {
        IRasterLayer rasterLayer = pOutputDataset as IRasterLayer;
        clipRaster = rasterLayer.Raster;
    }
    else if (pOutputDataset is IRasterDataset)
    {
        IRasterDataset rasterDataset = pOutputDataset as IRasterDataset;
        clipRaster = rasterDataset.CreateDefaultRaster();
    }
    else if (pOutputDataset is IRaster)
    {
        clipRaster = pOutputDataset as IRaster;
    }
    else
    {
        return;
    }
    //保存裁切后得到的clipRaster,直接保存為tif影像文件
    IWorkspaceFactory pWKSF = new RasterWorkspaceFactory();
    //保存裁剪后的影像到本地路徑下
    string filepath = @"c:\dat\";
    
    //判斷文件夾是否存在,如果不存在新建文件夾
    if (false == System.IO.Directory.Exists(filepath))
    {
        //創(chuàng)建文件夾
        Directory.CreateDirectory(filepath);
    }
    IWorkspace pWorkspace = pWKSF.OpenFromFile(filepath, 0);
    ISaveAs pSaveAs = clipRaster as ISaveAs;
     //輸出要素類的名稱,文件后綴可以設(shè)置
    pSaveAs.SaveAs(FileName ".tif", pWorkspace, "TIFF");
}
  • 導(dǎo)出圖像格式

格式名稱字符串引用
Imagine"IMAGINE Image"
TIFF"TIFF"
GRID"GRID"
JPEG"JPG"
JP2000"JP2"
BMP"BMP"
PNG"PNG"
GIF"GIF"
PCI Raster"PIX"
X11 Pixmap"XPM"
PCRaster"MAP"
Memory Raster"MEM"
HDF4"HDF4"
BIL"BIL"
BIP"BIP"
BSQ"BSQ"
Idrisi Raster Format"RST"
ENVI Raster Format"ENVI"
Geodatabase Raster"GDB"

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多