Crear puntos aleatorios (Administración de datos)
Resumen
Crea un determinado número de entidades de puntos aleatorios. Los puntos aleatorios se pueden generar en una ventana de extensión, dentro de entidades poligonales, en entidades de puntos o a lo largo de entidades de línea.
Más información sobre el funcionamiento de Crear puntos aleatorios
Uso
-
El área en la cual se generarán puntos aleatorios se puede definir con entidades obligadas de polígono, de punto o de línea, o con una ventana de extensión obligada.
-
El parámetro Cantidad de puntos se puede especificar como un número o como un campo numérico de la clase de entidad obligada que contenga los valores de la cantidad de puntos aleatorios que se deben ubicar en cada entidad. La opción de campo solamente es válida para entidades obligadas de polígono o de línea. Si la cantidad de puntos se proporciona como un número, esa cantidad de puntos aleatorios se generará dentro o a lo largo de cada entidad en la clase de entidad obligada.
Si utiliza una clase de entidad obligada que tiene más de una entidad y desea especificar la cantidad total de puntos aleatorios que se generarán (diferente de la cantidad de puntos aleatorios que se colocarán dentro de cada entidad), primero debe usar la herramienta Disolver para que la clase de entidad obligada contenga una única entidad y, a continuación, debe usar esa clase de entidad disuelta como clase de entidad obligada.
El sistema de coordenadas de la clase de entidad de salida será el sistema de coordenadas de la
- clase de entidad obligada si se ha especificado una.
- Marco de datos de mapa si se ha especificado una extensión obligada en ArcMap usando una capa del mapa o la ruta de una clase de entidad.
- Clase de entidad si se ha especificado una extensión obligada en Python usando la ruta de una clase de entidad.
- Entorno de geoprocesamiento de sistema de coordenadas de salida si se ha definido (e invalida los demás comportamientos que ya se han detallado)
- Desconocido si no se cumple ninguna de las opciones anteriores
-
Para asignar valores aleatorios a puntos ubicados de manera aleatoria, genere primero puntos aleatorios con esta herramienta. A continuación, utilice la herramienta Agregar campo para crear un nuevo campo numérico en la clase de entidad de puntos aleatorios. Los tipos de campo sugeridos son entero largo o flotante. Por último, utilice la herramienta Calcular campo para asignar valores aleatorios al campo vacío en la clase de entidad de puntos aleatorios. Para generar un número entero aleatorio entre a y b (incluidos), utilice la expresión de Python random.randint(a,b). Para generar un número flotante aleatorio entre a y b (excluidos), utilice la expresión de Python random.uniform(a,b). No olvide definir el tipo de expresión como PYTHON, reemplazar los valores a y b, e importar el módulo aleatorio en la sección de bloqueo de código usando la expresión import random.
-
El parámetro Extensión obligada se puede introducir como un conjunto de coordenadas x e y mínimas y máximas o como igual a la extensión de una capa de entidades o clase de entidad.
-
Si se especifican una clase de entidad obligada y una extensión obligada, se usará el valor de la clase de entidad obligada y se ignorará el valor de la extensión obligada.
-
Cuando no se puedan ubicar más puntos aleatorios dentro de un área obligada sin infringir la distancia mínima permitida especificada, la cantidad de puntos aleatorios del área obligada se reducirá al máximo posible dentro de la distancia mínima permitida.
-
El parámetro Distancia mínima permitida se puede especificar como una unidad lineal o un campo de las entidades obligadas que contengan valores numéricos. Este valor determina la distancia mínima permitida entre los puntos aleatorios que se encuentran dentro de cada entidad de entrada. La opción de campo solamente es válida para entidades obligadas de polígono o de línea. Los puntos aleatorios pueden estar dentro de la distancia mínima permitida si se generaron dentro de partes de entidades obligadas o a lo largo de ellas.
-
Si se utilizan entidades de puntos como la clase de entidad obligada, se crea un subconjunto aleatorio de entidades de puntos obligadas. No se generan ubicaciones de puntos nuevas.
-
Los valores positivos no enteros de los parámetros Cantidad de puntos y Distancia mínima permitida se redondean al número entero más cercano. Los valores no numéricos y negativos se establecen en 0.
Sintaxis
Parámetro | Explicación | Tipo de datos |
out_path |
Ubicación o espacio de trabajo en el que se crea la clase de entidad de puntos aleatorios. Esta ubicación o este espacio de trabajo ya debe existir. | Feature Dataset;Workspace |
out_name |
Nombre de la clase de entidad de puntos aleatorios que se va a crear. | String |
constraining_feature_class (Opcional) |
Los puntos aleatorios se generan dentro o a lo largo de las entidades en esta clase de entidad. La clase de entidad obligada puede ser punto, multipunto, línea o polígono. Los puntos se ubican de manera aleatoria dentro de las entidades poligonales, a lo largo de las entidades de línea o en ubicaciones de entidades de puntos. Cada entidad en esta clase de entidad tendrá el número especificado de puntos generados dentro de ella (por ejemplo, si especifica 100 puntos y la clase de entidad obligada tiene 5 entidades, se generarán 100 puntos aleatorios en cada entidad, que suman un total de 500 puntos). | Feature Layer |
constraining_extent (Opcional) |
Los puntos aleatorios se generan dentro de la extensión. La extensión obligada se utiliza solamente si no se especifica una clase de entidad obligada. | Extent;Feature Layer;Raster Layer |
number_of_points_or_field (Opcional) |
Cantidad de puntos que se generarán de manera aleatoria. La cantidad de puntos se puede especificar como un número entero largo o como un campo de las entidades obligadas que contiene valores numéricos que indican la cantidad de puntos aleatorios que se ubicarán en cada entidad. La opción de campo solamente es válida para entidades obligadas de polígono o de línea. Si la cantidad de puntos se proporciona como un número entero largo, esa cantidad de puntos aleatorios se generará dentro o a lo largo de cada entidad en la clase de entidad obligada. | Field;Long |
minimum_allowed_distance (Opcional) |
Distancia más corta permitida entre dos puntos ubicados de manera aleatoria. Si se especifica un valor de 1 metro, todos los puntos aleatorios se ubicarán a más de 1 metro del punto más cercano. | Field;Linear unit |
create_multipoint_output (Opcional) |
Determina si la clase de entidad de salida será una entidad multiparte o una entidad de una parte.
| Boolean |
multipoint_size (Opcional) |
Si se utiliza la opción Crear salida multipunto (marcada/MULTIPOINT), este parámetro especifica la cantidad de puntos aleatorios que se ubicarán en cada geometría multipunto. | Long |
Ejemplo de código
La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta CreateRandomPoints en el modo inmediato:
import arcpy
arcpy.CreateRandomPoints_management("c:/data/project", "samplepoints", "c:/data/studyarea.shp", "", 500, "", "POINT", "")
La siguiente secuencia de comandos de Python independiente muestra cómo crear puntos aleatorios con valores aleatorios:
#Name: RandomPointsRandomValues.py
#Purpose: create random points with random values
# 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")
La siguiente secuencia de comandos de Python independiente muestra varios métodos para utilizar la herramienta CreateRandomPoints:
#Name: RandomPoints.py
#Purpose: create several types of random points feature classes
# 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)
#Create 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)