12 votos

¿Cómo filtrar grandes conjuntos de datos en Geoserver WMS?

¿Existe una buena manera de filtrar conjuntos de datos con aproximadamente 50.000 características en Geoserver? Tendría que seleccionar entre 100 y 200 características basadas en ids. Estos ids son diferentes de los FeatureIds. No pude encontrar un operador "IN" similar a SQL en el estándar de codificación de filtros OGC. La combinación de varios operadores PropertyIsEqualTo tiene un rendimiento muy pobre.

8voto

Bill Puntos 1408

Ah. En ese caso, podría utilizar el soporte de filtros WMS CQL de GeoServer, es decir

http://<hostname>/wms?service=WMS&version=1.1.1&request=GetMap&....&cql_filter=IN ('id_1','id_2','id_3')

Más información en http://geoserver.org/display/GEOSDOC/WMS+vendedor+parámetros

0 votos

¡Genial! No sabía que había un operador IN en CQL. Al intentar esto con el operador "=", Apache se encontró con "414 Request-URI Too Long". Tal vez los caracteres guardados de esta manera hacen la diferencia.

2 votos

Cambiar a post en lugar de get.

0 votos

@iant: Tienes razón, POST en lugar de GET funciona. Sin embargo, el rendimiento sigue siendo pobre.

2voto

Bill Puntos 1408

Puedes pasar una lista de identificadores de características de la siguiente manera:

CONSÍGUELO:

http://<hostname>/wfs?service=WFS&version=1.1.0&request=GetFeature&typename=foo&featureid=id_1,id_2,id_3

POST:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:GetFeature version="1.1.0" outputFormat="text/xml; subtype=gml/3.1.1" service="WFS" resultType="results" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <wfs:Query typeName="foo">
        <wfs:PropertyName>String</wfs:PropertyName>
        <ogc:Filter>
            <ogc:FeatureId fid="id_1"/>
            <ogc:FeatureId fid="id_2"/>
            <ogc:FeatureId fid="id_3"/>
        </ogc:Filter>
    </wfs:Query>
</wfs:GetFeature>

La opción POST es obviamente más verbosa, pero menos que el bucle de construcciones PropertyIsEqualTo.

0 votos

Parece una buena solución para filtrar los FeatureIds. Desafortunadamente, los IDs que tengo que filtrar (resultados del algoritmo de otra parte) no son los mismos que los FeatureIds. He actualizado la pregunta.

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