AE二次开发缓冲区分析详细步骤.pdf
文本预览下载声明
缓冲区分析实现
11地理 2 吴秀春 2014年 5月 15日
1、添加 form窗体,添加 2个 groupbox控件,3个 textbox控件,2个 combobox控件,3个
button控件,3个 label控件。控件名称以及 text属性需要修改,在下面的表里面。
具体控件 name和 text属性如下:(如果为空则意味着不用修改)
控件类型 控件 name属性 控件 text属性 备注
Groupbox 改为空
Groupbox 信息
textbox txtBufferDistance 0.1
textbox txtOutputPath ReadOnly属性设置
为 true,即为只读
textbox txtMessages Mutilline属性设置为
true,即允许多行
ReadOnly属性设置
为 true,即为只读
Srcollbars属性设置
为 Vertical,即在右边
显示滚动条
combobox cboLayers
combobox cboUnits Item属性需要添加内
容,详细的在表下面
button btnBuffer 缓冲区分析
button btnOutputLayer 存放位置
button btnCancel 关闭
label lbllayers 选择图层:
label labeldistance 缓冲距离:
label labeloutput 输出图层:
Combobox控件 cboUnits的 Item属性添加的内容为(可以自定义修改,此处为单位)
Unknown
Inches
Points
Feet
Yards
Miles
NauticalMiles
Millimeters
Centimeters
Decimeters
Meters
Kilometers
DecimalDegrees
2、代码部分
(1)首先添加命名空间,在这个功能里面需要用到的命名空间如下:
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Geoprocessing;
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.AnalysisTools;
using System.Runtime.InteropServices;
using System.IO;
(2)添加定义的全局变量
[DllImport(user32.dll)]
private static extern int PostMessage(IntPtr wnd,
uint Msg,
IntPtr wParam,
IntPtr lParam);
private IMapControl4 MapControl;
private IHookHelper m_hookHelper = null;
private const uint WM_VSCROLL = 0x0115;
private const uint SB_BOTTOM = 7;
(3)为窗口入口函数添加参数,并添加如下代码:
public 缓冲区分析(IHookHelper hookHelper)
{
InitializeComponent();
m_hookHelper = hookHelper;
MapControl = m_hookHelper as IMapControl4;
}
(4)点击窗体,添加load函数里面的代码
private void 缓冲区分析_Load(object sender, EventArgs e)
{
if (null == m_hookHelper || null == m_hookHelper.Hook || 0 ==
m_hookHelper.FocusMap.LayerCount)
return;
//加载地图中所有要素到combo
IEnumLayer layers = GetLayers();
layers.Reset();
ILayer layer = null;
while ((layer = layers.Next()) != null)
{
cboLayers.Items.Add(layer.Name);
}
//默认选择第一个图层
if (cboLayers.Items.Count 0)
cboLayers.SelectedIndex = 0;
string tempDir = System.IO.Path.GetTempPath();
txtOutputPath.Text = System.IO.Path.Combine(te
显示全部