Рандомная выборка объектов

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
GeorgeF55
Интересующийся
Сообщения: 29
Зарегистрирован: 11 окт 2011, 17:56
Репутация: 0

Рандомная выборка объектов

Сообщение GeorgeF55 » 18 май 2018, 11:17

Имеет набор данных в виде точек. Необходимо рандомно выбирать заданное число объектов. Каким образов это можно сделать?

Vadim
Завсегдатай
Сообщения: 297
Зарегистрирован: 03 июн 2015, 10:19
Репутация: 72

Re: Рандомная выборка объектов

Сообщение Vadim » 18 май 2018, 16:03

Вроде, вот этот скрипт делает испрашиваемую работу:

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)

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя