Comment créer des points aléatoires en dehors des polygones?

11

L'outil Créer un point aléatoire est capable de générer un certain nombre de points dans les polygones. Je me demande, étant donné un cadre de délimitation, est-il possible de générer des points aléatoires en dehors de ce polygone?

Vu
la source

Réponses:

13

Personnellement, je n'aime pas l'algorithme de point aléatoire dans ArcGIS. Vous pouvez également utiliser lagenrandompnts fonction GME ( Geospatial Modeling Environment ) . Vous serez en mesure d'identifier des polygones spécifiques où des points aléatoires seront exclus (voir la zone en surbrillance dans le fichier .jpg ci-joint). Le meilleur de tous ces logiciels est gratuit.

GME vous fournit une suite d'outils d'analyse et de modélisation, allant de petits «blocs de construction» que vous pouvez utiliser pour construire un flux de travail sophistiqué, à des programmes d'analyse complètement autonomes. Il utilise également le logiciel open source extraordinairement puissant R comme moteur statistique pour piloter certains des outils d'analyse. L'une des nombreuses forces de R est qu'il est open source, complètement transparent et bien documenté: caractéristiques importantes pour tout logiciel d'analyse scientifique.

entrez la description de l'image ici

Aaron
la source
1
Pouvez-vous nous expliquer pourquoi vous n'aimez pas l'algorithme de points aléatoires par défaut et pourquoi les GME sont plus optimaux?
Stephen Lead
@Aaron Nice one! Je n'ai pas essayé cela depuis que c'était les outils de modélisation de Hawth - je vais devoir le télécharger et lui donner une fissure!
om_henners
3
@Stephen Au cours du dernier mois, j'ai généré des points aléatoires dans quatre classes. J'ai rencontré plusieurs problèmes: 1) ArcGIS a produit plusieurs points en dehors de mes polygones d'entrée 2) Arc a eu du mal à gérer des zones trop petites pour mes paramètres d'entrée (par exemple, distance minimale autorisée = 50 m et points = 50), alors que GME les a traités problèmes en produisant des points aléatoires jusqu'à ce que les règles soient violées puis en affichant un message d'avertissement 3) Le RPG d'Arc est plus lent que GME probablement en raison de l'utilisation par R de la mémoire locale.
Aaron
Joli! A-t-il une limite en python pour que je puisse faire un traitement par lots @Aaron?
Vu le
2
@Seen consultez la section automatisation et traitement par lots (p10) dans le document de support: spatialecology.com/gme/images/SpatialEcologyGME.pdf
Aaron
4

Vous allez devoir créer un polygone en anneau avec le trou en anneau représentant l'espace intérieur non ponctuel et une certaine étendue spatiale représentant la zone de délimitation de la zone polygonale.


la source
Juste un addendum: avec une licence ArcInfo, vous pouvez le faire avec l' outil Effacer
om_henners
3

Désolé, je ne peux tout simplement pas résister. Puisqu'il est toujours bon de savoir ce qui se passe sous le capot avec quelque chose comme GME, voici une solution dans le code R réel.

require(sp)
require(rgeos)

# Create example polygon data
x <- readWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))")
y <- readWKT("POLYGON ((3 3, 7 3, 7 7, 3 7, 3 3))")

# Calculate difference in polygon geometries to create null polygon
d <- gDifference(x,y)

# Create random sample in non-null polygon
rs <- spsample(d, 20, type="random")  

# Plot results  
plot(d, col="red")
  plot(rs,pch=19,col="black",add=TRUE)

Cette approche est probablement très différente de la façon dont GME le fait, mais utilise des classes spatiales R sp natives et une bibliothèque de topologie assez nouvelle rendant le code très efficace. Cela donne également un exemple qui peut facilement être enveloppé dans une boucle for.

Jeffrey Evans
la source