中文

操作方法:从现有点要素图层中选择随机点

摘要

在某些情况下,当存在过多点要素时,可能希望仅保留部分点用于统计分析。 通过随机选择分布点,可以执行无偏差分析。 以下步骤仅供选择随机点,而不会创建新的随机点。 选择后,可将所选点导出到新图层。

提供的说明介绍如何从现有点要素图层中选择随机点。

过程

以下内容介绍了三个可以使用“子集要素”工具、Python 或“按属性选择”功能的工作流。

使用“子集要素”工具
“子集要素”工具将数据分成两个子集。 要素的分割方法是从 [0,1] 均匀分布生成随机值。此工具需要 Geostatistical Analyst 许可。 有关“子集要素”工具的详细信息,请参阅下方的 ArcGIS web 帮助:子集要素

使用 Python 脚本

:
以下 Python 脚本由 Stack Exchange 提供,并且该工作流已通过 Esri 验证。
  1. 在 ArcMap 中,单击 Python 按钮 python_button 以打开 Python 窗口。
  2. 将以下 Python 脚本之一复制并粘贴到 Python 窗口中。

    使用脚本 1,根据百分比选择随机点要素,使用脚本 2,根据计数选择随机点要素。

    脚本 1
    import arcpy
    def SelectRandomByPercent (layer, percent):
    #layer variable is the layer name in TOC
    #percent is percent as whole number  (0-100)
    if percent > 100:
    print "percent is greater than 100"
    return
    if percent < 0:="" print="" "percent="" is="" less="" than="" zero"="" return="" import="" random="" fc="arcpy.Describe" (layer).catalogpath="" featurecount="float" (arcpy.getcount_management="" (fc).getoutput="" (0))="" count="int" (featurecount="" *="" float="" (percent)="" float="" (100))="" if="" not="" count:="" arcpy.selectlayerbyattribute_management="" (layer,="" "clear_selection")="" return="" oids="[oid" for="" oid,="" in="" arcpy.da.searchcursor="" (fc,="" "oid@")]="" oidfldname="arcpy.Describe" (layer).oidfieldname="" delimoidfld="arcpy.AddFieldDelimiters" (layer,="" oidfldname)="" randoids="random.sample" (oids,="" count)="" oidsstr=", " .join="" (map="" (str,="" randoids))="" sql="{0} IN ({1})" .format="" (delimoidfld,="" oidsstr)="" arcpy.selectlayerbyattribute_management="" (layer,="" "",="">

    脚本 2
    import arcpy
    def SelectRandomByCount (layer, count):
    import random
    layerCount = int (arcpy.GetCount_management (layer).getOutput (0))
    if layerCount < count:="" print="" "input="" count="" is="" greater="" than="" layer="" count"="" return="" oids="[oid" for="" oid,="" in="" arcpy.da.searchcursor="" (layer,="" "oid@")]="" oidfldname="arcpy.Describe" (layer).oidfieldname="" delimoidfld="arcpy.AddFieldDelimiters" (layer,="" oidfldname)="" randoids="random.sample" (oids,="" count)="" oidsstr=", " .join="" (map="" (str,="" randoids))="" sql="{0} IN ({1})" .format="" (delimoidfld,="" oidsstr)="" arcpy.selectlayerbyattribute_management="" (layer,="" "",="">
  3. Python 窗口中,按 Enter 键执行此脚本。
  4. 输入以下编码,其中参数 layer 为图层名称,num 为百分比或计数的数值。
    SelectRandomByPercent ("layer", num)
  5. Enter 键运行此脚本。
使用“按属性选择”
  1. 在新建字段中生成随机值。
    1. 创建新的浮点字段。
    2. 右键单击新建字段的标题,然后单击字段计算器
    3. 将解析程序设置为 Python
    4. 选中显示代码块复选框。
    5. 复制以下代码,并将其粘贴到预逻辑脚本代码文本框中。
import random
def rand():
return random.random()
  1. 随机文本框中输入 rand()
  2. 单击确定。 在新建字段中生成随机数。
  3. 单击表选项按钮,然后单击按属性选择
  4. 在文本框中输入以下表达式,其中 layer 为图层名称,num 为百分比数值。 假设用户要保留 50% 的要素,则 num 值为 0.5
"layer"<>
  1. 单击应用

相关信息