ArcGIS 空间查询
时间:2010-12-30
来源:01之间穿梭
在手机上看
手机扫描阅读
Private Sub CB_Search_Click()
'加宽FORM窗口
If infofrm.Width = 185 Then
infofrm.Width = 442
End If
Dim pMxDocument As IMxDocument
Dim pMap As IMap
Dim pActView As IActiveView
Set pMxDocument = ThisDocument
Set pMap = pMxDocument.FocusMap
Set pActView = pMxDocument.ActiveView
Dim pPointX As Double
Dim pPointY As Double
On Error GoTo ErrorHandler:
pPointX = Right(lrtstoplist.List(12), Len(lrtstoplist.List(12)) - 12) / 1000000
pPointY = Right(lrtstoplist.List(13), Len(lrtstoplist.List(13)) - 11) / 1000000
Dim pPoint As IPoint
Set pPoint = New Point
pPoint.X = pPointX
pPoint.Y = pPointY
'定义矩形进行空间查询
Dim player As ILayer
Dim pflayer As IFeatureLayer
Dim pFClass As IFeatureClass
Dim pSpaFilter As ISpatialFilter
Dim pFSelection As IFeatureSelection
Dim pSelSet As ISelectionSet
Dim pFeatureCursor As IFeatureCursor
Dim pFeature As IFeature
'200米地理距离换算成像素距离
Dim dDistance As Double
Dim pUnitConverter As IUnitConverter
Set pUnitConverter = New UnitConverter
dDistance = pUnitConverter.ConvertUnits(200, esriMeters, esriDecimalDegrees)
'Dim CreateEnvXY As IEnvelope '矩形
'以鼠标单击点为中心,边长6像素 创建矩形
'Set CreateEnvXY = New esriGeometry.Envelope
'CreateEnvXY.PutCoords pPointX - dDistance, pPointY - dDistance, pPointX + dDistance, pPointY + dDistance
'以pPoint为圆心,dDistance为半径画圆
Dim pCreateCircle As IConstructCircularArc
Dim pCArc As ICircularArc
Set pCreateCircle = New CircularArc
Set pCArc = pCreateCircle
pCreateCircle.ConstructCircle pPoint, dDistance, True
Dim pSeg As ISegment
Dim pSegcoll As ISegmentCollection
Dim pring As IRing
Dim pGeomColl As IGeometryCollection
Set pSeg = pCArc
Set pSegcoll = New Ring
pSegcoll.AddSegment pSeg
Set pring = pSegcoll
Set pGeomColl = New Polygon
pGeomColl.AddGeometry pring
'空间查询
Set player = pMap.Layer(2)
Set pflayer = player 'QI
Set pFSelection = pflayer
Set pFClass = pflayer.FeatureClass
Set pSpaFilter = New SpatialFilter
Set pSpaFilter.Geometry = pGeomColl
pSpaFilter.SpatialRel = esriSpatialRelContains
pFSelection.SelectFeatures pSpaFilter, esriSelectionResultNew, False
Set pSelSet = pFSelection.SelectionSet
'显示查询的公交车站信息
infofrm.gongjiaolistbox.Clear '清空ListBox数据
infofrm.gongjiaolistbox.ForeColor = &H80000012
If pSelSet.Count < 1 Then
infofrm.gongjiaolistbox.AddItem ""
infofrm.gongjiaolistbox.AddItem "没有符合条件的公交站点!"
infofrm.gongjiaolistbox.ForeColor = &HFF&
Exit Sub
End If
Dim pfields As IFields
Set pfields = pFClass.Fields
Dim i As Integer
Dim selindex As Integer
Dim pfield As IField
pSelSet.Search Nothing, False, pFeatureCursor
Set pFeature = pFeatureCursor.NextFeature
For selindex = 1 To pSelSet.Count
For i = 0 To pfields.FieldCount - 1
Set pfield = pfields.Field(i)
If pfield.Type <> esriFieldTypeGeometry And pfield.Type <> esriFieldTypeBlob Then
infofrm.gongjiaolistbox.AddItem pfield.Name & "—>" & pFeature.Value(i)
End If
Next
infofrm.gongjiaolistbox.AddItem "================================"
Set pFeature = pFeatureCursor.NextFeature
Next
pActView.Refresh
Exit Sub
ErrorHandler:
MsgBox Err.Description
End Sub
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28















