How to filter big datasets in Geoserver WMS?
Ah. In that case, you could use GeoServer's WMS CQL filter support, i.e.:
http://<hostname>/wms?service=WMS&version=1.1.1&request=GetMap&....&cql_filter=IN ('id_1','id_2','id_3')
More information is available at http://geoserver.org/display/GEOSDOC/WMS+vendor+parameters
You could pass a list of feature id's in the following manner:
GET:
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>
The POST option is obviously more verbose, but less than looping PropertyIsEqualTo constructs.