The VisualPointClustering is a clustering operator for point collections that removes clutter and preserves the spatial structure of the input. The output is a point collection with a count and radius attribute. The operator utilizes the input resolution of the query to determine when points, being displayed as circles, would overlap. Moreover, it allows aggregating non-geo attributes to preserve the other columns of the input. For more information on the algorithm, cf. the paper Beilschmidt, C. et al.: A Linear-Time Algorithm for the Aggregation and Visualization of Big Spatial Point Data. SIGSPATIAL/GIS 2017: 73:1-73:4.
VisualPointClustering
An exemplary use case for this operator is the visualization of point data in an online map application. There, you can use this operator as the final step of the workflow to cluster the points and display them as circles. These circles then pose a decluttered view of the data, e.g., via a WFS endpoint.
minRadiusPx
10
deltaPx
1
radiusColumn
"__radius"
countColumn
"__count"
columnAggregates
MeanNumber
StringSample
Null
Measurement
{ "foo": { "columnName": "numericColumn", "aggregateType": "MeanNumber", "measurement": { "type": "unitless" } }, "bar": { "columnName": "textColumn", "aggregateType": "StringSample" }}
The VisualPointClustering operator expects exactly one vector input that must be a point collection.
vector
SingleVectorSource
If the source value vector is not a point collection, an error is thrown.
If multiple columns in columnAggregates have the same names, an error is thrown.
{ "type": "VisualPointClustering", "params": { "minRadiusPx": 8.0, "deltaPx": 1.0, "radiusColumn": "__radius", "countColumn": "__count", "columnAggregates": { "mean_population": { "columnName": "population", "aggregateType": "MeanNumber", "measurement": { "type": "unitless" } }, "sample_names": { "columnName": "name", "aggregateType": "StringSample" } } }, "sources": { "vector": { "type": "OgrSource", "params": { "data": { "type": "internal", "datasetId": "e977b123-ca47-4c5b-aace-481119826aaf" }, "attributeProjection": ["name", "population"] } } } }