[R-sig-Geo] [R] [ESRI-L] outline polygons of point clumps
Roger Bivand
Roger.Bivand at nhh.no
Fri May 12 22:40:54 CEST 2006
On Fri, 12 May 2006, Xiaohua Dai wrote:
> Hi Roger,
>
> Thank you for your kindly help. It is exactly what I want. I will try
> to understand your programming. I think the program should be useful
> in many fields as you indicated.
>
> I did not expect the problem can be solved so easily. Again, R is very
> powerful with so many good functions. I am quite interested in lapply
> and tapply. I will find some references/websites on their
> applications.
Note that using a different method= argument to hclust, or a different
metric to dist(), you will get different clusters, as well as getting
different numbers for different cutree() values. If you have specific
range distances (from an off-list message, the points are rhino), you
could also use other methods to create your own clusters where the first
nearest neighbour distance is less than your empirically observed range -
there should be a literature on this among ecologists, which others on the
list may be able to help with. Is there anything in the adehabitat
package, or others?
Roger
>
> Also thanks to remind me of the post guide.
>
> Best wishes
> Xiaohua
>
> On 5/12/06, Roger Bivand <Roger.Bivand at nhh.no> wrote:
> > On Fri, 12 May 2006, Xiaohua Dai wrote:
> >
> > > Sorry, I did not make my question clear. Since I have a point theme
> > > with many points, some of them may clump together. the problems here
> > > are:
> >
> > A more specific follow-up after my reply directly to R-help.
> >
> > I'm assuming you have a running R, and that convex hulls are what you
> > want.
> >
> > Take a random data set:
> >
> > set.seed(1)
> > xy <- matrix(runif(500, 0, 10), ncol=2)
> > xy_clusts <- hclust(dist(xy), method="complete")
> > # complete linkage hierarchical clustering
> > plot(xy_clusts)
> > # shows the clustering tree
> > cl_10 <- cutree(xy_clusts, 10)
> > cl_20 <- cutree(xy_clusts, 20)
> > cl_30 <- cutree(xy_clusts, 30)
> > # cut the tree - the objects contain the memberships
> > which_cl_10 <- tapply(1:nrow(xy), cl_10, function(i) xy[i,])
> > chulls_cl_10 <- lapply(which_cl_10, function(x) x[chull(x),])
> > # construct convex hull polygons for each cluster
> > plot(xy)
> > res <- lapply(chulls_cl_10, polygon)
> > # and repeat for cl_20 and cl_30
> > which_cl_20 <- tapply(1:nrow(xy), cl_20, function(i) xy[i,])
> > chulls_cl_20 <- lapply(which_cl_20, function(x) x[chull(x),])
> > plot(xy)
> > res <- lapply(chulls_cl_20, polygon)
> > which_cl_30 <- tapply(1:nrow(xy), cl_30, function(i) xy[i,])
> > chulls_cl_30 <- lapply(which_cl_30, function(x) x[chull(x),])
> > plot(xy)
> > res <- lapply(chulls_cl_30, polygon)
> >
> > If you need the list of convex hulls out as a shapefile, we can do that,
> > if you need a raster, I'd suggest using kernel density with different
> > bandwidths for a start, and NA out the densities below a chosen threshold.
> >
> > Hope this helps,
> >
> > Roger Bivand
> >
> > PS. Use package maptools, function readShapePoints() to read your
> > shapefile, and coordinates() of the input object to extract the
> > coordinates. If need be, project from geographical coordinates using
> > transform methods in package rgdal.
> >
> >
> > > 1. how to find clumps in a point theme?
> > > 2. the convex-hull extension I found only deal with all the points in
> > > a theme at each time? how to make each convex hull around each point
> > > clump automatically?
> > >
> > > Thanks.
> > >
> > > Xiaohua
> > >
> > >
> > >
> > > On 5/12/06, Bob Booth <bbooth at esri.com> wrote:
> > > > Xiaohua,
> > > >
> > > > That would be one way to do it. There are others.
> > > > Try searching ArcScripts for "convex hull"
> > > > http://arcscripts.esri.com/
> > > >
> > > > For example:
> > > > http://arcscripts.esri.com/details.asp?dbid=14535
> > > > or
> > > > http://arcscripts.esri.com/details.asp?dbid=12084
> > > >
> > > > Bob
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: ESRI-L [mailto:ESRI-L at esri.com] On Behalf Of Xiaohua Dai
> > > > Sent: Friday, May 12, 2006 2:33 AM
> > > > To: ESRI-L at esri.com
> > > > Subject: [ESRI-L] outline polygons of point clumps
> > > >
> > > > Dear all,
> > > >
> > > > How to generate one outline polygon for each point clump? Are there
> > > > any present functions in ArcView, ArcGIS, R or some freewares? I just
> > > > had a quick look at the package adehabitat and did not find the
> > > > function.
> > > >
> > > > To my knowledge, I could do it as follows: 1) make a grid map of my
> > > > study area with cell values = 0; 2) assign 1 to the cells containing
> > > > at least one point; 3) convert the 1-value cells into polygons.
> > > >
> > > > Am I right?
> > > >
> > > > Thanks
> > > > Xiaohua
> > > >
> > > >
> > >
> > >
> > >
> >
> > --
> > Roger Bivand
> > Economic Geography Section, Department of Economics, Norwegian School of
> > Economics and Business Administration, Helleveien 30, N-5045 Bergen,
> > Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
> > e-mail: Roger.Bivand at nhh.no
> >
> >
>
--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no
More information about the R-sig-Geo
mailing list