[GIS] What are the options for Server side clustering using open source GIS tools

clusteringopen-source-gisosgeo

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?

Best 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.