Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Drawing GRTS points within polygons with spsurvey

Tags:

r

polygon

draw

In previous versions of the spsurvey package, it was possible to draw random points within polygons in a shapefile using a somewhat complicated design specification. (See here for an example).

The newly updated version of spsurvey (5.0.1) appears very user-friendly, except I cannot figure out how to perform a GRTS draw of more than one point within polygons. Below is an example:

Suppose I want to draw 10 random points using GRTS within the states of Montana and Wyoming. The grts() call requires an sf object, so we can get an sf object first.

library(raster)
library(sf)
library(spsurvey)

## Get state outlines
US <- raster::getData(country = "United States", level = 1)
States.outline <- US[US$NAME_1 %in% c("Montana","Wyoming"),]

# convert to sf object
states.out <- st_as_sf(States.outline)

Then, if we want to stratify by state, and we want ten points from each, we need:

# Define the number of points to draw from each state
strata_n <- c(Montana = 10, Wyoming = 10)

The strata_n object then gets fed into the grts() call, with the NAME_1 variable being the state name.

# Attempt to make grts draw 
grts(sframe = states.out, 
     stratum_var = "NAME_1", 
     n_base = strata_n
     )

This returns an error message:

During the check of the input to grtspts, one or more errors were identified. Enter the following command to view all input error messages: stopprnt() To view a subset of the errors (e.g., errors 1 and 5) enter stopprnt(m=c(1,5))

Running stopprnt() gives the following message:

Input Error Message n_base : Each stratum must have a sample size no larger than the number of rows in 'sframe' representing that stratum

This is a wonderfully clear message -- we can't draw more than one point from each polygon because the sf object only has a single row per state.

So: with the new and improved spsurvey package, how does one draw multiple points from within a polygon? Any tips or direction would be appreciated.

like image 704
Jacob_Oram Avatar asked Oct 20 '25 04:10

Jacob_Oram


1 Answers

This is a bug. I have updated the development version, which can be installed (after installing the remotes package) by running

remotes::install_github("USEPA/spsurvey", ref = "develop")

Likely a few weeks before the changes in spsurvey are reflected on CRAN. Thanks for finding this.

like image 140
Michael Dumelle Avatar answered Oct 22 '25 19:10

Michael Dumelle