arcengine开发空间格网大小无效解决办法

数据导入Geodatabase中时,程序运行出现错误提示:“The spatial index grid size is invalid”。

代码中加上 IFeatureClassLoad设置,将其设置为true,导入完成后,再设置为false。注意,mdb数据库无法实现这个接口

 Public Shared Sub Append(ByVal pInFtCls As IFeatureClass, ByRef pOutFtCls As IFeatureClass, Optional ByVal deleteAllFeatures As Boolean = False, Optional ByVal showDialog As Boolean = True, Optional ByVal WhereClause As String = "", Optional ByVal ZAndMSameAsInput As Boolean = True)
      
        If (pInFtCls Is Nothing Or pOutFtCls Is Nothing) Then
            Return
        End If
        If (deleteAllFeatures) Then
            CType(pOutFtCls, ITable).DeleteSearchedRows(Nothing)
        End If
        Dim pFlt As IQueryFilter = Nothing
        If String.IsNullOrEmpty(WhereClause) = False Then
            pFlt = New QueryFilter()
            pFlt.WhereClause = WhereClause
        End If
        Dim pFCLoad As IFeatureClassLoad = Nothing ' = pOutFtCls
        Try
            pFCLoad = pOutFtCls
            pFCLoad.LoadOnlyMode = True‘加上这句可解决空间格网大小无效的问题
        Catch ex As Exception


        End Try


        Dim pInCursor As IFeatureCursor = pInFtCls.Search(pFlt, False)
        Dim pFt As IFeature = pInCursor.NextFeature
        Dim pOutCursor As IFeatureCursor = pOutFtCls.Insert(True)
        Dim pBuffer As IFeatureBuffer
        Dim pProgressBar As SCRS.ArcGis.PlugSystem.ProgressDialog = Nothing  ' = New SCRS.ArcGis.PlugSystem.ProgressDialog("添加数据", "", pInFtCls.FeatureCount(pFlt))
        If (showDialog) Then
            pProgressBar = New SCRS.ArcGis.PlugSystem.ProgressDialog("添加数据", "", pInFtCls.FeatureCount(pFlt))
        End If
        Dim i As Integer = 0
        While pFt IsNot Nothing
            Try
                If (pProgressBar IsNot Nothing) Then
                    pProgressBar.Step()
                End If
                i += 1
                pProgressBar.Description = String.Format("当前写入图层{0}第{1}/{2}条记录", pInFtCls.AliasName, i, pProgressBar.MaxRange)
                ' System.Windows.Forms.Application.DoEvents()
                pBuffer = pOutFtCls.CreateFeatureBuffer
                If (ZAndMSameAsInput) Then
                    pBuffer.Shape = SCRS.MapQuery.FeatureClass.setZAndMSameAsFeatureClass(pFt.ShapeCopy, pOutFtCls, False, False)
                Else
                    pBuffer.Shape = pFt.ShapeCopy ' SCRS.MapQuery.FeatureClass.setZAndMSameAsFeatureClass(pFt.ShapeCopy, pOutFtCls, False, False)
                End If
                  ' pNewFt.Shape = pFt.ShapeCopy
                SCRS.ArcGis.PlugSystem.Esri_Db_Util.AddFields(pBuffer, pFt)
                ' ScrsControls.ScrsDatabaseOpClass.CopyBaseAttribute(pFt, pBuffer)
                pOutCursor.InsertFeature(pBuffer)
                If i Mod 3000 = 0 Then pOutCursor.Flush()
            Catch ex As Exception
                '  Windows.Forms.MessageBox.Show(ex.Message)
            End Try
            pFt = pInCursor.NextFeature
        End While
        If (pProgressBar IsNot Nothing) Then
            pProgressBar.HideDialog()
        End If
        pOutCursor.Flush()
        If (pFCLoad IsNot Nothing) Then
            pFCLoad.LoadOnlyMode = False
        End If
        ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pInCursor)
        pInCursor = Nothing
        ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pOutCursor)
        pOutCursor = Nothing
    End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值