Итак, у меня есть код, который выполняет пространственный выбор на сайте, используя пространственный фильтр. Это отлично работает для обычных слоев классного класса, но сбой при запуске в классе свойств SDE. Мне интересно, может ли кто-нибудь пролить свет на то, что может быть проблемой? Ошибка, которую я получаю, - это HRESULT 0x80041515, который дает мне код ошибки, который я могу найти любую информацию в любом месте. Моя функция принимает полилинию и строку уровня и выбирает многоугольник в слое на основе центральной точки линии. Вот пример кода:Ошибка пространственного запроса ArcObjects в объектном классе SDE (vb.net)
' 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 принадлежит featureclass SDE. Есть идеи?
Спасибо,
Люк