Créer des points aléatoires (Gestion des données)
Récapitulatif
Crée un nombre spécifié d'entités ponctuelles aléatoires. Des points aléatoires peuvent être créés dans une fenêtre d'étendue, à l'intérieur d'entités surfaciques, sur des entités ponctuelles ou le long d'entités linéaires.
Pour plus d'informations sur le fonctionnement de l'outil Créer des points aléatoires
Utilisation
-
La zone dans laquelle les points aléatoires seront générés peut être définie soit par des entités surfaciques, ponctuelles ou linéaires de contrainte, soit par une fenêtre d'étendue de contrainte.
-
Le paramètre Nombre de points peut être spécifié sous la forme d'un nombre ou d'un champ numérique dans la Classe d'entités de contrainte contenant des valeurs relatives au nombre de points aléatoires à placer dans chaque entité. L'option de champ est valide uniquement pour les entités de contrainte surfaciques ou linéaires. Si le nombre de points est indiqué sous la forme d'un nombre, cette valeur sera générée à l'intérieur ou le long de chaque entité de la classe d'entités de contrainte.
-
Pour affecter des valeurs aléatoires à des points placés de façon aléatoire, commencez par générer des points aléatoires à l'aide de cet outil. Utilisez ensuite l'outil Ajouter un champ pour créer un champ numérique dans la classe d'entités des points aléatoires. Les types de champs proposés sont des entiers longs ou des réels simples. Utilisez enfin l'outil Calculer un champ pour affecter des valeurs aléatoires au champ vide dans la classe d'entités des points aléatoires. Pour générer un entier aléatoire entre a et b (inclusif), utilisez l'expression Python random.randint(a,b). Pour générer un réel simple aléatoire entre a et b (exclusif), utilisez l'expression Python random.uniform(a,b). N'oubliez pas de définir Type d'expression sur PYTHON, de remplacer les valeurs a et b, et d'importer le module aléatoire dans la section Bloc de code à l'aide de l'expression import random.
-
Le paramètre Etendue de contrainte peut être saisi sous la forme d'un ensemble de coordonnées x et y minimales et maximales ou comme étant égal à l'étendue d'une couche ou d'une classe d'entités.
-
Si les valeurs de Classe d'entités de contrainte et Etendue de contrainte sont toutes deux spécifiées, la valeur Classe d'entités de contrainte sera utilisée, tandis que la valeur Etendue de contrainte sera ignorée.
-
Vous pouvez réinitialiser les valeurs Etendue de contrainte dans la boîte de dialogue à l'aide du bouton Effacer.
Si vous utilisez une classe d'entités de contrainte comportant plusieurs entités et souhaitez spécifier le nombre total de points aléatoires à générer (contrairement au nombre de points aléatoires à placer à l'intérieur de chaque entité), vous devez fusionner la classe d'entités de contrainte à l'aide de l'outil Fusionner de sorte qu'elle ne contienne qu'une seule entité, puis utiliser la classe d'entités fusionnée comme classe d'entités de contrainte.
-
Lorsqu'il s'avère impossible de placer d'autres points aléatoires dans une zone de contrainte sans enfreindre la spécification de distance minimale autorisée, le nombre de points aléatoires dans cette zone est réduit au maximum possible sous la distance minimale autorisée.
-
Le paramètre Distance minimale autorisée peut être indiqué sous la forme d'une unité linéaire ou d'un champ à partir des entités de contrainte contenant des valeurs numériques. Cette valeur va déterminer la distance minimale autorisée entre des points aléatoires à l'intérieur de chaque entité en entrée. L'option de champ est valide uniquement pour les entités de contrainte surfaciques ou linéaires. Il se peut que des points aléatoires se trouvent dans cette distance minimale autorisée s'ils ont été générés à l'intérieur ou le long d'entités de contrainte différentes.
-
L'utilisation d'entités ponctuelles en tant que classe d'entités de contrainte a pour effet de créer un ensemble aléatoire d'entités ponctuelles de contrainte. Aucun nouvel emplacement de point n'est créé.
-
Les valeurs positives non entières saisies pour les paramètres Nombre de points et Distance minimale autorisée sont arrondies à l'entier le plus proche. Les valeurs non numériques et négatives sont définies sur 0.
Syntaxe
Paramètre | Explication | Type de données |
out_path |
Emplacement ou espace de travail dans lequel la classe d'entités des points aléatoires sera créée. Cet emplacement ou espace de travail doit déjà exister. | Feature Dataset;Workspace |
out_name |
Nom de la classe d'entités des points aléatoires à créer. | String |
constraining_feature_class (Facultatif) |
Les points aléatoires seront générés à l'intérieur ou le long des entités de cette classe. La classe d'entités de contrainte peut être de type point, multipoint, ligne ou polygone. Les points seront placés de façon aléatoire à l'intérieur d'entités surfaciques, le long d'entités linéaires ou aux emplacements d'entités ponctuelles. Chaque entité de cette classe d'entités contiendra le nombre de points spécifié (par exemple, si vous spécifiez 100 points alors que la classe d'entités de contrainte contient 5 entités, 100 points aléatoires seront générés à l'intérieur de chaque entité, à savoir 500 points au total). | Feature Layer |
constraining_extent (Facultatif) |
Les points aléatoires seront générés à l'intérieur de l'étendue. L'étendue de contrainte sera uniquement utilisée si aucune classe d'entités de contrainte n'est spécifiée. | Extent;Feature Layer;Raster Layer |
number_of_points_or_field (Facultatif) |
Nombre de points à générer de façon aléatoire. Le nombre de points peut être spécifié sous la forme d'un nombre entier long ou d'un champ à partir d'entités de contrainte contenant des valeurs numériques relatives au nombre de points aléatoires à placer dans chaque entité. L'option de champ est valide uniquement pour les entités de contrainte surfaciques ou linéaires. Si le nombre de points est indiqué sous la forme d'un nombre entier long, cette valeur sera générée à l'intérieur ou le long de chaque entité de la classe d'entités de contrainte. | Field;Long |
minimum_allowed_distance (Facultatif) |
Distance la plus courte autorisée entre deux points placés de façon aléatoire. Si une valeur de "1 mètre" est indiquée, tous les points aléatoires seront éloignés de plus de 1 mètre du point le plus proche. | Field;Linear unit |
create_multipoint_output (Facultatif) |
Détermine si la classe d'entités en sortie sera une entité en une seule partie ou multi-parties.
| Boolean |
multipoint_size (Facultatif) |
Si l'option Créer une sortie multipoint est utilisée (cochée/MULTIPOINT), ce paramètre indique le nombre de points aléatoires à placer dans chaque catégorie multipoint. | Long |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de l'outil Créer des points aléatoires en mode immédiat :
import arcpy arcpy.CreateRandomPoints_management("c:/data/project", "samplepoints", "c:/data/studyarea.shp", "", 500, "", "POINT", "")
Le script Python autonome ci-dessous illustre la création de points aléatoires avec des valeurs aléatoires :
#Name: RandomPointsRandomValues.py #Purpose: create random points with random values #Author: ESRI # Import system modules import arcpy, os, random from arcpy import env # Create random points in the features of a constraining feature class # Number of points for each feature determined by the value in the field specified outGDB = "C:/data/county.gdb" outName = "randpeople" conFC = "C:/data/county.gdb/blocks" numField = "POP2000" arcpy.CreateRandomPoints_management(outGDB, outName, conFC, "", numField) # set workspace env.workspace = "C:/data/county.gdb" # Create fields for random values fieldInt = "fieldInt" fieldFlt = "fieldFlt" arcpy.AddField_management(outName, fieldInt, "LONG") # add long integer field arcpy.AddField_management(outName, fieldFlt, "FLOAT") # add float field # Calculate random values between 1-100 in the new fields arcpy.CalculateField_management(outName, fieldInt, "random.randint(1,100)","PYTHON","import random") arcpy.CalculateField_management(outName, fieldFlt, "random.uniform(1,100)","PYTHON","import random")
Le script Python autonome ci-dessous illustre plusieurs méthodes d'utilisation de l'outil Créer des points aléatoires :
#Name: RandomPoints.py #Purpose: create several types of random points feature classes #Author: ESRI # Import system modules import arcpy, os from arcpy import env #set environment settings env.overWriteOutput = True # Create random points in an extent defined simply by numbers outFolder = "C:/data" numExtent = "0 0 1000 1000" numPoints = 100 outName = "myRandPnts.shp" env.outputCoordinateSystem = "Coordinate Systems/Projected Coordinate Systems/World/Miller Cylindrical (world).prj" arcpy.CreateRandomPoints_management(outFolder, outName, "", numExtent, numPoints) env.outputCoordinateSystem = "" # Create random points in an extent defined by another feature class outName = "testpoints.shp" fcExtent = "C:/data/studyarea.shp" arcpy.CreateRandomPoints_management(outFolder, outName, "", fcExtent, numPoints) # Create random points in the features of a constraining feature class # Number of points for each feature determined by the value in the field specified outGDB = "C:/data/county.gdb" outName = "randpeople" conFC = "C:/data/county.gdb/blocks" numField = "POP2000" arcpy.CreateRandomPoints_management(outGDB, outName, conFC, "", numField) #create random points in the features of a constraining #feature class with a minimum allowed distance outName = "constparcelpnts" conFC = "C:/data/county.gdb/parcels" numPoints = 10 minDistance = "5 Feet" arcpy.CreateRandomPoints_management(outGDB, outName, conFC, "", numPoints, minDistance) #Creat random points with a multipoint output outName = "randomMPs" fcExtent = "C:/data/county.gdb/county" numPoints = 100 numMP = 10 arcpy.CreateRandomPoints_management(outGDB, outName, "", fcExtent, numPoints, "", "MULTIPOINT", numMP)