Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SDE featureclass(vb.net)上的ArcObjects空间查询失败_Vb.net_Filter_Spatial_Arcobjects - Fatal编程技术网

SDE featureclass(vb.net)上的ArcObjects空间查询失败

SDE featureclass(vb.net)上的ArcObjects空间查询失败,vb.net,filter,spatial,arcobjects,Vb.net,Filter,Spatial,Arcobjects,所以我有一些代码,使用空间过滤器在featurelayer上执行空间选择。这适用于普通featureclass图层,但在SDE featureclass上运行时失败。我想知道是否有人能解释一下问题是什么?我得到的错误是一个HRESULT 0x80041515,它给了我一个错误代码,我可以在任何地方找到任何信息。“我的函数”获取一条多段线和一个图层字符串,并基于直线的中心点选择图层中的多边形。下面是代码示例: ' Creates centerpoint of line envelo

所以我有一些代码,使用空间过滤器在featurelayer上执行空间选择。这适用于普通featureclass图层,但在SDE featureclass上运行时失败。我想知道是否有人能解释一下问题是什么?我得到的错误是一个HRESULT 0x80041515,它给了我一个错误代码,我可以在任何地方找到任何信息。“我的函数”获取一条多段线和一个图层字符串,并基于直线的中心点选择图层中的多边形。下面是代码示例:

        ' Creates centerpoint of line envelope
        Dim pCenterPoint As IPoint = New Point
        pCenterPoint.SpatialReference = pPolyline.SpatialReference
        pCenterPoint.PutCoords((pPolyline.Envelope.XMin + pPolyline.Envelope.XMax) / 2, (pPolyline.Envelope.YMin + pPolyline.Envelope.YMax) / 2)

        ' Expands envelope
        Dim eCenterEnvelope As IEnvelope
        eCenterEnvelope = pCenterPoint.Envelope
        eCenterEnvelope.Expand(pMxDoc.SearchTolerance, pMxDoc.SearchTolerance, False)

        ' Get layer of interest
        Dim pLayer As IFeatureLayer = FindLayerByName(strSelect, layerType.FeatureLayer, False, False)
        pLayer.Selectable = True

        ' Create spatial filter
        Dim spatialFilter As ISpatialFilter = New SpatialFilterClass()
        spatialFilter.Geometry = eCenterEnvelope
        spatialFilter.GeometryField = pLayer.Name
        spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects
        Dim queryFilter As IQueryFilter = New QueryFilterClass()
        queryFilter = CType(spatialFilter, IQueryFilter)

        ' Select features
        Dim pFeatureSelection As IFeatureSelection = pLayer
        pFeatureSelection.Clear() 'clear any current selections in the layer first
        pFeatureSelection.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultAdd, True)
        If pFeatureSelection.SelectionSet.Count = 0 Then
            Return False
        Else
            Return True
        End If
调用pFeatureSelection.SelectFeatures()时,代码失败,但仅当featurelayer属于SDE featureclass时。有什么想法吗

谢谢


Luke

因此,我最终通过将输入几何体字段调整到我创建的空间过滤器来解决这个问题

我更改了这个:spatialFilter.GeometryField=pLayer.Name

为此:spatialFilter.GeometryField=pLayer.FeatureClass.ShapeFieldName

成功