• ArcEngine语法笔记(VB)


    1、获取图层字段

        Dim pTable As ITable = pLayer
        Dim pField As IField
        For i As Integer = 0 To pTable.Fields.FieldCount - 1
    
          pField = pTable.Fields.Field(i)
         
        Next

     2、布局视图中的Element分离和合并

      Private Sub PartEleMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PartEleMenuItem.Click
        Dim graphicsContainer As IGraphicsContainer = TryCast(PageLayoutPrint.ActiveView, IGraphicsContainer)
        Dim pGraphContSel As IGraphicsContainerSelect = TryCast(graphicsContainer, IGraphicsContainerSelect)
    
        pGraphContSel.UnselectAllElements()
        Dim pGroupEle As IGroupElement = Right_MenuStrip.Tag
        If IsNothing(pGroupEle) Then Exit Sub
        For i As Integer = 0 To pGroupEle.ElementCount - 1
          Dim pElement As IElement = pGroupEle.Element(i)
          pGraphContSel.SelectElement(pElement)
          graphicsContainer.AddElement(pElement, 0)
        Next
      
        Right_MenuStrip.Tag = Nothing
        PageLayoutPrint.ActiveView.Refresh()
      End Sub
      '合并Element
      Private Sub MargerEleMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MargerEleMenuItem.Click
        Dim graphicsContainer As IGraphicsContainer = TryCast(PageLayoutPrint.ActiveView, IGraphicsContainer)
        Dim pGraphContSel As IGraphicsContainerSelect = TryCast(graphicsContainer, IGraphicsContainerSelect)
        Dim pGroupEle As IGroupElement = New GroupElement()
        For i As Integer = 0 To pGraphContSel.ElementSelectionCount - 1
          pGroupEle.AddElement(pGraphContSel.SelectedElement(i))
        Next
        pGraphContSel.UnselectAllElements()
        Dim pElement As IElement = CType(pGroupEle, IElement)
        graphicsContainer.AddElement(pElement, 0)
        pGraphContSel.SelectElement(pElement)
        PageLayoutPrint.ActiveView.Refresh()
      End Sub

    效果如下图:

     合并前:

    合并后:

    3、批量修改字段值

    VB

      ''' <summary>
      ''' 字段值更新,将Int型的字段值转换成date类型的字段值
      ''' </summary>
      ''' <param name="pFeatureLayer">需要转换的图层</param>
      ''' <returns></returns>
      ''' <remarks></remarks>
      Private Function UpdateFieldValue(ByVal pFeatureLayer As IFeatureLayer)
        Dim pFeatureClass As IFeatureClass = pFeatureLayer.FeatureClass
    Dim pFeatureCursor As IFeatureCursor = pFeatureClass.Search(Nothing, False) Dim pFeature As IFeature = pFeatureCursor.NextFeature() While Not IsNothing(pFeature) Dim timevalue As String = pFeature.Value(6).ToString() & "/01/01" '这里的字段索引固定 Dim time As DateTime = CType(timevalue, DateTime) pFeature.Value(19) = time '这里的字段索引固定 pFeature.Store() pFeature = pFeatureCursor.NextFeature() End While System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor) End Function

     C#

     /// <summary>
            /// 字段值更新根据字段名
            /// </summary>
            /// <param name="pFeatureLayer">要素图层</param>
            /// <param name="fieldName">字段名</param>
            private void  UpdateFieldValue(IFeatureLayer pFeatureLayer,string fieldName)
            {
                IFeatureClass pFeatureClass =pFeatureLayer.FeatureClass;
                IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
                IFeature pFeature = pFeatureCursor.NextFeature();
                while(pFeature!=null)
                {
                    pFeature.set_Value(pFeatureClass.FindField(fieldName), 70);
                    pFeature.Store();
                    pFeature = pFeatureCursor.NextFeature();
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
            }

    4、ImageComboBoxEdit 加载字段

    Friend WithEvents cboLayerList As DevExpress.XtraEditors.ImageComboBoxEdit
      Private Sub AddLayer()
        cboLayerList.Properties.Items.Clear()
        For i As Integer = 0 To m_AssetApplication.MainMapCon.LayerCount - 1
          Dim icbi As ImageComboBoxItem = New ImageComboBoxItem
          Dim pLayer As ILayer = m_AssetApplication.MainMapCon.get_Layer(i)
          icbi.Description = pLayer.Name
          icbi.Value = pLayer
          cboLayerList.Properties.Items.Add(icbi)
        Next
        cboLayerList.EditValue = m_AssetApplication.MainMapCon.get_Layer(0)
      End Sub

     5、图层查询 IFeatureSelection

      Protected Overridable Function QueryByType(ByVal querystring As String) As Boolean
        Dim pQueryFilter As IQueryFilter = New QueryFilter
        pQueryFilter.WhereClause = querystring
        Dim pFeatureLayer As IFeatureLayer = tmpLayer
        Dim pSelection As IFeatureSelection = pFeatureLayer
        If CheckSearchFromSelection.Checked Then '从选择集中查询数据
          pSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultAnd, False)
        Else    ‘从图层中查询数据
          m_AssetApplication.MainMapCon.Map.ClearSelection() '清空选择集
          pSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, False)
        End If
        If pSelection.SelectionSet.Count = 0 Then
          MessageBox.Show("查询结果为空!")
          Return True
        End If
        Return False
      End Function

     6、查询删除数据

     Dim pQueryFilter As IQueryFilter = New QueryFilter()
     pQueryFilter.WhereClause = PointId & " in (" & ids & ")" 'ids='1','2'
     Dim pTable As ITable = pPointFeaCs
     pTable.DeleteSearchedRows(pQueryFilter)

     7、添加REST服务地址

    Dim pRestLayer As IMapServerRESTLayer = New MapServerRESTLayer
    pRestLayer.Connect("http://172.0.0.1:7080/PBS/rest/services/MyPBSService1/MapServer")
    pMap.AddLayer(pRestLayer)
  • 相关阅读:
    JAVA集合框架01
    java基础===>点餐系统
    java基础===>数组的应用
    java基础===>双重循环打印图形
    java基础 ===》循环结构
    JAVA基础==>witch的应用!
    选择结构!
    路由系统
    flask使用及返回值、配置文件的四种方式
    短信验证码操作
  • 原文地址:https://www.cnblogs.com/GIScore/p/5303123.html
Copyright © 2020-2023  润新知