FeatureClassToNumPyArray

Zusammenfassung

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

Diskussion

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})
ParameterErläuterungDatentyp
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.

Geben Sie anstelle einer Felderliste ein Sternchen (*) an, um auf alle Felder der Eingabetabelle zuzugreifen (BLOB-Felder werden ausgeschlossen). 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. Bei Verwendung des SHAPE@-Token werden Geometrieobjekte nicht unterstützt, jedoch können Geometrieinformationen mithilfe anderer Token, z. B. SHAPE@XY (Tupel der Koordinaten des Feature-Schwerpunktes), SHAPE@AREA und SHAPE@LENGTH, einbezogen werden.

Anstelle von Feldnamen kann auf zusätzliche Informationen auch über Token (z. B. OID@) zugegriffen werden:

  • SHAPE@XYEin Tupel von XY-Koordinaten für den Feature-Schwerpunkt.
  • SHAPE@XYZEin Tupel von XYZ-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@XX-Koordinate des Features als Zahlenwert (Double).
  • SHAPE@YY-Koordinate des Features als Zahlenwert (Double).
  • SHAPE@ZZ-Koordinate des Features als Zahlenwert (Double).
  • SHAPE@MM-Wertes des Features als Zahlenwert (Double).
  • SHAPE@JSONDie Esri JSON-Zeichenfolge für die Geometrie.
  • SHAPE@WKBDas Well-known Binary (WKB)-Format für OGC-Geometrie. Es bietet eine übertragbare Darstellung eines Geometriewertes in Form eines zusammenhängenden Datenstroms.
  • SHAPE@WKTDas Well-Known Text (WKT)-Format für OGC-Geometrie. Es bietet eine übertragbare Darstellung eines Geometriewertes in Form einer Textzeichenfolge.
  • SHAPE@AREAFläche des Features als Zahlenwert (Double).
  • SHAPE@LENGTHLänge des Features als Zahlenwert (Double).
  • OID@Der Wert des Objekt-ID-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 ArcGIS verwendete Abfrageausdrücke.

(Der Standardwert ist "")

String
spatial_reference

Der Raumbezug der Feature-Class. Wird dieses Argument angegeben, erfolgt für das Feature eine Projektion (Transformation) aus dem Raumbezug der Eingabe. Bei keiner Angabe wird der Raumbezug der Eingabe-Feature-Class verwendet. Gültige Werte für dieses Argument sind SpatialReference-Objekte oder Zeichenfolgenentsprechungen.

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 ist, wird beispielsweise ein Multipoint-Feature mit fünf Punkten durch fünf Zeilen dargestellt.

(Der Standardwert ist False)

Boolean
skip_nulls

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

Wenn die Option auf True festgelegt ist und die Attribute eines Datensatzes NULL sind (einschließlich der Geometrie), wird der Datensatz übersprungen. Bei der Einstellung False versucht skip_nulls, unabhängig von NULL-Werten alle Datensätze 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)

Mit einer Python-Funktion oder einem lambda-Ausdruck kann eine genauere Steuerung erreicht werden, z. B. um die OID-Werte aller Datensätze mit NULL-Wert zu protokollieren. In beiden nachfolgenden Beispielen wird der lambda-Ausdruck bzw. die Funktion dazu verwendet, OIDs mit NULL-Datensätzen zu ermitteln.

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:

Bei NumPy-Arrays werden NULL-Werte in Float-Typen, z. B. nan, sowie in Texttypen, z. B. None, repräsentiert. 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
DatentypErläuterung
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