创建随机点 (数据管理)

描述

创建指定数量的随机点要素。可以在范围窗口中、面要素内、点要素上或线要素沿线生成随机点。

了解有关“创建随机点”工作原理的详细信息

使用方法

  • 将生成随机点的区域可以通过约束面要素、约束点要素或约束线要素来定义,也可以通过约束范围窗口来定义。

  • 可将点数参数指定为数字或为约束要素类中的数值字段,其中约束要素类需包含每个要素内要放置的随机点数值。此字段选项仅对面约束要素或线约束要素有效。如果点数以数字形式提供,则将在约束要素类中每个要素的内部或沿线生成该数量的随机点。

    如果当前使用的约束要素类具有多个要素,而且您希望指定要生成的随机点的总数(而不是要放置在每个要素内的随机点的数量),则必须先使用融合工具,以使约束要素类只包含单一要素,然后将已融合的要素类用作约束要素类。

  • 输出要素类的坐标系将为下列某种类型的坐标系

    • 约束要素类(若已指定)
    • 地图数据框(若使用地图中的图层或要素类路径在地图中指定约束范围)
    • 要素类(若已在 Python 中使用要素类路径指定约束范围)
    • 输出坐标系地理处理环境(若已设定,并覆盖了上文详细介绍的所有其他行为)
    • 未知(若以上几点均不适用)

  • 要将随机值指定给随机放置的点,首先使用此工具生成随机点。然后,使用添加字段工具在随机点要素类中创建新的数值字段。建议使用的字段类型为长整型或浮点型。之后,使用计算字段工具将随机值指定给随机点要素类中的空字段。要生成一个 a 到 b 之间(包括 a 和 b)的随机整数,请使用 Python 表达式 random.randint(a,b)。要生成一个 a 到 b 之间(不包括 a 和 b)的随机浮点数,请使用 Python 表达式 random.uniform(a,b)。在代码块中,使用表达式 import random 导入随机模块。

  • 可以将约束范围参数以一组最小和最大的 x 和 y 坐标的形式输入,或者以要素图层范围或要素类范围的形式输入。

  • 如果约束要素类和约束范围均已指定,将使用约束要素类值而忽略约束范围值。

  • 如果在不违反最小允许距离规范的情况下,无法在约束区域内放置更多的随机点,约束区域中随机点的数量将减少至小于最小允许距离的最大允许值。

  • 可以将最小允许距离参数指定为线性单位或含有数值的约束要素中的字段。此值将确定每个输入要素中的随机点之间的最小允许距离。此字段选项仅对面约束要素或线约束要素有效。如果在不同约束要素部分的内部或沿线生成随机点,则随机点也可能位于最小允许距离之内。

  • 将点要素用作约束要素类会创建约束点要素的随机子集。不会生成新的点位置。

  • 点数最小允许距离参数的非整型(整)正值将被四舍五入为最接近的整数。非数值或负值将被设置为 0。

语法

arcpy.management.CreateRandomPoints(out_path, out_name, {constraining_feature_class}, {constraining_extent}, {number_of_points_or_field}, {minimum_allowed_distance}, {create_multipoint_output}, {multipoint_size})
参数说明数据类型
out_path

创建随机点要素类所要使用的位置或工作空间。此位置或工作空间必须已经存在。

Feature Dataset;Workspace
out_name

要创建的随机点要素类的名称。

String
constraining_feature_class
(可选)

将在此要素类中的要素的内部或沿线生成随机点。约束要素类可以是点、多点、线或面。点将被随机放置在面要素内、线要素沿线或点要素位置处。此要素类中的每个要素内部都会生成指定数量的点(例如,如果您指定 100 个点且约束要素类中包含 5 个要素,则每个要素中会生成 100 个随机点,共生成 500 个点)。

Feature Layer
constraining_extent
(可选)

将在此范围内生成随机点。仅当未指定约束要素类时,才会使用约束范围。

Extent;Feature Layer;Raster Layer
number_of_points_or_field
(可选)

要随机生成的点的数量。

可将点数指定为长整型数值或指定为约束要素中的字段,其中约束要素需包含表示每个要素中要放置多少随机点的数值。此字段选项仅对面约束要素或线约束要素有效。如果点数以长整型数值的形式提供,则将在约束要素类中每个要素的内部或沿线生成该数量的随机点。

Field; Long
minimum_allowed_distance
(可选)

任意两个随机放置的点之间的最小允许距离。如果将此距离值指定为 1 米,则所有随机点距最近点的距离都将大于 1 米。

Field; Linear Unit
create_multipoint_output
(可选)

确定输出要素类是多部件要素还是单部件要素。

  • POINT输出的几何类型将为点(每个点均是独立要素)。这是默认设置。
  • MULTIPOINT输出的几何类型将为多点(所有点是一个要素)。
Boolean
multipoint_size
(可选)

如果将 create_multipoint_output 设置为 MULTIPOINT,则需指定每个多点几何中要放置的随机点的数量。默认值为 10。

Long

派生输出

名称说明数据类型
out_feature_class

输出随机点要素类。

要素类

代码示例

创建随机点 (CreateRandomPoints) 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 CreateRandomPoints 工具。

import arcpy
arcpy.CreateRandomPoints_management("c:/data/project", "samplepoints", 
                                    "c:/data/studyarea.shp", "", 500, "", 
                                    "POINT")
CreateRandomPoints 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用随机值创建随机点。

# Name: RandomPointsRandomValues.py
# Purpose: create random points with random values
# Import system modules
import arcpy
# 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
arcpy.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")
CreateRandomPoints 示例 3(独立脚本)

以下独立 Python 脚本演示了使用 CreateRandomPoints 工具的几种方法。

# Name: RandomPoints.py
# Purpose: create several types of random points feature classes
# Import system modules
import arcpy
# set environment settings
arcpy.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"
arcpy.env.outputCoordinateSystem = "Coordinate Systems/Projected Coordinate Systems/World/Miller Cylindrical (world).prj"
arcpy.CreateRandomPoints_management(outFolder, outName, "", numExtent, numPoints)
arcpy.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)

许可信息

  • Basic: 需要 3D Analyst 或 Spatial Analyst
  • Standard: 需要 3D Analyst 或 Spatial Analyst
  • Advanced: 是

相关主题