For Selecting features within polygon from another layer using QGIS? the solution was to:
use the "Vector->Research tools->Select by Location"
However, I would like to know how to do the same thing with either an R or Python script.
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It only takes a minute to sign up.Sign up to join this community
R's Spatial classes have select/extract idioms driven by the "[" operator - for extraction by index, number, name, logical map, or spatial overlay.
I think this is close to what you mean.
library(maptools) data(wrld_simpl) ## generate some random points n <- 5e4 d <- data.frame(lon = runif(n, -180, 180), lat = runif(n, -90, 90), x = seq(n)) ## points as Spatial DataFrame pts <- d coordinates(pts) <- ~lon+lat proj4string(pts) <- CRS(proj4string(wrld_simpl)) ## plot the points plot(pts, pch = ".") ## use one polygon to mark overlaying points sel <- pts[subset(wrld_simpl, NAME == "Australia"), ] points(sel, col = "yellow", pch = 16, cex = 0.3)
See ?over for more general cases.
For a Python script, you could call tools such as Select by location from the Python console:
import processing processing.runalg('qgis:selectbylocation', input_layer, intersect_layer, u'intersects', 0, output_layer)
To see what parameters are required, you can call
>>> processing.alghelp("qgis:selectbylocation") ALGORITHM: Select by location INPUT <ParameterVector> INTERSECT <ParameterVector> PREDICATE <ParameterGeometryPredicate> METHOD <ParameterSelection> OUTPUT <OutputVector> METHOD(Modify current selection by) 0 - creating new selection 1 - adding to current selection 2 - removing from current selection
There are plenty of other selection tools which you can see using:
This lists all available tools with "select" in the name. You can then use them by checking which parameters are needed.
Hope this helps!