FeatureClassToNumPyArray

Résumé

Convertit une classe d'entités en tableau structuré NumPy.

Discussion

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.

Pour convertir des tables en tableau NumPy, utilisez plutôt la fonction TableToNumPyArray.

Syntaxe

FeatureClassToNumPyArray (in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {skip_nulls}, {null_value})
ParamètreExplicationType de données
in_table

Classe d'entités, couche, table ou vue tabulaire.

String
field_names
[field_names,...]

Liste (ou tuple) de noms de champs. Pour un champ unique, vous pouvez utiliser une chaîne de caractères au lieu d'une liste de chaînes.

Utilisez un astérisque (*) au lieu d'une liste de champs si vous voulez accéder à tous les champs de la table d'entrée (les champs raster et BLOB sont exclus). Toutefois, pour obtenir des performances plus rapides et un ordre des champs fiable, il est recommandé de limiter la liste des champs à ceux qui sont réellement nécessaires.

Les champs raster et BLOB ne sont pas pris en charge. Les objets géométrie ne sont pas pris en charge par le jeton SHAPE@, mais des informations géométriques peuvent être incluses à l'aide d'autres jetons tels que SHAPE@XY (tuple des coordonnées du centroïde de l'entité), SHAPE@AREA et SHAPE@LENGTH.

Il est possible d'accéder à des informations supplémentaires en utilisant des jetons (tels que OID@) à la place des noms de champs :

  • SHAPE@XYTuple des coordonnées x,y du centroïde de l'entité.
  • SHAPE@TRUECENTROIDTuple des coordonnées x,y du centroïde de l’entité. La valeur renvoyée est la même que SHAPE@XY.
  • SHAPE@XDouble de la coordonnée x de l'entité.
  • SHAPE@YDouble de la coordonnée y de l'entité.
  • SHAPE@ZDouble de la coordonnée z de l'entité.
  • SHAPE@MDouble de la valeur m de l'entité.
  • SHAPE@AREADouble de la surface de l'entité.
  • SHAPE@LENGTHDouble de la longueur de l'entité.
  • OID@Valeur du champ IdObjet.

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.

(La valeur par défaut est *)

String
where_clause

Expression optionnelle qui limite les enregistrements retournés. Pour en savoir plus sur les clauses WHERE et les instructions SQL, consultez Référence SQL pour les éléments utilisés dans les expressions de la requête.

(La valeur par défaut est "")

String
spatial_reference

Référence spatiale de la classe d’entités. Elle peut être spécifié soit avec un objet SpatialReference soit avec une chaîne équivalente.

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)

(La valeur par défaut est None)

SpatialReference
explode_to_points

Déconstruire une entité en ses différents points ou sommets. Si explode_to_points est défini sur True, une entité multi-points avec cinq points, par exemple, est représentée par cinq lignes.

(La valeur par défaut est False)

Boolean
skip_nulls

Contrôler si les enregistrements utilisant des valeurs nulles sont ignorés. Il peut s'agir d'une valeur booléenne True ou False, d'une fonction Python ou d'une expression lambda.

Lorsque ce paramètre est défini sur True, si l'un des attributs de l'enregistrement a une valeur nulle (y compris la géométrie), l'enregistrement est ignoré. Avec un paramètre False, skip_nulls tente d'utiliser tous les enregistrements sans tenir compte des valeurs nulles. Dans un tableau NumPy, une valeur nulle est représentée par un nan (not a number) pour les valeurs numériques en virgule flottante, mais pas pour les nombres entiers.

Skip all records that include a null.

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

Une fonction Python ou une expression lambda peut être utilisée pour permettre un contrôle plus fin, notamment en enregistrant les valeurs OID de tous les enregistrements qui comportent une valeur nulle. Dans les deux exemples ci-dessous, l'expression ou la fonction lambda est utilisée pour identifier les OID qui comprennent des enregistrements nuls.

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)
Remarque :

Dans les tableaux NumPy, les valeur nulles sont représentées par nan dans les types de valeurs à virgule flottante et par None dans les types de texte. Les types de nombres entiers ne prennent pas en charge le concept de valeurs nulles.

(La valeur par défaut est False)

Variant
null_value

Remplace les valeurs nulles de l'entrée par une nouvelle valeur.

null_value est remplacé avant que skip_nulls soit évalué.

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)
Attention :

En fournissant un masque comme -9999, vous pouvez exporter des champs de type entier contenant des valeurs nulles vers un tableau NumPy, mais soyez prudents lorsque vous utilisez ces valeurs dans une analyse. Les résultats peuvent être faussés par inadvertance par la valeur introduite.

(La valeur par défaut est None)

Integer
Valeur renvoyée
Type de donnéesExplication
NumPyArray

Tableau structuré NumPy

Exemple de code

Convertir une table en tableau NumPy et effectuer certains calculs statistiques de base avec NumPy.

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())

Utilisez la fonction TableToNumPyArray pour déterminer les coefficients de corrélation pour deux champs.

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])))

Rubriques connexes