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

## 过程

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

```注：

1. 在 ArcMap 中，单击 Python 按钮 以打开 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. 单击应用