ArcEngine接口大全七
ArcEngine接口大全三
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(方法,删除该行。
ArcEngine接口大全
1.IField接口(esriGeoDatabase)IField接口的第一个属性AliasName(只读,获得字段的别名)IField接口的第二个方法CheckValue(Value)(方法,对于指定的属性字段,基于字段类型判断参数值是否有效,有效,则返回True,否则返回False)例子代码:1.Set pField = pFields.Field(6) ’第六个字段2.bChkField = pField.CheckValue(45.86)3.If bChkField = True Th en……IField接口的其他属性均为只读属性,常用有Name(只读,获得字段的名称)例子代码:1.Dim pFields As IFields2.Dim pField As IField3.Dim pGeoDef As IGeometryDef4.Dim pDomain As IDomain5.Dim i As Long6.Set pFields = pFeatClass.Fields7.For i = 0 To pFields.FieldCount - 18. Set pField = pFields.Field(i)9. If pField.Type = esriFieldTypeGeometry Then10. Set pGeoDef = pField.GeometryDef11. Else12. Debug.Print pField.AliasName13. Debug.Print pField.DefaultValue14. Set pDomain = pField.Domain15. Debug.Print pField.Editable16. Debug.Print pField.IsNullable17. Debug.Print pField.Length18. Debug.Print 19. Debug.Print pField.Precision20. Debug.Print pField.Required21. Debug.Print pField.Scale22. Debug.Print pField.Type23. Debug.Print pField.VarType24. End If25.Next2. IFieldEdit接口(esriGeoDatabase)所有该接口的属性均为可读可写,经常用与对新建字段的设置,因为字段一旦被设置,其基本属性就不能被更改,所以就需要该接口类型的变量去转换,方法为:IFeatureClass pFC_SCP_PT;IFieldEdit editPT = new FieldClass();pFC_SCP_PT.AddField((IField)editPT);如果在vb中去编写代码,则赋值和获取均为同一属性,而在C#中,为了区分设置和获取,属性均有两个,类似于Name和Name_2,这样就可以区分了,普遍用设置的带有_2的那个属性。
ArcEngine接口大全七
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接口详细说明
ArcGIS接口详细说明 (1)GeometryGeometry 库处理存储在特征类(feature classes)或其它图形要素(graphical elements)中的特征的 geometry 或 shape。
大多数用户交互的基本几何对象有 Point 、MultiPoint 、Polyline 和 Polygon 。
除了这些顶层的实体,还有作为 Polylines 和 Polygons 构建模块的几何体(geometries)。
这些是组成几何体的基元(primitives)。
它们是 Segments、Paths 和 Rings。
Polylines 和 Polygons 由形成一条 Path 的依次相连的 Segments 组成。
一个 Segment 包含两个不同的点,起点和终点,和一个定义从起点到终点的曲线的要素类型。
这种 segments 有 CircularArc、 Line、 EllipticArc 和 BezierCurve。
所有的几何对象都可以有与它们顶点相关的 Z、和 IDs。
MISegmentCollection接口被Path,Ring,Polyline和Polygon四个类所实现,它们被称作是Segment集合对象,使用这个接口可以处理组成Segment集合对象中的每一个子Segment对象。
使用ISegmentCollection接口可以为一个Segment集合对象添加,插入,删除Segment子对象。
ISegmentCollection接口SetCircle和SetRectangle方法提供了一种简单不需要添加Segment的情况下构建一个完成的Path,Ring,Polyline和Polygon的方法。
Geometry集合接口通过前边对于具体的Geometry对象的介绍可知,除了Point对象之外,其他几何对象都是通过其他几何对象集合构建而成。
如MultiPoint对象是点的集合,Path 对象是Segment对象的集合,Polyline对象是Path对象的集合,Polygon对象是Ring对象的集合,Multipatch对象是Triangle Strip和Trangle Fan, Trangle,Ring对象的集合。
ArcGIS_Engine常用接口
下面根据依赖关系的顺序对一些常用类库进行讨论。
模型图中在每个类库框的右上角显示了其序列号。
例如,作为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的片段组成。
ArcEngine接口总结
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的那个属性。
ArcEngine类库介绍
1ArcEngine类库ESRI.ArcGIS.esriSystem; //包括IArray,ISet,IFile,等一些基础底层接口和类ESRI.ArcGIS.SystemUI; //包括ICommand,ITool,等一些用户界面的接口和类ESRI.ArcGIS.Geometry; //包括点,线,面,路径,环,等核心几何对象3D,地理坐标,投影坐标等ESRI.ArcGIS.Display; //包括ISymbol,IColor,IDraw,等一些用来在地图上显示或绘制的接口和类ESRI.ArcGIS.DisplayUI; //提供一些可视化的界面去设置display里的东西ESRI.ArcGIS.Controls; //MapControl,TOC,Toolbar,Licence,PageLa yout等核心可视化组件ESRI.ArcGIS.ArcMapUI; //提供一些ArcMap自带的可视化界面的接口,实现在ArcmapESRI.ArcGIS.Framework; //提供一些程序核心对象,如IApplication,IDocument,等ESRI.ArcGIS.Carto; //包括一些数据显示的接口和类,如ILegend,IMap,ILayer,等ESRI.ArcGIS.Geodatabase;//提供操作地理数据库的接口,如IWorkspace,IDataset,IFeature,IFileds,ITin等ESRI.ArcGIS.DataSourcesFile;//提供打开矢量数据的接口,如ICoverage,ICadTransformation等ESRI.ArcGIS.DataSourcesGDB;//提供打开Access及一些SDE支持的RDBMS接口ESRI.ArcGIS.DataSourcesOleDB;//提供打开一些支持oledb的数据库的接口ESRI.ArcGIS.DataSourcesRaster;//提供打开一些栅格数据及转换数据的接口ESRI.ArcGIS.OutPut //提供一些打印、转换输出接口,如IBmpExporter================以上为一些常用到的接口除了ESRI.ArcGIS.SystemUI外其余以UI结尾的namespace均属AO的范畴1.1System类库System类库是ArcGIS体系结构中最底层的类库。
4.1.1 IMap接口_ArcGIS Engine 开发从入门到精通_[共4页]
第4章地图组成及图层控制4.1 地图对象地图(Map)是ArcEngine的主要组成部分。
Map对象既是数据的管理容器,同时也是数据显示的主要载体。
Map对象的主要接口有IMap、IGraphicsContainer、IActiveView、IActiveViewEvents、IMapBookmark和ITableCollection等。
Map对象共有35个接口,更多的接口请查看“帮助”文件。
本节介绍几个主要的接口。
4.1.1 IMap接口IMap接口主要用于管理Map对象中的layer对象、要素选择集、MapSourround对象和标注等。
Map对象通过图层的方式管理地理数据。
在IMap接口中定义了大量的方法来操作其中的图层对象,如AddLayer、AddLayers,这两个方法分别是将一个、多个图层加载进Map对象;ClearLayers是清除Map中所有的图层;LayerCount则是Map中的图层记数器,计算Map中有多少个图层;SelectFeature是在Map中选择实体;SelectByShape是通过指定的实体在Map中选择实体;SelectionCount是获取选择实体的个数。
当图层添加进Map对象时,最先添加的图层放在最下面,后续添加的图层则依次叠加在原有图层上。
下面通过例子演示如何使用这些主要方法和属性。
新建一个VS2005工程,工程命名为“lesson1”,在Form1窗体上添加一个ToolbarControl 控件,一个MapControl控件,一个LicenseControl1控件,一个Button控件;然后在ToolbarControl 控件的属性里设置“伙伴控件”为MapControl,如图4-1所示。
ArcEngineIMap接口使用方法
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。
arcengine引用
arcengine引用ESRI.ArcGIS.esriSystem; //包括IArray,ISet,IFile,等一些基础底层接口和类ESRI.ArcGIS.SystemUI; //包括ICommand,ITool,等一些用户界面的接口和类ESRI.ArcGIS.Geometry; //包括点,线,面,路径,环,等核心几何对象3D,地理坐标,投影坐标等ESRI.ArcGIS.Display; //包括ISymbol,IColor,IDraw,等一些用来在地图上显示或绘制的接口和类ESRI.ArcGIS.Controls; //MapControl,TOC,Toolbar,Licence,PageLayout等核心可视化组件ESRI.ArcGIS.Framework; //提供一些程序核心对象,如IApplication,IDocument,等ESRI.ArcGIS.Carto; //包括一些数据显示的接口和类,如ILegend,IMap,ILayer,等ESRI.ArcGIS.Geodatabase;//提供操作地理数据库的接口,如IWorkspace,IDataset,IFeature,IFileds,ITin等ESRI.ArcGIS.DataSourcesFile;//提供打开矢量数据的接口,如ICoverage,ICadTransformation等ESRI.ArcGIS.DataSourcesGDB;//提供打开Access及一些SDE支持的RDBMS接口ESRI.ArcGIS.DataSourcesOleDB;//提供打开一些支持oledb的数据库的接口ESRI.ArcGIS.DataSourcesRaster;//提供打开一些栅格数据及转换数据的接口ESRI.ArcGIS.OutPut //提供一些打印、转换输出接口,如IBmpExporter。
ArcEngine接口大全二
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接口大全(带示例)
ArcEngine接口大全(带示例)1、抽象类,类,和组件对象类抽象类是不能实例化的,抽象类中是一系列抽象的方法,故是不能实例化的,它只能被继承。
不同的类可以继承同一个抽象类,但内部对同一方法的实现可能是不一样的。
如AO中的接口都是抽象类。
用户可以在类中实现这些接口,也就是继承这些接口。
如用户可以在自己的类中实现ICommand接口,生成一个Command,或者实现ICommand、IT ool接口,生成一个T ool.类是不能直接实例化的,它只能作为另一个类的属性或者被其它类的对象实例化。
如Sde3Workspace Class、Sde4Workspace Class,FeatureClass,FeatureDataset它们是不能通过New 直接实例化的,只能通过SdeWorkspaceFactory CoClass这个组件对象类所实现的IWorkspaceFactory接口里的Open方法来实例化。
FeatureClass,FeatureDataset也是不能直接实例化的,他只能通过IFeatureWorkspace接口里的CreateFeatureClass,CreateFeatureDataset 方法来实例化。
组件对象类能够通过New来直接实例化。
如SdeWorkspaceFactory,QueryFilter它们是可以通过New来直接实例化的。
2、继承类继承(type inheritance)定义了专门的类,它们拥有超类的属性和方法,并且同时也有自身的属性和方法。
上图说明primary line 和secondary line 是line 的一种类型。
实例化(Instantiation)指定一个类的对象有这样的方法,它能够创建另外一个类的对象。
pole 对象有一个方法能够创建transformer 对象。
3、类和接口的实现一些类可能实现多个接口,一个接口也可能被多个类所实现,但不同的类实现同一个接口可能内部并不是一样的,这就实现了多态性.如ILayer这个接口被多个接口实现,其中包括FeatureLayer和RasterLayer,但这两个类实现ILayer接口时内部实现肯定是不一样的!但在外部对ILayer的操作是一样的!4、接口之间的相互查询一个类可以实现多个接口,每一个接口可能包括一系列的属性和方法,但有时候一个接口里可能没有你想要的方法和属性,可能在这个类所实现接口的另一个接口里,这就涉及到从一个接口转到这个类所实现接口的另一个接口里,对于类所实现的一系列接口里,接口间是可以相互跳转的。
arcengine
arcengine 缓冲区查询缓冲区查询特别有⽤,也很⽅便,照着别⼈的⾃⼰写了⼀个,记录⼀下。
缓冲区查询主要⽤到的核⼼接⼝就两个,ITopologcialOperator和ISpatialFilter这两个接⼝。
第⼀个接⼝⽤来构建缓冲区和进⾏其他的拓扑操作,第⼆个接⼝是空间过滤器,其中提供空间查询的各种关系。
这两个接⼝还有很多其他属性和⽅法,⽤到时⾃⾏查看帮助。
⼀下是缓冲区查询的核⼼代码,当然之前必须指定查找的⽬标图层和建⽴缓冲区的图层和对象。
IGeometry pGeometry = TestFeature.Shape;ITopologicalOperator pTopologicalOperator = pGeometry as ITopologicalOperator;pGeometry = pTopologicalOperator.Buffer(Distence);//Distence是缓冲距离pTopologicalOperator.Simplify();ISpatialFilter pSpatialfilter = new SpatialFilterClass();pSpatialfilter.Geometry = pGeometry;pSpatialfilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelCrosses;pSpatialfilter.GeometryField = "Shape";ILayer pLayer = this.axMCl1.get_Layer(0);IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;IFeatureCursor FeatureCursor = pFeatureClass.Search(pSpatialfilter, false);IFeature Feature = FeatureCursor.NextFeature();。
ArcEngine接口大全
ArcEngine接口大全[转载]ArcEngine接口大全(四)《转自ESRI中国社区》(2010-11-14 14:58:22)转载原文标签:分类:AE开发转载原文地址:ArcEngine接口大全(四)《转自ESRI中国社区》作者:GisEr27.怎样从Table中获取具体需求值的Row:1.ITable pTable = (ITable)pFC;2. int index =pTable.Fields.FindField("FieldName");3. IQueryFilter pQFilter = new QueryFilterClass();4. ICursor pCur;5. pCur = pTable.Search(pQFilter, false);6. IRow pRow = new Row();7. IRow pAnswerRow = new Row();8. pRow = pCur.NextRow();9. while (pRow != null)10. {11. string Value =pRow.get_Value(index).ToString();12. if (Value == "Value")13. {14. pAnswerRow = pRow;15. break;16. }17. pRow = pCur.NextRow();18. }28.怎样ZoomInCenter:1.Public Sub ZoomInCenter()2. Dim pMxDocument As IMxDocument3. Dim pActiveView As IActiveView4. Dim pDisplayTransform As IDisplayTransformation5. Dim pEnvelope As IEnvelope6. Dim pCenterPoint As IPoint7. Set pMxDocument = Application.Document8. Set pActiveView = pMxDocument.FocusMap9. Set pDisplayTransform =pActiveView.ScreenDisplay.DisplayTransformation10. Set pEnvelope = pDisplayTransform.VisibleBounds11. 'In this case, we could have set pEnvelope toIActiveView::Extent12. 'Set pEnvelope = pActiveView.Extent13. Set pCenterPoint = New Point14.15. pCenterPoint.x = ((pEnvelope.XMax - pEnvelope.XMin) / 2) +pEnvelope.XMin16. pCenterPoint.y = ((pEnvelope.YMax - pEnvelope.YMin) / 2) +pEnvelope.YMin17. pEnvelope.width = pEnvelope.width / 218. pEnvelope.height = pEnvelope.height / 219. pEnvelope.CenterAt pCenterPoint20. pDisplayTransform.VisibleBounds = pEnvelope21. pActiveView.Refresh22.End Sub29.怎样读取一个字段内的所有值:1. IFeatureClass pFC =m_SDEQuery.getFeatureClass();2. IFeatureCursor pFeaCur = pFC.Search(null,false);3. IFeature pFeature = pFeaCur.NextFeature();4. int pFieldIndex =pFC.Fields.FindField(this.m_cboQryFld.SelectedItem.Value.To String());5. System.Collections.ArrayList pArr = newSystem.Collections.ArrayList();6. while (pFeature != null)7. {8. string theFieldValue =pFeature.get_Value(pFieldIndex).T oString();9. if (!pArr.Contains(theFieldValue) &&(theFieldValue.Trim() != ""))10. {11. m_cboQryText.Items.Add(theFieldValue);12. pArr.Add(theFieldValue);13. }14. pFeature = pFeaCur.NextFeature();15. }30怎样编辑更改属性字段的值:1.IRow prow = (IRow)bendiFeatureC.GetFeature(1);2.MessageBox.Show(prow.Table.Fields.FieldCount.ToString());3.ITable ptable = (ITable)bendiFeatureC;4.IQueryFilter pqfilter = new QueryFilterClass();5.pqfilter.WhereClause = ""dkmc" = '北江路南郊一公里'";6.IFeatureCursor pfeatcur;7.pfeatcur = bendiFeatureC.Search(pqfilter, false);8.IFeature pfff = pfeatcur.NextFeature();9.while (pfff != null)10.{11. IRow prrr = (IRow)pfff;12. prrr.set_Value(prrr.Fields.FindField("dkmc"), "北江路南郊二公里");13. pfff = (IFeature)prrr;14. pfff.Store();15. pfff = pfeatcur.NextFeature();16.}31怎样将MapControl中的Map复制到PageLayoutControl中1.Public Sub CopyAndOverwriteMap()2. On Error GoT o CopyAndOverwriteMap_err3. Dim pObjectCopy As IObjectCopy4. pObjectCopy = New ObjectCopy5. Dim pToCopyMap As Object6. pToCopyMap = frmMap.AxMapControl1.Map7. Dim pCopiedMap As Object8. pCopiedMap = pObjectCopy.Copy(pToCopyMap)9. Dim pToOverwriteMap As Object10. pToOverwriteMap =PrintPageLayout.AxPageLayoutControl1.ActiveView.FocusM ap11. pObjectCopy.Overwrite(pCopiedMap, pToOverwriteMap)12. frmMap.AxMapControl1.MousePointer13.=ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPoin terArrow14. frmMain.StatusMessage.Text = ""15. PrintPageLayout.ShowDialog()16. Exit Sub17. CopyAndOverwriteMap_err:18. MsgBox(Err.Number & " - " & Err.Description,MsgBoxStyle.Critical, Application.ProductName & "- Copy Map")19. Exit Sub20.End Sub32怎样判断是否出于编辑状态:1.If m_pEditor.EditState = esriStateEditing Then2. m_pEditor.StartOperation3. '删除冗余节点4. DelSubPoint pMap5. m_pEditor.StopOperation "OK"6.End If33。
arcengine引用
ESRI.ArcGIS.DataSourcesOleDB;//提供打开一些支持oledb的数据库的接口
ESRI.ArcGIS.DataSourcesRaster;//提供打开一些栅格数据及转换数据的接口
ESRI.ArcGIS.Carto; //包括一些数据显示的接口和类,如ILegend,IMap,ILayer,等
ESRI.ArcGIS.Geodatabase;//提供操作地理数据库的接口,如IWorkspace,IDataset,IFeature,IFileds,ITin等
ESRI.ArcGIS.DataSourcesFile;//提供打开矢量数据的接口,如ICoverage,ICadTransformation等
ESRI.ArcGIS.esriSystem; //包括IArray,ISet,IFile,等一些基础底层接口和类
ESRI.ArcGIS.SystemUI; //包括ICommand,ITool,等一些用户界面的接口和类
ESRI.ArcGIS.Geometry; //包括点ห้องสมุดไป่ตู้线,面,路径,环,等核心几何对象3D,地理坐标,投影坐标等
ESRI.ArcGIS.Display; //包括ISymbol,IColor,IDraw,等一些用来在地图上显示或绘制的接口和类ESRI.ArcGIS.Controls; //MapControl,TOC,Toolbar,Licence,PageLayout等核心可视化组件ESRI.ArcGIS.Framework; //提供一些程序核心对象,如IApplication,IDocument,等
ArcEngine接口大全六
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接口详细说明
ArcGIS 接口详细说明之个人开发心得万人迷先生 217 / 文 tj051181 / 整理关于 IField 接口( esriGe 撒旦法 oDatabase ) 3 楼 关于 IFieldE 撒旦法撒旦法 dit 接口( esriGeoDatabase ) 4 楼 关于 IFields 接口( esriGeoDatabase ) 5 楼 关于 IPoint 接口( esriGeometry ) 6 楼 关于 IPointArray 接口( esriGeometry ) 7 楼 关于 IPointCollection 接口( esriGeometry ) 8 楼 关于 IPolyline 接口( esriGeometry ) 9 楼 关于 IGeometry 接口( esriGeometry )10 楼 关于 IArea 接口( esriGeometry ) 11 楼 关于 IEnvelope 接口( esriGeometry ) 12 楼 关于 IFeature 接口( esriGeoDatabase ) 13 楼 关于 IRow 接口( esriGeoDatabase )14 楼 关于 IFeatureClass 接口( esriGeoDatabase ) 15 楼 关于 ITable 接口( esriGeoDatabase ) 16 楼 关于 IFeatureCursor 接口( esriGeoDatabase )17 楼 关于 IQueryFilter 接口( esriGeoDatabase ) 18 楼 关于 IFeatureLayer 接口( esriCarto ) 19 楼 关于 IFeatureSelection 接口( esriCarto )20 楼 关于 IMap 接口 (esriCarto) 21 楼 关于 IPropertySet 接口 (esriSystem) 22 楼 关于 IFeatureWorkspace 接口( esriGeoDatabase ) 23 楼 关于 IWorkspaceEdit 接口( esriGeoDatabase )24 楼 关于 IWorkspaceFactory 接口( esriGeoDatabase ) 25 楼 关于 ITopologicalOperator 接口( esriGeometry ) 26 楼 创建 Buffer 并选择里面的要素 27 楼 Merge 要素 Union 要素 28 楼 怎样从 Table 中获取具体需求值的 Row 42 楼 怎样 ZoomInCenter 43 楼 怎样读取一个字段内的所有值 44 楼 怎样编辑更改属性字段的值 45 楼 怎样将 MapControl 中的 Map 复制到 PageLayoutControl 中 47 楼 怎样判断是否出于编辑状态 63 楼 怎样用点创建一个 Polygon 64 楼 怎样运用属性来计算总面积 65 楼 关于属性域的一些心得 82 楼 怎样实现翻折 Flip 方法 83 楼 回答 cumtbGIS 关于 ITopologicalOperator 接口 Clip 方法的问题 87 楼 回答机器猫 FJJ 关于 ISpatialFilter 接口方法的问题(完整函数) 91 楼 回答网友韶华响当当关于更改符号的代码(完整函数) 100 楼 回答网友韶华响当当关于显示属性的代码(完整函数) 101 楼 回答 gjw1015 关于 IFeature 变量添加进 List<IFeature> 数组里的问题 112 楼1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.1. 关于IField 接口( esriGeoDatabase )IField 接口的第一个属性AliasName (只读,获得字段的别名)IField 接口的第二个方法CheckValue (Value ) (方法,对于指定的属性字段,基于字段类型判断参数值是否有效,有效,则返回True ,否则返回False )例子代码:IFeatureClass pFC_SCP_PT;editPT = new FieldClass();editPT.Precision_2 = 8;editPT.Scale_2 = 3;_2 = "ELEV1";editPT.Type_2 = esriFieldType.esriFieldTypeDouble;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和Nam_2,这样就可以区分了,普遍用设置的带有_2的那个属性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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接口也提供了用于查找和绘制元素的方法。
Element是个抽象类,在开发中必须明确指定使用的Element的类型。
另外IElement和ILineElement,ITextElement等并不是父子关系,后者没有Geometry 属性。
53.MapGrid对象
MapGrid是布局视图中的一系列参考线和参考点用来帮助地图使用者快速地确定地图要素的位置如图7中的公里格网,MapGridBorder,MapGridLabel。
MapGrid等。
MapGrid对象由MapGrids来管理,一个MapGrids可以包含多个MapGrid对象
MapGrid是一个抽象类,它的子类有MeasuredGrid,IndexGrid,MgrsGrid,Graticule和CustomOverlayGrid五种,这些子类的对象由MapGridFactory对象创建。
MapGride对象模型图如图所示
54.MapSurround对象
MapSurround对象是与一个地图对象关联的用于修饰地图的辅助图形元素对象如图所示。
它的形状或内容会随着Map属性的变化而自动改变。
如Map视图范围改变后比例尺(ScaleBar)也会自动调整比例,比例尺文本(ScaleBarText)也会相应改变它的比例值。
MapSurround对象由MapSurroundFrame 对象管理,所有的MapSurround对象添加在布局视图上,每一个MapSurround对象可以通过IMap接口的MapSurrounds属性的索引值所获取。
也可以通过IMap接口的MapSurroundCount来遍历布局视图上的所有MapSurround 对象。
所有的MapSurround对象都实现IMapSurround接口,使用IMapSurround接口的Name 属性可以获得MapSurround对象的名称,通过IMapSurround的FitToBound方法可以设置一个MapSurround对象的大小。
同时MapSurround类也实现了IMapSurroundEvents接口,可以用来触发MapSounrround 相关事件如:AfterDraw,BeforeDraw,ContensChanged。
下图是MapSurround对象模型。