Clustering – How to Cluster Points Based on a Kernel Density

clusteringrspatial statisticsspatial-analyst

I have a large dataset with 36k points representing commercial land uses, each with a field containing the square footage. I have run a kernel density analysis on this dataset, producing a raster showing the density of commercial square footage over the entire metro area. I need to divide this raster into regions corresponding to local maxima, which I call a "center". I have already determined the locations of the centers, and now I need to do one of two things:

  • use a point clustering tool, such as "partitioning around medoids", to group the points into clusters around the centers I've identified. The problem with this method is that it is computationally intense, and even more so if I try to use a dissimilarity matrix to weight the points by size.

  • somehow divide the kernel density raster (which roughly resembles a terrain raster) into individual "hills" around each center. But I can't think of any tool for doing this.

This problem has plagued me for a while, and I hoped that I'd be able to perform the clustering method in R, but it is time consuming and I'm running out of time. Does anyone know of a simple method for either dividing density rasters into neighborhoods of intensity or for quickly clustering large datasets?

Best Answer

Discussion following a closely related post revealed a simple, effective solution: to find the "hills", turn the grid upside-down (by negating its values) and find watersheds. The hills are sinks and watershed boundaries partition the grid into those sinks.

Related Question