Dim pFeatLyr As IFeatureLayer
pFeatLyr = New FeatureLayer
Dim pMap As IMap
pMap = AxMapControl1.Map
下面查找图层名字为STATES的图层索引号
Dim i As Integer
For i = 0 To pMap.LayerCount - 1
If pMap.Layer(i).Name = "STATES" Then
pFeatLyr = pMap.Layer(i)
Exit For
End If
Next
Dim pFeatClass As IFeatureClass
pFeatClass = pFeatLyr.FeatureClass
下面查找FID为1的要素
Dim pQueryFilter As IQueryFilter
pQueryFilter = New QueryFilter
pQueryFilter.WhereClause = "FID=1"
Dim pFeatCursor As IFeatureCursor
pFeatCursor = pFeatClass.Search(pQueryFilter, True)
Dim pFeat As IFeature
pFeat = pFeatCursor.NextFeature
Dim pGeometry As IGeometry
pGeometry = pFeat.Shape
下面进行缓冲区分析
Dim pTopo As ITopologicalOperator
pTopo = pGeometry
建立缓冲区的距离
Dim pDist1 As Double
Dim pDist2 As Double
pDist1 = ConvertPixelToMapUnits(pMap, 10)
pDist2 = ConvertPixelToMapUnits(pMap, 30)
缓冲区分析
Dim pBuffer1 As IGeometry
pBuffer1 = pTopo.Buffer(pDist1)
Dim pBuffer2 As IGeometry
pBuffer2 = pTopo.Buffer(pDist2)
两个缓冲区差运算得到最终的多边形pResultGeometry
Dim pResultGeometry As IGeometry
pTopo = pBuffer2
pResultGeometry = pTopo.Difference(pBuffer1)
下面在地图中显示出来
Dim pPolygonEle As IFillShapeElement
pPolygonEle = New PolygonElement
Dim pEle As IElement
pEle = pPolygonEle
pEle.Geometry = pResultGeometry
Dim pColor As IRgbColor
pColor = New RgbColor
pColor.Red = 110
pColor.Green = 120
pColor.Blue = 210
Dim pFillSym As ISimpleFillSymbol
pFillSym = New SimpleFillSymbol
pFillSym.Color = pColor
pPolygonEle.Symbol = pFillSym
Dim pGraph As IGraphicsContainer
pGraph = pMap
pGraph.AddElement(pPolygonEle, 0)
Dim pActiveView As IActiveView
pActiveView = pMap
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)