Wednesday, 8 June 2016

What are my options for Server side clustering using open source GIS tools?


I need to make a webapp that will show over 40K Points on a map. These points are all across the globe. Using WFS Service and OpenLayers, it is possible to do clustering on small set of points, but it is not really useful to do this clustering on the client side for my case.



How can I do server side clustering, in a WMS or tiled WMS service? There are several such options for Google maps. What are the corresponding tools in the OSGeo field?



Answer



The latest versions of MapServer (6.0+) support server-side clustering - http://mapserver.org/mapfile/cluster.html



Since version 6.0, MapServer has the ability to combine multiple features from a point layer into single (aggregated) features based on their relative positions. Only POINT layers are supported. This feature was added through MS RFC 69: Support for clustering of features in point layers.



The proposal for this functionality is detailed further at: http://mapserver.org/development/rfc/ms-rfc-69.html


A sample configuration below:


LAYER
NAME "my-cluster"

TYPE POINT
...
CLUSTER
MAXDISTANCE 20 # in pixels
REGION "ellipse" # can be rectangle or ellipse
GROUP (expression) # an expression to create separate groups for each value
FILTER (expression) # a logical expression to specify the grouping condition
END

This layer can then be served out like any other as a WMS (MapServer also supports tiling).



I have not tried this, and the docs are unclear but it may also support a clustered WFS service.


An alternative is to do clustering at the database level rather than at the web server level, then you are free to use any WMS Server see - Spatial clustering with PostGIS.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...