Arcgis vba开发实例

上传人:hs****ma 文档编号:510075170 上传时间:2023-11-12 格式:DOC 页数:11 大小:56KB
返回 下载 相关 举报
Arcgis vba开发实例_第1页
第1页 / 共11页
Arcgis vba开发实例_第2页
第2页 / 共11页
Arcgis vba开发实例_第3页
第3页 / 共11页
Arcgis vba开发实例_第4页
第4页 / 共11页
Arcgis vba开发实例_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Arcgis vba开发实例》由会员分享,可在线阅读,更多相关《Arcgis vba开发实例(11页珍藏版)》请在金锄头文库上搜索。

1、Arcgis vba开发实例在ARCGIS属性表中,一般不会包含实体几何信息,可以采取VBA进行计算。下面是几个简单的代码(转载自集思学院)特点:1推荐给不会使用AO的朋友2可以保存为CAL文件以备下次方便使用使用方法1打开属性表,选择计算的字段,右点选择Calculate Values;2.选择“是”,进入Field Calculator;2选择Advance选项;3 在Pre-Logic VBA Script Code编辑框中输入VBA代码;4在下面编辑框中输入赋值部分.1-点坐标XVBA部分:Dim pGeo As IGeometrySet pGeo = ShapeDim pPoint

2、As IPointSet pPoint = pGeo赋值部分:pPoint.X2-点坐标YVBA部分:同上赋值部分:pPoint.Y坐标值为文件存储的固有值,和是否使用On the Fly坐标表示无关。返回当前显示的坐标值参看8,93-多边形周长VBA部分:Dim pGeo As IGeometrySet pGeo = ShapeDim pPolygon As IPolygonSet pPolygon = pGeo赋值部分:pPolygon.Length4-多边形面积VBA部分:Dim pGeo As IGeometrySet pGeo = ShapeDim pPolygon As IPoly

3、gonSet pPolygon = pGeoDim pArea As IAreaSet pArea = pPolygon赋值部分:pArea.Area5-多边形重心XVBA部分:Dim pGeo As IGeometrySet pGeo = ShapeDim pPolygon As IPolygonSet pPolygon = pGeoDim pArea As IAreaSet pArea = pPolygonDim pPoint As IPointSet pPoint = pArea.Centroid赋值部分:pPoint.X6-多边形重心YVBA部分:同上赋值部分:pPoint.Y7-Po

4、lyline长度VBA部分:Dim pGeo As IGeometrySet pGeo = ShapeDim pPolyline As IPolylineSet pPolyline = pGeoDim pCurve As IPolycurveSet pCurve = pPolyline赋值部分:pCurve.Length8-表示点坐标XVBA部分:Dim pDoc As IMxDocumentSet pDoc = ThisDocumentDim pSpRef As ISpatialReferenceSet pSpRef = pDoc.FocusMap.SpatialReferenceDim p

5、Clone As ICloneSet pClone = ShapeDim pGeo As IGeometrySet pGeo = pClone.CloneDim pPoint as IPointSet pPoint = pGeopGeo.Project pSpRef赋值部分:pPoint.X9-表示点坐标YVBA部分:同上赋值部分:pPoint.Y坐标值为On the Fly显示的坐标,不是文件存储的固有坐标10-连续编号VBA部分:Static lCount as longlCount=lCount+1赋值部分:lCount (从1开始)lCount-1 (从0开始)VBA+AO入门50例完

6、全注释版网上下的码,自己加的注。初学,瞎搞,不好,见笑。和跟我一样的初学者探讨一下怎么入门最快最好,为中国GIS教育事业添一根小火柴1.Sub MyMacro()Dim pMxDocument As IMxDocument地图文档Set pMxDocument = Application.Document获取当前应用程序的文档MsgBox pMxDocument.FocusMap.Name显示当前地图的名称End Sub2.Sub MyMacro()Dim pMxDocument As IMxDocument地图文档Dim pMaps As IMaps地图集Dim pMap As IMap地图

7、Set pMxDocument = Application.Document获取当前应用程序的文档Set pMaps = pMxDocument.Maps获取当前地图文档的地图集If pMaps.Count 1 Then如果该地图集的地图数大于1Set pMap = pMaps.Item(1)获取该地图集中的第一幅地图MsgBox pMap.Name显示该地图的名称End IfEnd Sub3.Sub MyMacro()Dim pMxDocument As IMxDocument地图文档Dim pMap As IMap地图Dim lCount As LongDim lIndex As Long

8、Set pMxDocument = Application.Document获取当前应用程序的文档Set pMap = pMxDocument.FocusMap获取当前地图lCount = 0For lIndex = 0 To (pMap.LayerCount - 1)If TypeOf pMap.Layer(lIndex) Is IFeatureLayer Then如果当前地图的第lIndex层的类型是IFeatureLayerlCount = lCount + 1计数器加1End IfNext lIndexMsgBox Number of the feature layers & _in

9、the active map: & lCount显示当前地图的要素层的总数End Sub4.Sub MyMacro()Dim pMxDocument As IMxDocument获取当前应用程序的文档Dim pMaps As IMaps地图集Dim pMap As IMap地图On Error GoTo SUB_ERROR错误处理Set pMxDocument = Application.Document获取当前应用程序的文档Set pMaps = pMxDocument.Maps获取当前地图文档的地图集Set pMap = pMaps.Item(1)获取该地图集中的第一幅地图MsgBox p

10、Map.Name显示该地图的名称Exit SubSUB_ERROR:行标签MsgBox Error: & Err.Number & - & Err.Description显示错误数和错误信息End Sub5.是图层可视Public Sub MakeLayerVisible()Dim pMxDocument As IMxDocument地图文档Dim pMap As IMap地图Dim pFeatureLayer As IFeatureLayer要素层Dim pActiveView As IActiveView活动视图Dim pContentsView As IContentsView窗口内容表

11、获取地图的第一层Set pMxDocument = ThisDocument获取当前应用程序的文档Set pMap = pMxDocument.FocusMap获取当前地图Set pFeatureLayer = pMap.Layer(0)获取当前地图的第一层如果要素层不可见,则使其可见If Not pFeatureLayer.Visible ThenpFeatureLayer.Visible = TrueEnd If刷新地图Set pActiveView = pMap将当前地图设为活动地图pActiveView.Refresh刷新刷新窗口内容表Set pContentsView = pMxDo

12、cument.CurrentContentsView获取当前地图文档的窗口内容表pContentsView.Refresh pFeatureLayer刷新End Sub6.按NAME查询要素Private Function GetCountyFeature(pFeatureLayer As IFeatureLayer, strCountyName As String) As IFeature查找要素类Dim pFeatureClass As IFeatureClass要素类Dim pQueryFilter As IQueryFilter查询过滤器Dim pFeatureCursor As IF

13、eatureCursorSet pFeatureClass = pFeatureLayer.FeatureClass从要素层获取要素类Set pQueryFilter = New QueryFilter创建一个新的查询过滤器pQueryFilter.WhereClause = NAME = & strCountyName & 按郡名查找Set pFeatureCursor = pFeatureClass.Search (pQueryFilter, False)获取查询到的要素对象获取要素Dim pFeature As IFeature要素 Set pFeature = pFeatureCursor.NextFeature获取查询结果的下一个要素If pFeature Is Nothing Then如果该要素不存在Set GetC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号