Рандомная выборка объектов
-
- Интересующийся
- Сообщения: 29
- Зарегистрирован: 11 окт 2011, 17:56
- Репутация: 0
Рандомная выборка объектов
Имеет набор данных в виде точек. Необходимо рандомно выбирать заданное число объектов. Каким образов это можно сделать?
-
- Завсегдатай
- Сообщения: 297
- Зарегистрирован: 03 июн 2015, 10:19
- Репутация: 72
Re: Рандомная выборка объектов
Вроде, вот этот скрипт делает испрашиваемую работу:
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
path = arcpy.Describe (layer).path
delimOidFld = arcpy.AddFieldDelimiters (path, oidFldName)
randOids = random.sample (oids, count)
oidsStr = ", ".join (map (str, randOids))
sql = "{0} IN ({1})".format (delimOidFld, oidsStr)
arcpy.SelectLayerByAttribute_management (layer, "", sql)
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
path = arcpy.Describe (layer).path
delimOidFld = arcpy.AddFieldDelimiters (path, oidFldName)
randOids = random.sample (oids, count)
oidsStr = ", ".join (map (str, randOids))
sql = "{0} IN ({1})".format (delimOidFld, oidsStr)
arcpy.SelectLayerByAttribute_management (layer, "", sql)
Кто сейчас на конференции
Сейчас этот форум просматривают: Ahrefs [Bot] и 19 гостей