Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
265 views
in Technique[技术] by (71.8m points)

spatial - Intersecting Points and Polygons in R

I am working with shapefiles in R, one is point.shp the other is a polygon.shp. Now, I would like to intersect the points with the polygon, meaning that all the values from the polygon should be attached to the table of the point.shp.

I tried overlay() and spRbind in package sp, but nothing did what I expected them to do.

Could anyone give me a hint?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

With the new sf package this is now fast and easy:

library(sf)
out <- st_intersection(points, poly)

Additional options

If you do not want all fields from the polygon added to the point feature, just call dplyr::select() on the polygon feature before:

library(magrittr)
library(dplyr)
library(sf)

poly %>% 
  select(column-name1, column-name2, etc.) -> poly

out <- st_intersection(points, poly)

If you encounter issues, make sure that your polygon is valid:

st_is_valid(poly)

If you see some FALSE outputs here, try to make it valid:

poly <- st_make_valid(poly) 

Note that these 'valid' functions depend on a sf installation compiled with liblwgeom.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...