arcengin地图显示的接口
- 格式:ppt
- 大小:2.33 MB
- 文档页数:20
ArcEngine接口大全(三)《转自ESRI中国社区》9. 关于IArea接口(esriGeometry)IArea接口的第一个属性Area(只读,返回一个double类型的数值,为此Area的面积)IArea接口的第二个属性Centroid(只读,返回一个IPoint类型的变量,为此Area的重心)IArea接口的第三个属性LablePoint(只读,返回一个IPoint类型的变量,为此Area的标签的位置,一般都在此Area的内部)IArea接口的第四个方法QueryCentroid (Center )(方法,Center参数为一个IPoint类型的变量,通过调用此方法将重心点赋值给参数Center)IArea接口的第五个方法QueryLablePoint (LablePoint )(方法,LablePoint参数为设置IPoint 类型的变量,通过调用此方法将标签点赋值给参数LablePoint)10. 关于IEnvelope接口(esriGeometry)应用:(中心放大)IEnvelope接口的第一个方法CenterAt(pPoint)(方法,将这个矩形的边框移动到参数pPoint 的位置,但是其他属性不变,如它的Width和Height)IEnvelope接口的长宽属性Height和Width属性(读写,可以通过该属性获取或设置该边框的长和宽)IEnvelope接口的4个顶点属性UpperLeft、UpperRight、LowerLeft和LowerRight(读写,返回IPoint类型的四个顶点,比直接获得最值坐标更加方便严谨)IEnvelope接口的最值坐标属性XMax、XMin、YMax和YMin(读写,可以通过该属性获取或设置该边框的四个顶点的坐标)IEnvelope接口的第五个方法Union (inEnvelope )(方法,将参数输入的几何边框和调用该方法的几何边框求并集,并将结果赋值给第一个边框,即调用此方法的object)IEnvelope接口的第六个方法intersect (inEnvelope )(方法,返回与输入参数相交的区域的几何边框,并将结果赋值给第一个边框,即调用此方法的object)IEnvelope接口的第七个方法PutCoords (XMin, YMin,XMax,YMax)(方法,将新建的一个边框的4个极坐标设置为输入的参数)IEnvelope接口的第八个方法QueryCoords (XMin, YMin,XMax,YMax)(方法,将已有的一个边框的4个极坐标输出到参数当中以备后用)IEnvelope接口的第九个方法Expand (dx, dy, asRatio)(方法,按照输入的dx与dy参数来放大或者缩小当前的边框,用与对ArcMap窗体的中心放大或缩小,或者点击屏幕获得点击点的坐标,并将中心点设置成点击点,并进行一定比例的放大或者缩小)IEnvelope接口的第十个方法Offset (X, Y)(方法,将已有的一个边框的按照输入参数的大小来进行水平竖直的移动)11. 关于IFeature接口(esriGeoDatabase)IFeature接口的第一个属性Class(只读)IFeature接口的第二个方法Delete(方法,删除该行。
arcgisengine帮助文档icirculararc 解析
ArcGIS Engine 是一个用于构建 GIS 应用程序的软件开发包 (SDK)。
它允许开发人员将 GIS 功能集成到自定义应用程序中。
`ICircularArc` 是 ArcGIS Engine 中的一个接口,用于表示圆弧。
这个接口提供了一些方法来查询和操作圆弧对象。
解析 `ICircularArc` 接口,以下是其主要属性和方法:
属性
1. Center (几何中心): 圆弧的中心点。
2. Radius: 圆弧的半径。
3. StartAngle: 圆弧的起始角度。
4. SweepAngle: 圆弧的跨越角度。
5. Type: 圆弧的类型,例如 `arcopen`, `arclockwise`, 或 `arccw`。
方法
1. QueryPoint(double x, double y): 根据给定的 x 和 y 坐标查询圆弧上或外的点。
2. QuerySegment(double x, double y): 根据给定的 x 和 y 坐标查询圆弧上或外的线段。
3. QueryCircle(double radius): 根据给定的半径查询圆弧上或外的圆。
4. Map(Graphics): 将圆弧映射到给定的 Graphics 对象上。
这只是 `I CircularArc` 接口的一些基本属性和方法。
为了深入了解和使用这个接口,建议查阅 ArcGIS Engine 的官方文档或相关的开发指南。
ArcEngine接口大全(七)《转自ESRI中国社区》51.RulerSettings对象标尺对象是为了辅助图形元素的放置而出现在PageLayout对象上方和左方的辅助尺如图所示,通过IPageLayout的RulerSettings属性可以获得PageLayout上的RulerSettings对象.RulerSettings对象主要实现了IRulerSettings接口它只有一个SmallestDivision属性用于设置RulerSettings对象的最小刻度值属性52Element对象在Map对象和PageLayout对象显示的数据除了地理数据之外,另一种即为元素数据Element是一个非常庞大复杂的对象集合如下图所示,它主要分为两大部分:图形元素(GraphicElement)和框架元素(Frame Element)。
图形元素(GraphicElement)包LineElement, MarkerElement, TextElement, GroupElement, FillshapElement,PictureElement,MultiPatchElement等。
它们都是作为图形的形式而存在,在地图视图或者PageLayout视图上时可见的。
框架元素(Frame Element)包括MapFrameElement, MapSurroundElement等它们是作为不可见的容器而存在的。
Map对象或者PageLayout对象可以通过IGraphicsContainer接口来管理这些元素,使用IGraphicsContainer接口可以添加,删除和更新位于Map或PageLayout上的元素。
使用GroupElement对象还可以将多个元素编组为单个实体来给用户使用。
IElement是所有图形元素(GraphicElement)和框架元素(Frame Element)都实现的接口,通过IElement接口可以确定Element对象的Geometry属性,同时IElment接口也提供了用于查找和绘制元素的方法。
下面根据依赖关系的顺序对一些常用类库进行讨论。
模型图中在每个类库框的右上角显示了其序列号。
例如,作为ArcGIS体系结构基础的System类库,其编号为1,而编号为7的GeoDatabase类库依赖于模型图中其前面的6个类库--System、SystemUI、Geometry、Display、Server和Output。
System类库System类库是ArcGIS体系结构中最底层的类库。
System类库包含给构成ArcGIS的其他类库提供服务的组件。
System类库中定义了大量开发者可以实现的接口。
AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGIS Engine和解除ArcGIS Engine的初始化。
开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。
SystemUI类库SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGIS Engine中进行扩展。
包含ICommand、ITool和IToolControl接口。
开发者用这些接口来扩展UI组件,ArcGIS Engine开发人员自己的组件将使用这些UI组件,且一般是在高层次的类库中实现。
这个类库中包含的对象是一些使用工具对象,开发人员可以通过使用这些对象简化用户界面的开发。
开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。
Geometry类库Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素。
大多数用户会遇到的基本几何图形对象为Point、MultiPoint、Polyline和Polygon。
除了这些顶级实体外,就是作为多义线和多边形的组成部分的几何图形,是组成几何图形的子要素。
它们是Segment、Path和Ring。
Polyline和Polygon由一系列相连接的、构成列Path的片段组成。
ArcGIS接口详细说明之个人开发心得1. 关于IField接口(esriGeoDatabase)2. 关于IFieldEdit接口(esriGeoDatabase)3. 关于IFields接口(esriGeoDatabase)4. 关于IPoint接口(esriGeometry)5. 关于IPointArray接口(esriGeometry)6. 关于IPointCollection接口(esriGeometry)7. 关于IPolyline接口(esriGeometry)8. 关于IGeometry接口(esriGeometry)9. 关于IArea接口(esriGeometry)10. 关于IEnvelope接口(esriGeometry)11. 关于IFeature接口(esriGeoDatabase)12. 关于IRow接口(esriGeoDatabase)13. 关于IFeatureClass接口(esriGeoDatabase)14. 关于ITable接口(esriGeoDatabase)15. 关于IFeatureCursor接口(esriGeoDatabase)16. 关于IQueryFilter接口(esriGeoDatabase)17. 关于IFeatureLayer接口(esriCarto)18. 关于IFeatureSelection接口(esriCarto)19. 关于IMap接口(esriCarto)20. 关于IPropertySet接口(esriSystem)21. 关于IFeatureWorkspace接口(esriGeoDatabase)22. 关于IWorkspaceEdit接口(esriGeoDatabase)23. 关于IWorkspaceFactory接口(esriGeoDatabase)24. 关于ITopologicalOperator接口(esriGeometry)25. 创建Buffer并选择里面的要素26. Merge要素Union要素27. 怎样从Table中获取具体需求值的Row28. 怎样ZoomInCenter29. 怎样读取一个字段内的所有值30. 怎样编辑更改属性字段的值31. 怎样将MapControl中的Map复制到PageLayoutControl中32. 怎样判断是否出于编辑状态33. 怎样用点创建一个Polygon34. 怎样运用属性来计算总面积35. 关于属性域的一些心得36. 怎样实现翻折Flip方法37. 回答cumtbGIS关于ITopologicalOperator接口Clip方法的问题38. 回答机器猫FJJ关于ISpatialFilter接口方法的问题(完整函数)39. 回答网友韶华响当当关于更改符号的代码(完整函数)40. 回答网友韶华响当当关于显示属性的代码(完整函数)1. 关于IField接口(esriGeoDatabase)IField接口的第一个属性AliasName(只读,获得字段的别名)IField接口的第二个方法CheckValue(Value)(方法,对于指定的属性字段,基于字段类型判断参数值是否有效,有效,则返回True,否则返回False)例子代码:'Get FieldSet pField = pFields.Field(6)bChkField = pField.CheckV alue(45.86)If bChkField = True Then'Add data to selected rows for the field selected.End If复制代码IField接口的其他属性均为只读属性,常用有Name(只读,获得字段的名称)例子代码:Dim pFields As IFieldsDim pField As IFieldDim pGeoDef As IGeometryDefDim pDomain As IDomainDim i As LongSet pFields = pFeatClass.FieldsFor i = 0 To pFields.FieldCount - 1Set pField = pFields.Field(i)If pField.Type = esriFieldTypeGeometry ThenSet pGeoDef = pField.GeometryDefElseDebug.Print pField.AliasNameDebug.Print pField.DefaultValueSet pDomain = pField.DomainDebug.Print pField.EditableDebug.Print pField.IsNullableDebug.Print pField.LengthDebug.Print Debug.Print pField.PrecisionDebug.Print pField.RequiredDebug.Print pField.ScaleDebug.Print pField.TypeDebug.Print pField.VarTypeEnd IfNext2. 关于IFieldEdit接口(esriGeoDatabase)所有该接口的属性均为可读可写,经常用与对新建字段的设置,因为字段一旦被设置,其基本属性就不能被更改,所以就需要该接口类型的变量去转换,方法为:IFeatureClass pFC_SCP_PT;IFieldEdit editPT = new FieldClass();pFC_SCP_PT.AddField((IField)editPT);如果在vb中去编写代码,则赋值和获取均为同一属性,而在C#中,为了区分设置和获取,属性均有两个,类似于Name和Name_2,这样就可以区分了,普遍用设置的带有_2的那个属性。
.ArcGIS Engine二次开发——提高篇1缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。
在本小节中我们将学习如何制作这种鹰眼。
1.1添加控件新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl 、两个MapControl和LicenceControl等四个控件。
布局如下图所示。
左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
图 1 界面布局在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图2添加按钮1.2代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。
当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。
下面开始实现鹰眼功能,添加using ESRI.ArcGIS.Carto、using ESRI.ArcGIS.Geometry、using ESRI.ArcGIS.Display三个引用。
首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在OnExtentUpdated事件中添加代码如下:private void axMapControl1_OnExtentUpdated(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e){//创建鹰眼中线框IEnvelope pEnv = (IEnvelope)e.newEnvelope;IRectangleElement pRectangleEle = new RectangleElementClass();IElement pEle = pRectangleEle as IElement;pEle.Geometry = pEnv;//设置线框的边线对象,包括颜色和线宽IRgbColor pColor = new RgbColorClass();pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 255;// 产生一个线符号对象ILineSymbol pOutline = new SimpleLineSymbolClass();pOutline.Width = 2;pOutline.Color = pColor;// 设置颜色属性pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 0;// 设置线框填充符号的属性IFillSymbol pFillSymbol = new SimpleFillSymbolClass();pFillSymbol.Color = pColor;pFillSymbol.Outline = pOutline;IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;pFillShapeEle.Symbol = pFillSymbol;// 得到鹰眼视图中的图形元素容器IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;IActiveView pAv = pGra as IActiveView;// 在绘制前,清除axMapControl2 中的任何图形元素pGra.DeleteAllElements();// 鹰眼视图中添加线框pGra.AddElement((IElement)pFillShapeEle, 0);// 刷新鹰眼pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}当鼠标点击鹰眼窗体时,主窗体Extent随之改变。
ArcEngineIMap接口使用方法使用IMap接口显示各种数据源的数据。
IMap接口的成员ActiveGraphicsLayer:活动图形图层,如果没有将创建一个基本memory graphics layer。
AddLayer:向地图中添加单个图层。
AddLayers:向地图中添加多个图层。
AddMapSurround:向地图中添加map surround。
AnnotationEngine:地图使用的注记(标签)引擎。
AreaOfInterest:地图的感兴趣区域。
Barriers:barriers列表和标签权重。
BasicGraphicsLayer:基本图形层。
ClearLayers:从地图中移除所有图层。
ClearMapSurrounds:从地图中移除所有旁注。
ClearSelection:清除地图选择。
ClipBorder:ClipGeometry周围一个可选边界。
ClipGeometry:地图图层中一个要剪切的形状。
ComputeDistance:计算地图上两个点的距离并返回结果。
CreateMapSurround:创建并初始化一个map surround。
从样式集中指定一个可选样式。
DelayDrawing:暂停绘制。
DelayEvents:将操作按批组合来减少通知。
DeletLayer:从map中删除图层。
DeleteMapSurround:从地图中删除map surround。
Description:地图描述。
DistanceUnits:地图的距离单位。
Expanded:指出地图是否可以扩张。
FeatureSelection:地图中选择的要素。
GetPageSize:获得地图的页面大小。
IsFramed:指出地图是否在一个框架内而不是在整个窗口中绘制。
Layer:给定序号的layer。
LayerCount:地图中图层的数目。
Layers:以uid表明类型的地图图层。
如果recursive是true,将以layers的形式返回layers。
arcgisengine ifeaturecursor 表达或-回复ArcGIS Engine是一个客户端GIS开发平台,可以用于构建基于地理空间数据的应用程序。
IFeatureCursor是ArcGIS Engine中的一个接口,用于访问要素的集合。
在本文中,我们将详细介绍ArcGIS Engine中的IFeatureCursor接口以及如何使用它。
首先,让我们来了解一下IFeatureCursor的基本概念。
IFeatureCursor 接口用于检索要素的集合,类似于数据库中的结果集。
要素是地理空间数据的基本单元,可以是点、线或面。
IFeatureCursor接口提供了一种遍历要素集合的方式,以便开发人员可以对其进行操作。
在使用IFeatureCursor接口之前,首先需要创建一个要素集合。
可以通过使用IFeatureClass接口来获取要素集合。
IFeatureClass接口代表一个要素类,它是要素集合的容器。
要素类可以来自文件、数据库或网络等数据源。
在获取了要素类之后,可以使用IFeatureClass的Search方法来检索满足特定条件的要素。
Search方法返回一个IFeatureCursor接口的实例,通过该实例可以遍历要素集合。
IFeatureCursor接口包含了一系列用于查询、检索或过滤要素的方法和属性。
一旦获得了一个IFeatureCursor接口的实例,就可以使用其提供的方法进行要素的遍历和访问。
其中,MoveNext方法用于移动到下一个要素,并返回一个布尔值,指示是否成功移动到下一个要素。
GetValue方法可以获取当前要素指定字段的值。
另外,IFeatureCursor还提供了一些其他的方法,如Reset方法用于重置游标,以便重新开始遍历;以及Sort方法用于对要素进行排序。
此外,使用完IFeatureCursor之后,需要及时释放相关资源,以避免内存泄漏或其他性能问题。
ArcEngine接口大全二ArcEngine接口大全(二)《转自ESRI中国社区》7. 关于IPolyline接口(esriGeometry)IPolyline接口的第一个属性FromPoint与ToPoint(读写,设置或者读取该点的起始点和终止点,返回都是IPoint类型的变量)IPolyline接口的第二个方法QueryFromPoint (from )(方法,返回IPoint 类型的变量到参数from)IPolyline接口的第三个方法QueryToPoint (to )(方法,返回IPoint类型的变量到参数to)1.Public Sub t_ICurve_QueryPoints()2. Dim pID As New UID3. pID = "esriEditor.editor"4. Dim pEditor As IEditor5. Dim pApp As IApplication6. Set pApp = MxApplication7. Set pEditor = pApp.FindExtensionByCLSID(pID)8.9. If pEditor.SelectionCount <> 1 Then10. MsgBox "select one Curve"11. Exit Sub12. End If13.14. Dim pEnumFeat As IEnumFeature15. Dim pFeature As IFeature16.17. Set pEnumFeat = pEditor.EditSelection18.19. Dim pCurve As ICurve20. Dim pPointFrom As IPoint21. Dim pPointT o As IPoint22.23. Set pPointFrom = New Point24. Set pPointTo = New Point25.26. Set pFeature = pEnumFeat.Next27.28. While Not pFeature Is Nothing29. If pFeature.Shape.GeometryType = esriGeometryPolyline Or _30. esriGeometryPolyline Or esriGeometryLine Then31. Set pCurve = pFeature.Shape32. pCurve.QueryFromPoint pPointFrom33. pCurve.QueryToPoint pPointT o34. MsgBox "+++ICurve properties..." & vbCrLf _35. & "Curve.QueryFromPoint (x,y) = " & pPointFrom.X & "," & pPointFrom.Y & vbCrLf _36. & "Curve.QueryToPoint (x,y) = " & pPointTo.X & ","& pPointTo.Y & vbCrLf37. End If38. Set pFeature = pEnumFeat.Next39. WendIPolyline接口的第四个方法Generalize (maxAllowableOffset )(方法,用道格拉斯普克发来简化polyline)IPolyline接口的第五个方法Weed (maxAllowableOffsetFactor ) (方法,和方法Generalize类似,均为简化polyline的方法,不同的是参数。
ArcEngine接口大全(五)《转自ESRI中国社区》37.想用ITopologicalOperator做图层剪切1.Dim pTopoO As ITopologicalOperator2.Set pTopoO = pFeature.Shape3.Dim pEnv As IEnvelope4.Set pEnv = New Envelope5.pEnv.XMax = 1006.pEnv.XMin = 907.pEnv.YMax = 1008.pEnv.YMin = 909.pTopoO.Clip epnv10.pFeature.Store38.FJJ关于ISpatialFilter接口方法的问题ing System;ing System.Collections.Generic;ing ponentModel;ing System.Data;ing System.Drawing;ing System.Text;ing System.Windows.Forms;ing ESRI.ArcGIS.Geodatabase;ing ESRI.ArcGIS.Carto;space Solutions11.{12. public partial class Form1 : Form13. {14. public Form1()15. {16. InitializeComponent();17. ILayer pLayer;18. IFeatureLayer pFeatureLayer;19. IFeatureClass pFeatureClass;20. IFeatureCursor pFeatureCursor;21. IFeature pFeature;22. ISpatialFilter pSpatialFilter;23. pSpatialFilter = new SpatialFilterClass();24. pSpatialFilter.Geometry = pGeom; ///这个pGeom就是传进来的参数,就是你所谓的那个“选择了地图上的一块区域”25. pSpatialFilter.SpatialRel =esriSpatialRelEnum.esriSpatialRelContains;26. int layerCount = yerCount;27. for (int i = 0; i < layerCount; i++)28. {29. pLayer = axMapControl1.get_Layer(i);30. pFeatureLayer = (IFeatureLayer)pLayer;31. pFeatureClass = pFeatureLayer.FeatureClass;32. pFeatureCursor =pFeatureClass.Search((IQueryFilter)pSpatialFilter, false);33. pFeature = pFeatureCursor.NextFeature();34. while (pFeature != null)35. {36. listView1.Items.Add();37. }38. }39. }40. }41.}39.关于更改符号的代码1.private void axTOC1_OnDoubleClick(object sender,ITOCControlEvents_OnDoubleClickEvent e)2. {3. esriTOCControlItem itemType =esriTOCControlItem.esriTOCControlItemNone;4. IBasicMap basicMap = null;5. ILayer layer = null;6. object unk = null;7. object data = null;8. axTOC1.HitTest(e.x, e.y, ref itemType, ref basicMap, reflayer, ref unk, ref data);9. if (e.button == 1)10. {11. if (itemType ==esriTOCControlItem.esriTOCControlItemLegendClass)12. {13. //取得图例14. ILegendClass pLegendClass =((ILegendGroup)unk).get_Class((int)data);15. //创建符号选择器SymbolSelector实例16. FormSymbolControl SymbolSelectorFrm = newFormSymbolControl(pLegendClass, layer);17. if (SymbolSelectorFrm.ShowDialog() ==DialogResult.OK)18. {19. //局部更新主Map控件20. //m_mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);21. axMap1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);22. //设置新的符号23. pLegendClass.Symbol =SymbolSelectorFrm.pSymbol;24. //更新主Map控件和图层控件25. this.axMap1.ActiveView.Refresh();26. this.axTOC1.Refresh();27. }28. }29. }30. }40.关于显示属性的代码1. ///2. /// 填充DataTable中的数据3. ///4. ///5. ///6. ///7. public static DataTable CreateDataTable(ILayer pLayer, stringtableName)8. {9. //创建空DataTable10. DataTable pDataTable = CreateDataTableByLayer(pLayer,tableName);11. //创建DataTable的行对象12. DataRow pDataRow = null;13. //取得图层类型14. string shapeType = getShapeType(pLayer);15. //从ILayer查询到ITable16. ITable pTable = pLayer as ITable;17. ICursor pCursor = pTable.Search(null, false);18. //取得ITable中的行信息19. IRow pRow = pCursor.NextRow();20. int n = 0;21. while (pRow != null)22. {23. //新建DataTable的行对象24. pDataRow = pDataTable.NewRow();25. for (int i = 0; i < pRow.Fields.FieldCount; i++)26. {27. //如果字段类型为esriFieldTypeGeometry,则根据图层类型设置字段值28. if (pRow.Fields.get_Field(i).Type ==esriFieldType.esriFieldTypeGeometry)29. {30. pDataRow = shapeType;31. }32. //当图层类型为Anotation时,要素类中会有esriFieldTypeBlob类型的数据,33. //其存储的是标注内容,如此情况需将对应的字段值设置为Element34. else if (pRow.Fields.get_Field(i).Type ==esriFieldType.esriFieldTypeBlob)35. {36. pDataRow = "Element";37. }38. else39. {40. pDataRow = pRow.get_Value(i);41. }42. }43. //添加DataRow到DataTable44. pDataTable.Rows.Add(pDataRow);45. pDataRow = null;46. n++;47. pRow = pCursor.NextRow();48. ////为保证效率,一次只装载最多条记录49. //if (n == 2000)50. //{51. // pRow = null;52. //}53. //else54. //{55. // pRow = pCursor.NextRow();56. //}57. }58. return pDataTable;59. }41.关于IFeature变量添加进List<IFeature>数组里的问题1.List<IFeature> listFeature = new List<IFeature>();2.try3.{4. pFC_TER_LN =pFeatureWorkspace.OpenFeatureClass("GD10K_DLG_TER_LN_l");5.}6.catch7.{8. richTextBox1.SelectionStart = richTextBox1.Text.Length;9. richTextBox1.SelectedText = "地形图:" + + "中没有TER_LN_l图层!\n";10. richTextBox1.Refresh();11. continue;12.}13.for (int i = 0; i < pFC_TER_LN.FeatureCount([color=Red]null[/color]);i++) ///将该图层的每个Feature提取出来以供编辑时依次赋值,并且可以设置FeatureCount方法的参数为一个IQueryFilter类型的变量,就可以实现你所要求的方法了,用Search()方法,应该是不可以的,希望你们试一下。
ArcEngine接口大全(六)《转自ESRI中国社区》44.Map接口在ArcMap中Map对象是由MXDocument对象的MapFrame对象管理,MapFrame是一个框架元素。
Map对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图形元素,扮演了数据管理器的角色,另一方面它又可以让用户看到这些数据即扮演了数据显示器的角色,当加载数据到Map对象的时候,Map对象是数据的管理者;当改变视图范围,刷新地图的时候它是数据的显示者。
Map对象主要实现的接口由IMap,IGraphicContainer,IActiveView,IMapBookmarks 等接口。
IMap接口主要用于管理Map对象中的Layer对象,要素选择集对象,MapSourround对象,空间参考等对象。
Map对象可以显示图形元素(Graphics Element),Map对象通过IGraphicsContainer接口来管理这些元素对象,包括图形元素和框架元素。
IGraphicsContainer返回的是Map对象中处于活动状态的Graphics layer引用指针,它可以是一个Basicgraphicslayer,也可以是CompositeGraphicsLayer中的一个图层,或者是一个FDOGraphicsLayer注记图层。
45.IActiveView接口IActiveView接口定义了Map对象的数据显示功能。
使用该接口可以改变视图的范围,刷新视图。
IActiveView的PartialRefresh(esriViewGeography, pLayer, null)用于刷新指定图层:IActiveView的PartialRefresh(esriViewGeography, null, null) 用于刷新刷新所有图层:IActiveView的PartialRefresh(esriViewGeoSelection, null, null) 用于刷新所选择的对象:IActiveView的PartialRefresh(esriViewGraphics, null, null) 用于刷新图形元素:IActiveView的PartialRefresh(esriViewGraphics, pElement, null) 用于刷新指定图形元素IActiveView的PartialRefresh(esriViewGraphics, null, null) 用于刷新所有图形元素IActiveView的PartialRefresh(esriViewGraphicSelection, null, null)用于刷新所选择的图元。
控件是ArcGIS用户界面的组成部分,开发者可以嵌入并在其应用程序中使用。
例如:一个地图控件和一个内容表控件可以加在应用中来展示和交互式运用地图。
ArcEngine控件如下:MapControl:类似于ArcMap桌面应用软件的数据视图界面,用于容纳各种地图对象。
PageLayoutControl:类似于ArcMap桌面应用软件的地图编排界面,用于容纳各种地图编排对象。
TocControl:服务于“buddy”控件,包括MapControl , PageLayoutControl , ReaderControl, SceneControl或G1obeControl。
用树形视图交换显示“buddy”控件显示的地图、图层和符号的内容。
ToolbarControl:服务于“buddy”控件,包括MapControl, PageLayoutControl, ReaderControl, SceneControl or GIobeControl。
是为“buddy”控件提供各种服务的命令、工具和菜单的面板。
SceneControl:三维场景显示控件GIobeControl:全球三维视图控件,能够利用真实椭球面定位数据显示全球三维视图。
ReadControl:该控件显示数据视图、地图编排视图和控件显示内容。
ArcEngine组件库组件对象库是可编程ArcObjects组件的集合,包括几何图形到制图、GIS数据源和geodatabas。
等一系列库。
ArcEngine组件库有1800多个组件对象,这些组件按功能分别归属于不同的组件库。
如下是主要的组件库及其功能介绍。
System库:是ArcGIS框架中最底层的一个库,它包含了一些被其他库使用的一SystemUI库:定义了一些在ArcGIS中被用户界面组件使用的类型。
象Icommand和Itool这样的接口就在这里定义。
Geometry库:包含了核心的几何对象,比如点,面,线等。