⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 缓冲分析.vb

📁 GIS的Arcengine编程
💻 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 + -