Dear members of the list,

I'm handling a SpatialPointsDataFrame with 100 ramdom points distributed within 13 different polygons.

> randp
                    coordinates   Point_ID   Polygon_ ID
0  (690926.8, 7522595)         1_hs                    13
1  (696727.1, 7576122)         2_hs                      6
...
...
98 (728199.9, 7549810)     99_hs                    12
99 (723428.1, 7545891)   100_hs                    12

I need to calculate the shortest distance between points belonging to different polygons. Basically I'd like to do what nndist {spatstat} does. The difference is that the distance should be calculated between groups of points instead of within a group of points.

I tried to use "aggregate" as suggested below but it didn't work out for me.
http://www.inside-r.org/packages/cran/spatstat/docs/nndist

Please find my try below:

> randp.df<-data.frame(randp)
> randp.hs.df
       Point_ID     coords.x1      coords.x2   Polygon_ ID
0            1_hs     690926.8       7522595 13
1            2_hs     696727.1       7576122 6
2            3_hs     723480.7       7546594 12

library(spatstat)

# Calculate nearest neighbors within a polygon
> nn.within.pol<-nndist(randp.df[,c(2,3)],by=marks(randp.df$Polygon_ID))
> nn.within.pol
[1] 2579.42199 1391.88915 59.85628 734.95108 734.95108 840.65125 957.47838 741.58160 955.26483 3307.59444 1361.64626 2682.70690
 ...
 ...
 [97]  1349.88694   955.26483  3166.00894   705.25663
# Ok but these are not the distances I need

# Calculate nearest neighbors between polygons
nn.between.pol<-aggregate(nn.within.pol, by=list(from=marks(randp.df$Polygon_ID)), min) # Error in aggregate.data.frame(as.data.frame(x), ...) : arguments must have same length

> nn.between.hs<-aggregate(randp.hs.df[,c(2,3)], by=list(randp.df$Polygon_ID), nndist)
> nn.between.hs

The outcome is an asymmetric data frame (dim 13, 6) with a lot of empty cells and values that look unlikely to be distances.

The result I'd like to get is a matrix (dim 100, 1) with the distances between each random point and its nearest neighbor belonging to a different polygon (i.e. its nearest neighbor having a different Polygon_ID).

Can someone kindly correct my script or suggest a function able to do the job?

Cheers,

Ivan

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to