[R-sig-Geo] How to filter a xyz vector file
Robert J. Hijmans
r.hijmans at gmail.com
Tue Oct 13 20:53:14 CEST 2015
Ashraf,
Here is an approach:
# some random points
x <- runif(10000)
y <- runif(10000)
xy <- cbind(x, y)
# a raster to specficy the extent and resolution
library(raster)
r <- raster(round(extent(xy)), res=0.1)
# find the distance of each point to the center of the cell it falls in
cell <- cellFromXY(r, xy)
cellxy <- xyFromCell(r, cell)
d <- pointDistance(xy, cellxy, lonlat=FALSE)
# combine and get, for each cell, the point nearest to the center
z <- cbind(cell, xy, d)
z <- z[order(z[, 1], z[, 4]), ]
zz <- z[!duplicated(z[,1]), ]
# have a look:
r[] = 1
plot(r)
points(z[,2:3], cex=.1)
points(zz[,2:3], col='red', pch=20)
# plot(as(r, 'SpatialPolygons'), add=TRUE)
Best, Robert
On Sun, Oct 11, 2015 at 11:07 AM, Ashraf Afana via R-sig-Geo
<r-sig-geo at r-project.org> wrote:
> Hi friends,
>
> I have a xyz vector file from a terrestrial laser scanner that contains a huge amount of points at a high resolution (approximately 15 mm). I need to reduce the amount of point in the file by selecting N number of points each certain distance (i.e. generate equidistant spacing). I was looking at the available libraries in R (sp, rgdal, etc.), but I was unable to find a function to do so. Any suggestions?
>
> Ashraf,
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
More information about the R-sig-Geo
mailing list