www.pudn.com > Buffer.rar > Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
namespace Buffer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ButtonBuffer_Click(object sender, EventArgs e)
{
//第一步,得到地图的空间坐标系,及获得feature cursor对象
IMap pMap;
IFeatureLayer pFeatureLayer;
IFeatureCursor pFcursor;
ISpatialReference pSpatialReference;
pMap = this.axMapControl1.Map;
pSpatialReference = pMap.SpatialReference;
pFeatureLayer = (IFeatureLayer)pMap.get_Layer(0);
pFcursor = pFeatureLayer.Search(null, false);
//第二步,定义输出的设置
IWorkspaceName pBufWSName;
IDatasetName pBufDatasetName;
IFeatureClassName pBufFCName;
pBufFCName = new FeatureClassNameClass();
pBufDatasetName = (IDatasetName)pBufFCName;
pBufWSName = new WorkspaceNameClass();
pBufWSName.WorkspaceFactoryProgID = "esriDataSourceFile.ShapeFileWorkspaceFactory";
pBufWSName.PathName=@"F:\gisdeveloperdata\chap9";
pBufDatasetName.WorkspaceName = pBufWSName;
pBufDatasetName.Name = "BuffResultC";
//第三步,进行缓冲处理
IFeatureCursorBuffer2 pFeatureCursorBuffer2;
pFeatureCursorBuffer2 = new FeatureCursorBufferClass();
pFeatureCursorBuffer2.FeatureCursor = pFcursor;
pFeatureCursorBuffer2.Dissolve = true;
pFeatureCursorBuffer2.ValueDistance = 200;
pFeatureCursorBuffer2.BufferSpatialReference = pSpatialReference;
pFeatureCursorBuffer2.DataFrameSpatialReference = pSpatialReference;
pFeatureCursorBuffer2.SourceSpatialReference = pSpatialReference;
pFeatureCursorBuffer2.TargetSpatialReference = pSpatialReference;
pFeatureCursorBuffer2.Buffer(pBufFCName);
//第四步,创建输出层并加入到当前地图中
IName pName;
IFeatureClass pBufFC;
IFeatureLayer pBufFL;
pName = (IName)pBufFCName;
pBufFC = (IFeatureClass)pName.Open();
pBufFL = new FeatureLayerClass();
pBufFL.FeatureClass = pBufFC;
pBufFL.Name = "BufferResult";
pMap.AddLayer((ILayer)pBufFL);
}
}
}