FeatureClassToNumPyArray

Resumen

Convierte una clase de entidad en una matriz estructurada NumPy.

Debate

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.

Para convertir tablas en una matriz NumPy, use la función TableToNumPyArray en su lugar.

Sintaxis

FeatureClassToNumPyArray (in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {skip_nulls}, {null_value})
ParámetroExplicaciónTipo de datos
in_table

La clase de entidad, capa, tabla o vista de tabla.

String
field_names
[field_names,...]

Una lista (o tupla) de nombres de campo. Para un único campo, puede utilizar una cadena en lugar de una lista de cadenas.

Use un asterisco (*) en lugar de una lista de campos si desea acceder a todos los campos desde la tabla de entrada (se excluyen los campos ráster y BLOB). Sin embargo, para un rendimiento más rápido y un orden de campo fiable, se recomienda que la lista de campos se acote a solo aquellos que se necesitan realmente.

Los campos ráster y BLOB no se admiten. Los objetos de geometría no se admiten con el token SHAPE@, pero se puede incluir información de geometría con otros tokens como SHAPE@XY (tupla de las coordenadas del centroide de la entidad), SHAPE@AREA y SHAPE@LENGTH.

Es posible acceder a información adicional con tokens (como OID@) en lugar de nombres de campo:

  • SHAPE@XYUna tupla de las coordenadas x,y del centroide de la entidad.
  • SHAPE@TRUECENTROIDUna tupla de las coordenadas x,y del centroide de la entidad. Devuelve el mismo valor que SHAPE@XY.
  • SHAPE@XUn doble de la coordenada x de la entidad.
  • SHAPE@YUn doble de la coordenada y de la entidad.
  • SHAPE@ZUn doble de la coordenada z de la entidad.
  • SHAPE@MUn doble del valor m de la entidad.
  • SHAPE@AREAUn doble del área de la entidad.
  • SHAPE@LENGTHUn doble de la longitud de la entidad.
  • OID@Valor del campo ObjectID.

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.

(El valor predeterminado es *)

String
where_clause

Una expresión opcional que limita los registros que se devuelven. Para obtener más información sobre las cláusulas WHERE y sentencias SQL, consulte Referencia SQL para los elementos utilizados en las expresiones de consulta.

(El valor predeterminado es "")

String
spatial_reference

La referencia espacial de la clase de entidad. Se puede especificar con un objeto SpatialReference o un equivalente de cadena.

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)

(El valor predeterminado es None)

SpatialReference
explode_to_points

Deconstruya una entidad en sus puntos o vértices individuales. Si explode_to_points se define como True, una entidad multipunto con cinco puntos, por ejemplo, se representa con cinco filas.

(El valor predeterminado es False)

Boolean
skip_nulls

Controle si se omiten los registros que utilizan valores nulos. Puede ser un True booleano o False, o una función de Python o expresión lambda.

Cuando se define como True, si alguno de los atributos del registro es nulo (incluida la geometría), el registro se omite. Con una configuración False, skip_nulls intenta utilizar todos los registros con independencia de los valores nulos. En una matriz NumPy, un valor nulo se representa como NaN (no es un número) para valores numéricos de punto flotante, pero no para enteros.

Skip all records that include a null.

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

Una función de Python o expresión lambda se puede utilizar para permitir un control más preciso, incluido el cargar valores de OID para todos los registros que incluyan un valor nulo. En los siguientes dos ejemplos, la función o expresión lambda se utiliza para identificar OID que incluyen registros nulos.

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

En matrices NumPy, los valores nulos se representan en tipos flotantes como nan y en tipos de texto como None. Los tipos enteros no admiten el contepto de valores nulos.

(El valor predeterminado es False)

Variant
null_value

Los valores nulos se sustituyen de la entrada por un valor nuevo.

null_value se sustituya antes de evaluar skip_nulls.

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)
Precaución:

Proporcionar una máscara como -9999 permite que los campos de enteros contengan valores nulos para exportarlos a una matriz NumPy, pero tenga ciudado al utilizar estos valores en el análisis. Es posible que los valores estén sesgados sin querer por parte del valor introducido.

(El valor predeterminado es None)

Integer
Valor de retorno
Tipo de datosExplicación
NumPyArray

Una matriz estructurada NumPy.

Muestra de código

Convierta una tabla en una matriz NumPy y realice algunas estadísticas básicas con 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())

Use TableToNumPyArray para determinar los coeficientes de correlación para dos campos.

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

Temas relacionados