3 votes

Dessiner des points GRTS dans des polygones avec spsurvey

Dans les versions précédentes du package spsurvey, il était possible de dessiner des points aléatoires dans les polygones d'un fichier de forme en utilisant une méthode quelque peu compliquée. design spécification. (Voir aquí pour un exemple).

La nouvelle version mise à jour de spsurvey (5.0.1) semble très convivial, sauf que je n'arrive pas à comprendre comment effectuer un dessin GRTS de plus d'un point dans des polygones. Voici un exemple :

Supposons que je veuille tirer 10 points aléatoires en utilisant le GRTS dans les états du Montana et du Wyoming. Le site grts() nécessite un objet sf, donc nous pouvons d'abord obtenir un objet sf.

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)

Ensuite, si nous voulons stratifier par état, et que nous voulons dix points de chaque état, nous avons besoin :

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

Le site strata_n est ensuite introduit dans le grts() avec l'appel NAME_1 étant le nom de l'état.

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

Cela renvoie un message d'erreur :

Lors de la vérification de l'entrée de grtspts, une ou plusieurs erreurs ont été détectées. identifiées. Entrez la commande suivante pour afficher tous les messages d'erreur messages d'erreur d'entrée : stopprnt() Pour afficher un sous-ensemble d'erreurs (par exemple, les erreurs 1 et 5) entrez stopprnt(m=c(1,5))

Running stopprnt() donne le message suivant :

Input Error Message n_base : Chaque strate doit avoir une taille d'échantillon taille d'échantillon pas plus grande que le nombre de lignes dans 'sframe' représentant cette strate

Le message est on ne peut plus clair : nous ne pouvons pas dessiner plus d'un point pour chaque polygone car l'objet sf n'a qu'une seule ligne par état.

Donc : avec le nouveau et amélioré spsurvey comment dessiner plusieurs points à l'intérieur d'un polygone ? Tout conseil ou orientation serait apprécié.

2voto

Michael Dumelle Points 106

C'est un bug. J'ai mis à jour la version de développement, qui peut être installée (après avoir installé le paquet remotes) en exécutant

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

Il faudra probablement attendre quelques semaines avant que les changements dans spsurvey ne soient répercutés sur CRAN. Merci de l'avoir trouvé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X