Deutsch

How To: Auswählen zufälliger Punkte aus einem vorhandenen Punkt-Feature-Layer

Zusammenfassung

Wenn zu viele Punkt-Features vorhanden sind, ist es in bestimmten Fällen möglicherweise interessant, nur einige der Punkte für die statistische Analyse beizubehalten. Durch die Auswahl verteilter Punkte nach dem Zufallsprinzip wird eine unverzerrte Analyse möglich. Bei den folgenden Prozeduren werden nur zufällige Punkte ausgewählt und keine neuen zufälligen Punkte erstellt. Nach dem Auswählen können die Punkte in einen neuen Layer exportiert werden.

In den folgenden Anweisungen wird beschrieben, wie zufällige Punkte aus einem vorhandenen Punkt-Feature-Layer ausgewählt werden.

Vorgehensweise

Nachfolgend werden drei mögliche Workflows beschrieben, bei denen das Werkzeug "Subset Features", Python bzw. die Funktion "Nach Attributen auswählen" verwendet wird.

Verwenden des Werkzeugs "Subset Features"
Mit dem Werkzeug "Subset Features" werden die Daten in zwei Teilmengen unterteilt. Die Features werden unterteilt, indem Zufallswerte aus einer einheitlichen [0,1]-Verteilung generiert werden. Für dieses Werkzeug ist die Geostatistical Analyst-Lizenz erforderlich. Weitere Informationen zum Werkzeug "Subset Features" finden Sie in der ArcGIS-Webhilfe unter Subset Features.

Verwenden von Python-Skripten

Hinweis:
Die folgenden Python-Skripte stammen von Stack Exchange, und der Workflow wurde von Esri verifiziert.
  1. Klicken Sie in ArcMap auf die Schaltfläche Pythonpython_button, um das Fenster Python zu öffnen.
  2. Kopieren Sie eines der folgenden Python-Skripte, und fügen Sie es in das Fenster Python ein.

    Verwenden Sie Skript 1, um zufällige Punkt-Features nach Prozent auszuwählen, oder Skript 2, um zufällige Punkt-Features nach Anzahl auszuwählen.

    Skript 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. Drücken Sie im Fenster Python die Eingabetaste, um das Skript auszuführen.
  4. Geben Sie den folgenden Code ein, wobei der Parameter layer der Name des Layers und num die Prozentangabe als Zahl oder die Anzahl ist.
    SelectRandomByPercent ("layer", num)
  5. Drücken Sie die Eingabetaste, um das Skript auszuführen.
Verwenden von "Nach Attributen auswählen"
  1. Generieren Sie Zufallswerte in einem neuen Feld.
    1. Erstellen Sie ein neues Float-Feld.
    2. Klicken Sie mit der rechten Maustaste auf die Feldkopfzeile, und klicken Sie auf Feldberechnung.
    3. Ändern Sie den Parser in Python.
    4. Aktivieren Sie das Kontrollkästchen Code-Block anzeigen.
    5. Kopieren Sie den folgenden Code, und fügen Sie ihn in das Textfeld Pre-Logic Script Code ein:
import random
def rand():
   return random.random()
  1. Geben Sie rand() in das Textfeld Zufallsprinzip ein.
  2. Klicken Sie auf OK. Im neuen Feld werden Zufallszahlen generiert.
  3. Klicken Sie auf die Schaltfläche Tabellenoptionen, und dann auf Nach Attributen auswählen.
  4. Geben Sie im Textfeld den folgenden Ausdruck ein, wobei layer der Name des Layers und num die Prozentangabe als Zahl ohne Einheit ist. Wenn 50 % der Features beibehalten werden sollen, hat num den Wert 0.5.
"layer"<>
  1. Klicken Sie auf Übernehmen.

Referenzinformationen