📄 缓冲分析.vb
字号:
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Controls
Imports ESRI.ArcGIS.Display
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.GlobeCore
Imports ESRI.ArcGIS.Output
Imports ESRI.ArcGIS.SystemUI
Public Class 缓冲分析
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim pFillsymbol As IFillSymbol
pFillsymbol = New SimpleFillSymbol
Dim myColor As IRgbColor
myColor = New RgbColor
myColor.Red = 255
pFillsymbol.Color = myColor
Dim pPiontColor As IRgbColor
pPiontColor = New RgbColor
pPiontColor.Blue = 255
Dim pMarkersymbol As ISimpleMarkerSymbol
pMarkersymbol = New SimpleMarkerSymbol
pMarkersymbol.Color = pPiontColor
pMarkersymbol.Size = 2
pMarkersymbol.Outline = True
Dim pPoint As IPoint
pPoint = New Point
pPoint.PutCoords(Convert.ToInt32(TextBox1.Text), Convert.ToInt32(TextBox2.Text))
Dim pTop As ITopologicalOperator
pTop = pPoint
Dim pCircle As IPolygon
pCircle = pTop.Buffer(Convert.ToInt32(TextBox3.Text))
Form1.AxMapControl1.DrawShape(pCircle, pFillsymbol)
Form1.AxMapControl1.DrawShape(pPoint, pMarkersymbol)
Dim pFeatLyr0 As IFeatureLayer
pFeatLyr0 = Form1.AxMapControl1.Map.Layer(0)
Dim pFeatureClass0 As IFeatureClass
pFeatureClass0 = pFeatLyr0.FeatureClass
Dim pDataTable0 As DataTable
pDataTable0 = New DataTable(pFeatureClass0.AliasName)
Dim pDataColumn0 As DataColumn
Dim count0 As Integer
For count0 = 0 To pFeatureClass0.Fields.FieldCount - 1
pDataColumn0 = New DataColumn(pFeatureClass0.Fields.Field(count0).Name)
pDataTable0.Columns.Add(pDataColumn0)
pDataColumn0.Dispose()
Next count0
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim pSpatialQuery As ISpatialFilter
pSpatialQuery = New SpatialFilter
pSpatialQuery.GeometryField = "SHAPE"
pSpatialQuery.Geometry = pCircle
pSpatialQuery.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains '
Dim pFeatureCursorbuff As IFeatureCursor
Dim pLayer0 As IFeatureLayer
pLayer0 = Form1.AxMapControl1.Map.Layer(0)
pFeatureCursorbuff = pLayer0.Search(pSpatialQuery, False)
Dim pFeaturebuff As IFeature
pFeaturebuff = pFeatureCursorbuff.NextFeature
Do Until pFeaturebuff Is Nothing
Form1.AxMapControl1.DrawShape(pFeaturebuff.Shape)
Dim pDataRow As DataRow
pDataRow = pDataTable0.NewRow
Dim count4 As Integer
For count4 = 0 To pFeatureClass0.Fields.FieldCount - 1
If pFeatureClass0.Fields.FindField(pFeatureClass0.ShapeFieldName) = count4 Then '不懂
pDataRow(count4) = pFeatureClass0.ShapeType.ToString()
Else
pDataRow(count4) = pFeaturebuff.Value(count4).ToString()
End If
Next count4
pDataTable0.Rows.Add(pDataRow)
pFeaturebuff = pFeatureCursorbuff.NextFeature
Loop
选择集显示.DataGridView1.DataSource = pDataTable0
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim pFeatLyr0 As IFeatureLayer
Dim pFeatLyr1 As IFeatureLayer
Dim pFeatLyr2 As IFeatureLayer
pFeatLyr0 = Form1.AxMapControl1.Map.Layer(0)
pFeatLyr1 = Form1.AxMapControl1.Map.Layer(1)
pFeatLyr2 = Form1.AxMapControl1.Map.Layer(2)
Dim pFeatureSel As IFeatureSelection
If ComboBox1.Text = "cities" Then
pFeatureSel = pFeatLyr0
ElseIf ComboBox1.Text = "roads" Then
pFeatureSel = pFeatLyr1
Else
pFeatureSel = pFeatLyr2
End If
Dim pSelectionSet As ISelectionSet
pSelectionSet = pFeatureSel.SelectionSet
Dim pFeatureCursor As IFeatureCursor
pSelectionSet.Search(Nothing, False, pFeatureCursor)
Dim pFeature As IFeature
pFeature = pFeatureCursor.NextFeature
Dim pCircle As IPolygon
pCircle = New Polygon
'Dim pbuffercollection As IGeometryCollection
'pbuffercollection = New Polygon
Do Until pFeature Is Nothing
If ComboBox1.Text = "cities" Then
Dim pFillsymbol As IFillSymbol
pFillsymbol = New SimpleFillSymbol
Dim myColor As IRgbColor
myColor = New RgbColor
myColor.Red = 255
pFillsymbol.Color = myColor
Dim pPiontColor As IRgbColor
pPiontColor = New RgbColor
pPiontColor.Blue = 255
Dim pMarkersymbol As ISimpleMarkerSymbol
pMarkersymbol = New SimpleMarkerSymbol
pMarkersymbol.Color = pPiontColor
pMarkersymbol.Size = 2
pMarkersymbol.Outline = True
Dim pTop As ITopologicalOperator
pTop = pFeature.Shape
pCircle = pTop.Buffer(Convert.ToInt32(TextBox3.Text))
'pbuffercollection.AddGeometry(pCircle)
Form1.AxMapControl1.DrawShape(pCircle, pFillsymbol)
Form1.AxMapControl1.DrawShape(pFeature.Shape, pMarkersymbol)
End If
If ComboBox1.Text = "roads" Then
Dim pFillsymbol As IFillSymbol
pFillsymbol = New SimpleFillSymbol
Dim myColor As IRgbColor
myColor = New RgbColor
myColor.Red = 255
pFillsymbol.Color = myColor
Dim pLineColor As IRgbColor
pLineColor = New RgbColor
pLineColor.Blue = 255
Dim pLinesymbol As ISimpleLineSymbol
pLinesymbol = New SimpleLineSymbol
pLinesymbol.Color = pLineColor
pLinesymbol.Width = 2
Dim pTop As ITopologicalOperator
pTop = pFeature.Shape
pCircle = pTop.Buffer(Convert.ToInt32(TextBox3.Text))
'pbuffercollection.AddGeometry(pCircle)
Form1.AxMapControl1.DrawShape(pCircle, pFillsymbol)
Form1.AxMapControl1.DrawShape(pFeature.Shape, pLinesymbol)
End If
If ComboBox1.Text = "states" Then
Dim pFillsymbol As IFillSymbol
pFillsymbol = New SimpleFillSymbol
Dim myColor As IRgbColor
myColor = New RgbColor
myColor.Red = 255
pFillsymbol.Color = myColor
Dim pPloyColor As IRgbColor
pPloyColor = New RgbColor
pPloyColor.Blue = 255
Dim pPloysymbol As ISimpleFillSymbol
pPloysymbol = New SimpleFillSymbol
pPloysymbol.Color = pPloyColor
Dim pTop As ITopologicalOperator
pTop = pFeature.Shape
pCircle = pTop.Buffer(Convert.ToInt32(TextBox3.Text))
'pbuffercollection.AddGeometry(pCircle)
Form1.AxMapControl1.DrawShape(pCircle, pFillsymbol)
Form1.AxMapControl1.DrawShape(pFeature.Shape, pPloysymbol)
End If
pFeature = pFeatureCursor.NextFeature
Loop
'Dim count As Integer
'For count = 0 To pbuffercollection.GeometryCount - 1
'Dim pCollCircle As IPolygon
'pCollCircle = pbuffercollection.Geometry(count)
Dim pSpatialQuery As ISpatialFilter
pSpatialQuery = New SpatialFilter
pSpatialQuery.GeometryField = "SHAPE"
pSpatialQuery.Geometry = pCircle
pSpatialQuery.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains '
Dim pFeatureCursorbuff As IFeatureCursor
pFeatureCursorbuff = pFeatLyr0.Search(pSpatialQuery, False)
Dim pFeaturebuff As IFeature
pFeaturebuff = pFeatureCursorbuff.NextFeature
Dim pFeatureClass0 As IFeatureClass
pFeatureClass0 = pFeatLyr0.FeatureClass
Dim pDataTable0 As DataTable
pDataTable0 = New DataTable(pFeatureClass0.AliasName)
Dim pDataColumn0 As DataColumn
Dim count0 As Integer
For count0 = 0 To pFeatureClass0.Fields.FieldCount - 1
pDataColumn0 = New DataColumn(pFeatureClass0.Fields.Field(count0).Name)
pDataTable0.Columns.Add(pDataColumn0)
pDataColumn0.Dispose()
Next count0
Do Until pFeaturebuff Is Nothing
Form1.AxMapControl1.DrawShape(pFeaturebuff.Shape)
Dim pDataRow As DataRow
pDataRow = pDataTable0.NewRow
Dim count4 As Integer
For count4 = 0 To pFeatureClass0.Fields.FieldCount - 1
If pFeatureClass0.Fields.FindField(pFeatureClass0.ShapeFieldName) = count4 Then '不懂
pDataRow(count4) = pFeatureClass0.ShapeType.ToString()
Else
pDataRow(count4) = pFeaturebuff.Value(count4).ToString()
End If
Next count4
pDataTable0.Rows.Add(pDataRow)
pFeaturebuff = pFeatureCursorbuff.NextFeature
Loop
选择集显示.DataGridView1.DataSource = pDataTable0
'Next count
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
选择集显示.Show()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -