用代码实现ArcGIS中使用绘制的圆形选择要素
- 组件式GIS
- 2007-12-08
- 127热度
- 0评论
相信熟悉ArcGIS的朋友都知道只能使用面状选择,这可是一大遗憾。为了提高使用灵活性本文将以实际代码实现圆形选择要素,大大方便劳动。使用绘制的圆形选择要素,算是弥补ESRI只能使用面状选择的遗憾吧???
Private Sub UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long)
Dim pMxApp As IMxApplication
Dim pMxDoc As IMxDocument
Dim pActiveView As IActiveView
Dim pRubberCirc As IRubberBand
Dim pCircArc As ICircularArc
Dim pGeo As Igeometry
Dim pMap As Imap
Dim pMapPoint As WKSPoint
Dim pDevPoint As tagPOINT
Dim pDisplayTransformation As IDisplayTransformation
Set pMxApp = Application
Set pMxDoc = Application.Document
Set pMap = pMxDoc.FocusMap
Set pActiveView = pMap
' Create a new RubberCircle
Set pRubberCirc = New RubberCircle
' Return a new CircularArc from the tracker object using TrackNew
Set pCircArc = pRubberCirc.TrackNew(pMxDoc.ActiveView.ScreenDisplay, Nothing)
'Convert radius to screen pixels
Set pDisplayTransformation = pMxApp.Display.DisplayTransformation
pMapPoint.x = pCircArc.Radius
pMapPoint.y = pCircArc.Radius
pDisplayTransformation.TransformCoords pMapPoint, pDevPoint, 1, 10
'Set the search tolerance
pMxDoc.SearchTolerancePixels = pDevPoint.x
Dim pSegColl As ISegmentCollection
Set pSegColl = New Polygon
pSegColl.AddSegment pCircArc
Set pGeo = pSegColl
' pMxDoc.SearchTolerance, pMxDoc.SearchTolerance, False
'Refresh the old selection to erase it
pActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing
'Perform the selection using a point created on mouse down
pMap.SelectByShape pGeo, pMxApp.SelectionEnvironment, False
'Refresh again to draw the new selection
pActiveView.PartialRefresh esriViewGeoSelection, Nothing, Nothing
End Sub
Private Function UIToolControl1_Message() As String
UIToolControl1_Message = "Select features by dragging a circle"
End Function
Private Function UIToolControl1_ToolTip() As String
UIToolControl1_ToolTip = "Select features"
End Function