FeatureClassToNumPyArray

Zusammenfassung

Konvertiert eine Feature-Class in ein strukturiertes NumPy-Array.

Auswertung

NumPy is a fundamental package for scientific computing in Python, including support for a powerful N-dimensional array object. For more information, see Working with NumPy in ArcGIS.

Um Tabellen in ein NumPy-Array zu konvertieren, verwenden Sie stattdessen die Funktion TableToNumPyArray.

Syntax

FeatureClassToNumPyArray (in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {skip_nulls}, {null_value})
ParameterErklärungDatentyp
in_table

Die Feature-Class, der Layer, die Tabelle oder die Tabellensicht

String
field_names
[field_names,...]

Eine Liste (oder ein Tupel) von Feldnamen. Für ein einzelnes Feld kann eine Zeichenfolge statt einer Zeichenfolgenliste verwendet werden.

Verwenden Sie ein Sternchen (*) statt einer Liste von Feldern, wenn Sie über die Eingabetabelle auf alle Felder zugreifen möchten (Raster- und BLOB-Felder sind ausgenommen). Um die Performance zu verbessern und eine zuverlässige Feldreihenfolge zu erzielen, wird jedoch empfohlen, die Liste der Felder lediglich auf die tatsächlich benötigten Felder zu beschränken.

Raster- und BLOB-Felder werden nicht unterstützt. Geometrieobjekte werden mit dem Token SHAPE@ nicht unterstützt. Geometrieinformationen können jedoch unter Verwendung anderer Token, beispielsweise SHAPE@XY (Tupel der Schwerpunktkoordinaten des Features), SHAPE@AREA und SHAPE@LENGTH einbezogen werden.

Der Zugriff auf zusätzliche Informationen kann mit Token (z. B. OID@) statt Feldnamen erfolgen:

  • SHAPE@XYEin Tupel von XY-Koordinaten für den Feature-Schwerpunkt.
  • SHAPE@TRUECENTROIDEin Tupel von XY-Koordinaten für den Feature-Schwerpunkt. Dies gibt denselben Wert zurück wie SHAPE@XY.
  • SHAPE@XDuplikat der X-Koordinate des Features.
  • SHAPE@YDuplikat der Y-Koordinate des Features.
  • SHAPE@ZDuplikat der Z-Koordinate des Features.
  • SHAPE@MDuplikat des M-Wertes des Features.
  • SHAPE@AREADuplikat der Fläche des Features.
  • SHAPE@LENGTHDuplikat der Länge des Features.
  • OID@Der Wert des ObjectID-Feldes.

Export a feature class to a NumPy array. The output array will include a field for the Object ID and a field containing a tuple of the feature's centroid's x,y coordinates.

import arcpy
array = arcpy.da.FeatureClassToNumPyArray(fc, ["OID@", "SHAPE@XY"])

# The first row would look similar to the following:
#  (1, [-147.82339477539062, 64.86953735351562])
print(array[0])

SHAPE@M and SHAPE@Z tokens will only return values if the in_table contains point features and is m-aware (or z-aware). If the in_table contains polygon, polyline, or multipart features, SHAPE@M and SHAPE@Z will return a nan. Any feature class that is not m-aware or z-aware will not support SHAPE@M and SHAPE@Z tokens.

(Der Standardwert ist *)

String
where_clause

Ein optionaler Ausdruck zur Begrenzung der zurückgegebenen Datensätze. Weitere Informationen zu WHERE-Klauseln und SQL-Anweisungen finden Sie unter SQL-Referenz für in Abfrageausdrücken verwendete Elemente.

(Der Standardwert ist "")

String
spatial_reference

Der Raumbezug der Feature-Class. Er kann mit einem SpatialReference-Objekt oder einer Zeichenfolgenentsprechung angegeben werden.

Use the spatial_reference argument to return coordinates in a different spatial reference. Here, a second feature class is described to access a spatial reference object.

import arcpy
SR = arcpy.Describe(fc2).spatialReference
arcpy.da.FeatureClassToNumPyArray(fc,
                                  ["OID@", "SHAPE@XY", "EDUCATION"], 
                                  spatial_reference=SR)

(Der Standardwert ist None)

SpatialReference
explode_to_points

Zerlegen eines Features in die einzelnen Punkte bzw. Stützpunkte. Wenn explode_to_points auf True festgelegt wird, wird ein Multipoint-Feature mit fünf Punkten beispielsweise durch fünf Zeilen dargestellt.

(Der Standardwert ist False)

Boolean
skip_nulls

Steuert, ob Datensätze mit NULL-Werten übersprungen werden. Hierbei kann es sich um einen booleschen True- oder False-Wert, eine Python-Funktion oder einen lambda-Ausdruck handeln.

Ist True festgelegt, wird der Datensatz übersprungen, wenn eines der Attribute des Datensatzes (einschließlich "geometry") NULL ist. Bei der Einstellung False wird mit skip_nulls versucht, alle Datensätze ohne Berücksichtigung von NULL-Werten zu verwenden. In einem NumPy-Array wird NULL für numerische Gleitkommawerte, nicht jedoch für ganze Zahlen, als NaN (Not a Number, keine Zahl) dargestellt.

Skip all records that include a null.

import arcpy
array = arcpy.da.FeatureClassToNumPyArray(fc, fields, skip_nulls=True)

Eine Python-Funktion oder ein lambda-Ausdruck kann zur genaueren Steuerung verwendet werden, u. a. zum Protokollieren der OID-Werte aller Datensätze, die einen NULL-Wert enthalten. In den beiden folgenden Beispielen wird der lambda-Ausdruck oder eine Funktion zum Identifizieren von OIDs mit NULL-Datensätzen verwendet.

Use a function to capture all records that are skipped because of nulls.

import arcpy
def getnull(oid):
    nullRows.append(oid)
    return True
nullRows = list()
array = arcpy.da.FeatureClassToNumPyArray(table, fields, skip_nulls=getnull)
print(nullRows)

Use a lambda expression to capture all records that are skipped because of nulls.

import arcpy
nullRows = list()
array = arcpy.da.FeatureClassToNumPyArray(fc, fields, 
                                    skip_nulls=lambda oid: nullRows.append(oid))
print(nullRows)
Hinweis:

In NumPy-Arrays werden NULL-Werte in Float-Typen wie nan und in Texttypen wie None dargestellt. Von Integer-Typen wird das Konzept von NULL-Werten nicht unterstützt.

(Der Standardwert ist False)

Variant
null_value

Ersetzt NULL-Werte aus der Eingabe durch einen neueren Wert.

null_value wird ersetzt, bevor skip_nulls ausgewertet wird.

Mask all None's in integer fields with a -9999.

import arcpy
fields = ['field1', 'field2']
arcpy.da.FeatureClassToNumPyArray(fc, fields, null_value=-9999)

Mask None's in integer fields with different values using a dictionary.

import arcpy
fields = ['field1', 'field2']
nullDict = {'field1':-999999, 'field2':-9999}
arcpy.da.FeatureClassToNumPyArray(fc, fields, null_value=nullDict)
Vorsicht:

Bei Bereitstellung einer Maske wie -9999 können ganzzahlige Felder mit NULL-Werten in ein NumPy-Array exportiert werden. Bei Verwendung dieser Werte in Analysen ist jedoch Vorsicht angebracht. Die Ergebnisse können durch den einbezogenen Wert ungewollte Verzerrungen aufweisen.

(Der Standardwert ist None)

Integer
Rückgabewert
DatentypErklärung
NumPyArray

Ein strukturiertes NumPy-Array.

Codebeispiel

Konvertieren Sie eine Tabelle in ein NumPy-Array, und führen Sie einige grundlegende Statistiken mit NumPy durch.

import arcpy
import numpy

input = "c:/data/usa.gdb/USA/counties"
arr = arcpy.da.FeatureClassToNumPyArray(input, ('STATE_NAME', 'POP1990', 'POP2000'))

# Sum the total population for 1990 and 2000
#
print(arr["POP1990"].sum())
print(arr["POP2000"].sum())

# Sum the population for the state of Minnesota
#
print(arr[arr['STATE_NAME'] == "Minnesota"]['POP2000'].sum())

Verwenden Sie "TableToNumPyArray", um Korrelationskoeffizienten für zwei Felder zu bestimmen.

import arcpy
import numpy

input = "c:/data/usa.gdb/USA/counties"
field1 = "INCOME"
field2 = "EDUCATION"

arr = arcpy.da.FeatureClassToNumPyArray(input, (field1, field2))

# Print correlation coefficients for comparison of 2 field values
#               
print(numpy.corrcoef((arr[field1], arr[field2])))

Verwandte Themen