Español

Cómo: Seleccionar puntos aleatorios de una capa de entidades de puntos existente

Resumen

En algunos casos, si hay demasiadas entidades de puntos, puede que le convenga conservar únicamente algunos de los puntos a efectos de análisis estadísticos. Al seleccionar puntos distribuidos aleatoriamente, puede realizar análisis no sesgados. Los procedimientos que se indican a continuación solo seleccionan puntos aleatorios, y no crean puntos aleatorios nuevos. Tras la selección, puede exportar los puntos a una nueva capa.

Las instrucciones proporcionadas describen cómo seleccionar puntos aleatorios en una capa de entidades de puntos existente.

Procedimiento

A continuación, se describen tres flujos de trabajo posibles que utilizan la herramienta Subconjuntos de entidades, Python o la función Seleccionar por atributos.

Utilizar la herramienta Subconjuntos de entidades
La herramienta Subconjuntos de entidades divide los datos en dos subconjuntos. Las entidades se dividen al generar valores aleatorios a partir de una distribución uniforme [0,1]. Esta herramienta requiere la licencia Geostatistical Analyst. Para obtener más información sobre la herramienta Subconjuntos de entidades, consulte la siguiente Ayuda web de ArcGIS: Subconjuntos de entidades.

Utilizar scripts de Python

Nota:
Los siguientes scripts de Python son aportaciones de Stack Exchange, y Esri ha verificado este flujo de trabajo.
  1. En ArcMap, haga clic en el botón Python python_button para abrir la ventana Python.
  2. Copie y pegue uno de los siguientes scripts de Python en la ventana Python.

    Utilice el Script 1 para seleccionar entidades de puntos aleatorias según el porcentaje, o bien el Script 2 para seleccionar entidades de puntos aleatorios según el recuento.

    Script 1
    import arcpy
    def SelectRandomByPercent (layer, percent):
    # La variable layer es el nombre de la capa en la tabla de contenido
    # percent es el porcentaje en forma de número entero (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,="" "",="">

    Script 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. En la ventana Python, pulse Intro para ejecutar el script.
  4. Escriba el siguiente código, donde el parámetro layer es el nombre de la capa y num es el número del porcentaje o recuento.
    SelectRandomByPercent ("layer", num)
  5. Pulse Intro para ejecutar el script.
Utilizar Seleccionar por atributos
  1. Genere valores aleatorios en un campo nuevo.
    1. Cree un nuevo campo Flotante.
    2. Haga clic con el botón derecho en el encabezado del campo nuevo y haga clic en Calculadora de campo.
    3. Establezca el analizador en Python.
    4. Active la casilla de verificación Mostrar bloque de código.
    5. Copie el siguiente código y péguelo en el cuadro de texto Código de script Pre-Logic.
import random
def rand():
return random.random()
  1. Escriba rand() en el cuadro de texto Aleatorio.
  2. Haga clic en Aceptar. En el campo nuevo se generan números aleatorios.
  3. Haga clic en el botón Opciones de tabla y, a continuación, en Seleccionar por atributos.
  4. Escriba la siguiente expresión en el cuadro de texto, donde layer es el nombre de la capa y num es el número del porcentaje. Suponiendo que el usuario desea conservar el 50 % de las entidades, el valor de num es 0.5.
"layer"<>
  1. Haga clic en Aplicar.

Información relacionada