1 votos

¿Cuáles son las opciones para trabajar en torno al número máximo de registros devueltos para una tarea de consulta en ArcGIS Server 9.3.1?

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

0voto

Niall C. Puntos 1234

No tengo un servidor 9.3 para hacer capturas de pantalla.
pero aquí como 10.1
10.1

0voto

doekman Puntos 5187

Aumentamos el MaxRecordCount pero la clave parece estar en alterar la consulta para que funcione en una capa poligonal con menos atributos. Lleva algo de tiempo, pero funciona como se esperaba sin tener que dividir el área de interés en trozos más pequeños.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X