创建随机点 (数据管理)

摘要

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

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

使用情况

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

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

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

  • 输出要素类的坐标系将作为以下内容的坐标系

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

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

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

  • 如果同时指定了约束要素类和约束范围,则将使用约束要素类的值,忽略约束范围的值。

  • 当在不违反指定的最小允许距离的情况下无法将更多随机点放置在约束区域内时,将减少约束区域中的随机点数量,使其达到最小允许距离下可能的最大数量。

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

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

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

参数

标注说明数据类型
输出位置

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

Feature Dataset;Workspace
输出点要素类

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

String
约束要素类
(可选)

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

Feature Layer
约束范围
(可选)

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

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。 仅在存在活动地图时,才可使用此选项。
  • 绘制范围 构造直角并完成草图 - 范围将基于在地图或场景上绘制的矩形。 此选项将在工程地理数据库中创建要素类并将图层添加至地图。 该要素类的坐标系将与地图相同。
    注:

    环境对话框中不提供此选项。 只能在具有范围数据类型的工具参数中或工具对话框的环境选项卡中找到此选项。

    注:

    当选中从“编辑”选项卡启用和禁用编辑编辑选项时,必须在编辑功能区选项卡上启用编辑才能绘制范围。

  • 图层范围 图层 - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。

    每个地图图层具有以下选项:

    • 所有要素 全选 - 图层中所有要素的范围。
    • 选定要素基于选定要素的区域 - 图层中选定要素的范围。
    • 可见要素 Extent Indicator - 图层中可见要素的范围。
      注:

      选定要素 基于选定要素的区域可见要素 Extent Indicator 选项中的范围仅适用于要素图层。

  • 浏览 浏览 - 范围基于现有数据集。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围坐标和坐标系复制到剪贴板。
    • 使用粘贴范围 粘贴 - 从剪贴板粘贴范围坐标和(可选)坐标系。 如果剪贴板值不包含坐标系,则范围将使用地图的坐标系。
    注:

    将使用与 ArcPy Extent 对象相同的格式和顺序从剪贴板中复制和粘贴范围坐标:x-min、y-min、x-max、y-max 和空间参考。

  • 重置范围 重置 - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。
    警告:

    地图可能使用与输入的坐标不同的显示单位。 不支持使用主方向(N、S、E、W)。 在南纬和西经坐标中使用负号。

Extent; Feature Layer; Raster Layer
点数 [值或字段]
(可选)

要随机生成的点的数量。

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

Field; Long
最小允许距离 [值或字段]
(可选)

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

Field; Linear Unit
创建多点输出
(可选)

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

  • 未选中 - 输出的几何类型将为点(每个点均是独立要素)。 这是默认设置。
  • 选中 - 输出将为几何类型多点(所有点为单个要素)。
Boolean
每个多点的最大点数
(可选)

如果选中创建多点输出,则需指定每个多点几何中要放置的随机点的数量。

Long

派生输出

标注说明数据类型
输出要素类

输出的随机点要素类。

Feature Class

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
(可选)

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

  • MAXOF - 将使用的所有输入的最大范围。
  • MINOF - 将使用的所有输入共用的最小范围。
  • DISPLAY - 范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。 坐标以 x-min,y-min,x-max,y-max 的顺序表示。
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

输出的随机点要素类。

Feature Class

代码示例

CreateRandomPoints 示例 1(Python 窗口)

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

import arcpy
arcpy.management.CreateRandomPoints("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.management.CreateRandomPoints(outGDB, outName, conFC, "", numField)

# set workspace
arcpy.env.workspace = "C:/data/county.gdb"

# Create fields for random values
fieldInt = "fieldInt"
fieldFlt = "fieldFlt"
arcpy.management.AddField(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.management.CalculateField(outName, fieldInt, "random.randint(1,100)", 
                                "PYTHON", "import random")
arcpy.management.CalculateField(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.management.CreateRandomPoints(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.management.CreateRandomPoints(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.management.CreateRandomPoints(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.management.CreateRandomPoints(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.management.CreateRandomPoints(outGDB, outName, "", fcExtent, numPoints, 
                                    "", "MULTIPOINT", numMP)

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题