Estoy intentando devolver características de polígonos que intersecan un polígono mayor que define mi área de interés. En algunos casos funciona, pero cuando el área de interés es grande (7000 registros de intersección) no funciona. La propiedad MaxRecordCount en el archivo de configuración en Ubicación de instalación de ArcGIS \Server\user\cfg\configuration archivo nombre.cfg se aumentó a 10.000, pero seguía sin devolver ningún registro. He leído sobre un límite superior de 2000 registros y las consultas que funcionan correctamente devuelven menos de este número de registros. Una idea es dividir el área de interés en partes. Un FAQ que he leído sugiere iterar a través de bloques consecutivos de resultados en el cliente utilizando el campo que contiene una clave única (por ejemplo, clave primaria) para seguir el progreso. Y parece que el número de atributos en los registros devueltos puede tener un impacto. ¿Qué funciona para los demás?
Yo no soy el programador, pero voy a incluir el código que se utiliza.
Private Sub QueryTask_ExecuteCompleted_Zoom_Filter_Events_Layer(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs)
'special code just for Event Filter option
'save the selected polygon to use to retrieve all parcels within it
Try
Dim featureSet As FeatureSet = args.FeatureSet
Dim myGraphicsLayerSelectedFeature As ESRI.ArcGIS.Client.GraphicsLayer = TryCast(MyMap.Layers("GraphicsLayerSelectedFeature"),
ESRI.ArcGIS.Client.GraphicsLayer)
myGraphicsLayerSelectedFeature.ClearGraphics()
If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then
Dim selectedFeature As Graphic = featureSet.Features(0)
' *****************************************************
' Hightlight selected feature
selectedFeature.Symbol = TryCast(gridGISMapInteractive.Resources("BlueLineFillSymbol"), ESRI.ArcGIS.Client.Symbols.Symbol)
'graphicsLayer.Graphics.Add(selectedFeature)
myGraphicsLayerSelectedFeature.Graphics.Add(selectedFeature)
' *****************************************************
' Zoom to selected feature (define expand percentage)
Dim selectedFeatureExtent As ESRI.ArcGIS.Client.Geometry.Envelope = selectedFeature.Geometry.Extent
Dim expandPercentage As Double = 90
Dim widthExpand As Double = selectedFeatureExtent.Width * (expandPercentage / 100)
Dim heightExpand As Double = selectedFeatureExtent.Height * (expandPercentage / 100)
'save the selected polygon envelope
polygonExtent = New ESRI.ArcGIS.Client.Geometry.Envelope(selectedFeatureExtent.XMin, selectedFeatureExtent.YMin, selectedFeatureExtent.XMax,
selectedFeatureExtent.YMax)
MyMap.ZoomTo(polygonExtent)
' *****************************************************
'query the parcels in the selected filter polygon
Dim strQueryLayerID As String = CType(Convert_Web_Service_Layer_Name_To_Index("Parcel MBL"), String)
'query a specified layer to find data that intersect with the polygon buffer around the selected point
Dim queryTask As New QueryTask(CityOfWorcester.Url & "/" & strQueryLayerID)
AddHandler queryTask.ExecuteCompleted, AddressOf QueryTask_ExecuteCompleted_Polygon_Parcels_Filter_Events
AddHandler queryTask.Failed, AddressOf QueryTask_Failed_Polygon_Parcels
Dim query As New ESRI.ArcGIS.Client.Tasks.Query()
query.ReturnGeometry = True
'query.Geometry = polygonExtent
'query.Geometry = selectedFeature.Geometry
query.Geometry = selectedFeatureExtent
'query.SpatialRelationship = SpatialRelationship.esriSpatialRelContains
query.SpatialRelationship = SpatialRelationship.esriSpatialRelIntersects
'specify which fields to return (must be case specific)
'Output Fields are specific to the layer being queried
query.OutFields.AddRange(New String() {"X_COORD"})
query.OutFields.AddRange(New String() {"Y_COORD"})
query.OutFields.AddRange(New String() {"HOUSE_NO"})
query.OutFields.AddRange(New String() {"STREET"})
query.OutFields.AddRange(New String() {"GISGPV_MBL"})
query.OutFields.AddRange(New String() {"MBL"})
queryTask.ExecuteAsync(query)
End If
Catch ex As Exception
HandleError(ex, False)
End Try
End Sub