Hi Milo, Thanks for the quick reply. 1. Yes, GeoServer and PostGIS are on the same server (dedicated server @ RackSpace) 2. What is enough RAM? I now have 2GB, with only Ubuntu, GeoServer and PostGIS 3. My dataset has 67k features. I can try tomorrow with a smaller dataset. 4. I'm using FF v13 with FireBug. 5. I'll also try the empty string as initial filter.
Here's a live sample: http://demo.smartdakscan.nl/zonnekaart.php (in Dutch). Thanks, Paul 2012/7/2 Milo van der Linden <[email protected]> > I am doing something similar, but my initial filter is an empty string "" > that gets set to a valid string later on. I do not use an id, but use the > filter to limit results to a viewers organizational unit. I have seen over > a hunderd features displayed in less then a second. The underlying table is > oracle spatial with less then 10k records. > > To dig in deeper: > 1. Are geoserver and your db on the same machine? > 2. Do you have enough RAM? > 3. Did you test smaller datasets which generate the same result and are > they faster? > 4. What browser are you using? > On Jul 2, 2012 9:18 PM, "Paul Meems" <[email protected]> wrote: > >> I use GeoServer and PostGIS and OpenLayers to show the data. >> For one page I'm using a WFS layer and I filter on address. >> >> The user first need to select an address. This is done with an AJAX call >> and the adresID and the location (X, Y) are returned. >> I zoom to that location and change my filter. >> This is my initial set-up of my layer, an addressID of -1 doesn't exists >> so it starts with just the baselayer: >> >> var myLayer = new OpenLayers.Layer.Vector("tmp", { displayInLayerSwitcher: >> true, strategies: [new OpenLayers.Strategy.BBOX()], filter: new >> OpenLayers.Filter.Comparison({ type: >> OpenLayers.Filter.Comparison.EQUAL_TO, property: "_adresid", >> value: "-1"}), styleMap: new OpenLayers.StyleMap(), protocol: new >> OpenLayers.Protocol.WFS({ url: ".../wfs", featureType: "myName", >> srsName: "EPSG:3857", geometryName: "geomgoogle" })}); >> >> But this call takes long because it tries to find the -1 value. >> *Q1*: How can I add a WFS layer without data? >> >> And this is the method I call after the user selects an address: >> >> function changeFilter(newValue, x, y){ myLayer.destroyFeatures(); filter >> = new OpenLayers.Filter.Logical({ type: OpenLayers.Filter.Logical.AND, >> filters: [ new OpenLayers.Filter.Comparison({ type: >> OpenLayers.Filter.Comparison.EQUAL_TO, property: "_adresid", >> value: newValue }), new OpenLayers.Filter.Spatial({ >> type: OpenLayers.Filter.Spatial.BBOX, value: new >> OpenLayers.Bounds(x-50, y-50, x+50, y+50), projection: "EPSG:3857" >> }) ] }); myLayer.filter = filter; myLayer.refresh({force: true}); >> showAttributes(); >> } >> >> >> >> >> This is working great, but is does take a very long time: about 7-10 >> seconds. >> The result are just a few features: 3-10 >> >> Of course I have an index in the database on _adresid and a spatial index. >> >> *Q2*: What else can I do to speed up this filter? >> >> Thanks, >> >> Paul >> >> _______________________________________________ >> Users mailing list >> [email protected] >> http://lists.osgeo.org/mailman/listinfo/openlayers-users >> >>
_______________________________________________ Users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/openlayers-users
