Changes between Initial Version and Version 1 of DevClusteringFunctions


Ignore:
Timestamp:
Jan 15, 2015, 2:00:40 PM (9 years ago)
Author:
dbaston
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • DevClusteringFunctions

    v1 v1  
     1Proposal for two clustering functions:
     2
     3----
     4
     5{{{geometry[] ST_AccumIntersecting(geometry geom)}}}
     6
     7Aggregate function returning an array of GeometryCollections representing the connected components of a set of geometries.
     8
     9- accepts Point/MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon geometries of any type that can be converted into GEOS (I can't think of a situation where Point/MultiPoint would be useful, but that doesn't mean there isn't one...)[[br]]
     10- return a geometry array (my current implementation returns a GeometryCollection, but the recursive semantics of ST_Dump then undo all of the hard work)[[br]]
     11Example: if run on a table containing all of the LineStrings in the image below, would return an array with two MultiLineString geometries (red and blue)
     12
     13[[http://i.stack.imgur.com/WNlxX.png]]
     14
     15
     16----
     17
     18
     19{{{geometry[] ST_AccumWithinDistance(geometry geom, double precision distance)}}}
     20
     21Aggregate function returning an array of GeometryCollections?/MultiPoints?, where any component is reachable from any other component with jump of no more than the specified distance.
     22
     23- like ST_AccumIntersecting, but uses a distance threshold rather than intersection when determining if two geometries should be included in the same component.  Could have an implementation very similar to ST_AccumIntersecting, or could be restricted to points and maybe have a more efficient implementation.[[br]]
     24- differs from kmeans in that a distance is provided, not a number of clusters[[br]]
     25
     26Example:  In the picture below, an array of five MultiPoints would be returned (color-coded).  The threshold distance in this case was more than the orange line but less than the pink line.
     27
     28[[http://ibin.co/1oGvmkyPPc0K]]