3 votos

¿Existe una forma de obtener el alcance de una consulta y no cada característica individual?

Estoy utilizando esta solución para obtener el alcance de una consulta. Me devuelve todas las características geométricas al cliente, donde puedo calcular la extensión de todas las geometrías individuales. Dado que estas características pueden ser polilíneas y polígonos, este es un proceso muy costoso. ¿Existe una forma de formular la consulta de manera que sólo se devuelva la extensión?

    app.filter.on("zoom-to-features", () => {
    console.log("set map extent to include all annotations matching this criteria");
    all(common.GeoUtil
        .getFeatureLayers(app.map)
        .map(l => {
            var query = new EsriQuery();
            query.returnGeometry = true;
            query.outFields = [];
            query.where = where;
            return l.queryFeatures(query);
        })).then(results => {
            var features = <Array<{ features: Array<esri.Graphic> }>><any>results;
            var extents = features.map(result =>
                result.features
                    .map(f => common.GeoUtil.getExtent(f.geometry))
                    .reduce((a, b) => a ? a.union(b) : b, null));

            var extent = extents.reduce((a, b) => a ? b ? a.union(b) : a : b, null);
            extent && app.map.setExtent(extent);
        });

});

2voto

user21012 Puntos 21

Parece que quieres usar graphicsUtils.graphicsExtent()

https://developers.arcgis.com/javascript/jsapi/esri.graphicsutils-amd.html#graphicsextent

Editar:
Desde mi publicación original, también es posible, tanto en los servicios de características alojados en ArcGIS Online como en ArcGIS Server 10.3.1, consultar explícitamente la extensión de las características estableciendo el nuevo parámetro returnExtentOnly a true

puede ver un ejemplo en acción aquí

0 votos

Buen punto, pero eso aún requería que las geometrías se cargaran en el cliente.

0 votos

Gracias por la clasificación. No creo que se pueda formar una consulta de ArcGIS Server que devuelva únicamente la extensión de las características coincidentes.

1voto

spiv Puntos 1488

Sugiero hacer el graphicUtils.graphicsExtent(), pero establecer un maxAllowableOffset alto en su consulta. Esto disminuirá enormemente el tiempo de respuesta del servidor.

0voto

Glitch Puntos 1

Considere la posibilidad de queryExtent de FeatureLayer o el método executeForExtent de queryTask.

0 votos

¿Puede usted por favor editar su respuesta y ampliar con un poco más de información sobre cómo y dónde utilizar su solución sugerida?

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