français

Procédure : sélectionner des points aléatoires à partir d’une couche d’entités ponctuelles existante

Résumé

Dans certains cas, lorsque les entités ponctuelles sont trop nombreuses, il peut être intéressant de ne garder que quelques points pour l’analyse statistique. Le fait de sélectionner des points répartis aléatoirement peut permettre de réaliser une analyse objective. Les procédures ci-dessous permettent de sélectionner des points aléatoires, mais pas d’en créer de nouveaux. Les points sélectionnés peuvent être exportés vers une nouvelle couche.

Les instructions fournies décrivent comment sélectionner des points aléatoires à partir d’une couche d’entités ponctuelles existante.

Procédure

Trois processus possibles sont décrits, faisant appel à l’outil Créer des sous-ensembles d’entités, Sélectionner selon les attributs ou Python.

Utilisation de l’outil Créer des sous-ensembles d’entités
L’outil Créer des sous-ensembles d’entités divise les données en deux sous-ensembles. Les entités sont divisées en générant des valeurs aléatoires à partir d’une distribution [0,1] uniforme. Cet outil requiert la licence Geostatistical Analyst. Pour plus d’informations sur l’outil Créer des sous-ensembles d’entités, reportez-vous à l’aide Web ArcGIS, Subset Features.

Utilisation de scripts Python

Remarque :
Les scripts Python ci-dessous proviennent de Stack Exchange et le processus a été vérifié par Esri.
  1. Dans ArcMap, cliquez sur le bouton Python python_button pour ouvrir la fenêtre Python.
  2. Copiez et collez l’un des scripts Python ci-dessous dans la fenêtre Python.

    Utilisez le script 1 pour sélectionner des entités ponctuelles aléatoires selon un pourcentage, ou le script 2 pour les sélectionner selon des nombres.

    Script 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,="" "",="">

    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. Dans la fenêtre Python, appuyez sur Entrée pour exécuter le script.
  4. Entrez le code ci-dessous, où le paramètre layer correspond au nom de la couche et num, au pourcentage ou au nombre.
    SelectRandomByPercent ("layer", num)
  5. Appuyez sur Entrée pour exécuter le script.
Utilisation de l’outil Sélectionner selon les attributs
  1. Générez des valeurs aléatoires dans un nouveau champ.
    1. Créez un nouveau champ de type Float (Flottant).
    2. Cliquez avec le bouton droit de la souris sur l’en-tête du nouveau champ et sélectionnez Field Calculator (Calculatrice de valeurs de champs).
    3. Modifiez l’analyseur en Python.
    4. Cochez la case Show Codeblock (Afficher le bloc de code).
    5. Copiez le code ci-dessous et collez-le dans la zone de texte Pre-Logic Script Code (Code de script Pre-Logic).
import random
def rand():
   return random.random()
  1. Entrez rand() dans la zone de texte Random (Aléatoire).
  2. Cliquez sur OK. Des nombres aléatoires sont générés dans le nouveau champ.
  3. Cliquez sur le bouton Table Options (Options de la table) et cliquez sur Select By Attributes (Sélectionner selon les attributs).
  4. Entrez l’expression ci-dessous dans la zone de texte, où layer correspond au nom de la couche et num, au pourcentage. En supposant que l’utilisateur souhaite conserver 50 % des entités, la valeur num est 0,5.
"layer"<>
  1. Cliquez sur Appliquer.

Informations associées