
ArcEngine开发篇(原创).docx
5页ArcEngine 开发篇——建立范例程序并读取属性数据开发环境:ArcEnginelO.O (AE9.0只需更改几个引用信息即可),win7 64位(32位通用,在win7开发时,请点击项目属性,然后选择生成,将目标平台更改为x86), VS2008+C#本篇介绍如何在VC2008环境下,用C#建立ArcEngine范例程序并可以读取属性数据1 建立范例程序项目裝空£): 貶①: .NET FramBwofk 3.5 ▼配同Visual CfiWindcwsWebSsE^S-OfficeArcGIS.Desktop Add-InsjLVisual Studio53灯也歸 Library (ArcCatalogJ 嗣0臼强 Library (ArcGIobe)JPIClass Library (ArcMapI 型Cln豁 Librairy (ArcSccnc)Neisse Library8 (Desktop) Cansole Applicstion CDesktopl^1 Windows Application (Desktop) Cl ass Libreary (Engine)^Console AjppJicstion (Engine^) 诵 GlobeConhol Applicaaion養 IM np 匚orWcil AppJ k aEian 总1 Wind d-ws Appli cat io 仃(E ngi n&)Server O bject ExtenciDnEReportingWCFWorkflcw呈迹目卿~1囚担垂就4話”,A 2D map display ArcGIE fcrgira application e^bedding tba MapConbiol笆谕型;蘇方參祢(Ml:如上图,新建项目-Visual C#-ArcGIS-Extending Arcobjects,然后在右边选择 MapControl Application,范例程序即建立完成。
点击视图-解决方案管理器,双击MainForm.cs,即可看到刚才建立的程序,如下图MwiFa^mci'~8 b~Ts^*匚疋・即亡C-O-j阳向・*r rTWHATp] l^iiw:aa5lnpLSW «KE 严 ArcGlS 10 .0 Engine Tool bar匚dctrcd*UT隔n底花綱沖匚的tF和TArtfBES 10.0 Engine TS Name: a:i(TOCControllVI為Form.歼 MairtFOrrtt.U [说计]”制応Enginu Controls Applic^itiontl T口■DlS^ripContairiH' 站 ToofTipL TrackBerTH博:T PropertyGrid ® RadioQuTton 为 Ri-chTartBox 3 SavefileDiala^ X- SerialPortServiceCDnlroller HI Spli(Container dl* Splitte* I_ Stalu&Strip _ Tab匚sIfdI :T ableLijyDut-'anrl S Text曲H 巒 Timer SS TaoISJ&rip如上图,在公共容器中选择工具条控件ToolStrip,然后拖到右边的地图控件上边,然后点击 工具条左边的新建按钮,新增一个按钮,我们取名为GetAttBtn,右键按钮,选择属性,然 后在属性框中的最上面(Name)更改为GetAttBtn,在下面的Text更改为“点击显示属性” 如下图,然后双击按钮,为其添加响应函数。 RightTo LeftAutol Fal&e8s Size 33, 22T extAlign MiddleCenterTeitDi recti on Horizontal点击显示屈性TextEB* -Sh咽("显示鳳性功能丘衣維护---■■);priuate uoid GetfittBtn_Click(object sender T EuentArgs e)Tmill manR-Rfi-latif lmanR-Rt^frrrpT在上面的响应函数中我们暂时只添加一个对话框测试测试效果如下图報 ArcEngine Control 即讪创佃“S3下面我们将真正实现显示属性先将对话框注释掉添加ArcGIS引用,选择项目-添加引用,在.NET选项卡中选择ESRI.ArcGIS.Geodatabase,如 下图,然后在代码最上面(类外)添加一句 usingESRI.ArcGIS.Geodatabase;项目詛件S称版本运行时踊径ESRJ.ArcGIS. Display10.0.0.0¥2.0.50727D:\Program Files.ESRl.ArcGKDisplayU]10.0.0.0V2.0.50727D:\Program Files.E £R1. ArcGIS. Editin gTools10.0.0.0V2.0.50727D:\Program Files (k86}\_-ESRJ.ArcGIS. Editor10.0.0.0v2.0.50727D:\Program Files. [x8-6)\...ESRJ.ArcGrS. EditorExt10.0.0.0v2.0.50727D:\Program FilesESRJ.ArcGIS. Engine 匚 ore10.0.0.0v2.0.50727D:\Program Files (k86}\-.ESRJ.ArcGIS. Framework10,0,0,0¥2,0.50727D:\Prograin Files-E SR],ArcGIS, G eoAn alyst10,0,0,0¥2,0.50727D;\Program Files取hildki L」Si」LLiLi5dingTgIs 10.0.0?D~~ 6]\,ESR].ArcGIS.Geodataba10.0.0.0 v2.0.50727 D:,\Program FileT^S^VESRI.ArcGI£.GeoDataba&eDL7〜:mD ■_、_口口戶*了7了_ mkPmnrRrn Film"请看下面的代码(全部添加到注释掉的对话框代码的下面即可,即添加到按钮所对应的函数 中即可)ILayerpLayer = axMapControll .get_Layer(0);//得到当前地图窗口的第一个图层 IFeatureLayerpFeatureLayer = pLayerasIFeatureLayer;//得到 要素层 ///////////////////////////////////这里先得到 Name 是第几个属性字段//得到字段的索引值 stringfieldName = "NAME";// 定义属性字段名称IFieldstIFields = pFeatureLayer.FeatureClass.Fields;//得 到当前图层属性字段集 intnFieldIndex= tIFields.FindField(fieldName);//得到属性字段索引 /////////////////////////////////IFeatureCursorpFeatureCursor = pFeatureLayer.Search(null, false);//将 迭代光标设置 到要 素集头IFeaturepFeature = pFeatureCursor.NextFeatureO;// 得到下一条要素(注:也是第一条要素) while (pFeature != null){stringstrName = Convert.ToString(pFeature.get_Value(nFieldIndex));//得到属性字段索 引值为nFieldIndex的属性值MessageBox.Show(strName);//以对 话 框的形 式弹出 属性值 pFeature = pFeatureCursor.NextFeatureO;//将迭代指针移动到下一条要素}效果如下图:上面弹出的对话框显示的是第一条要素的NAME属性值本篇完,所有文档和代码均为原创,可以下载,谢绝转载!。
