ArcGIS Desktop

  • Documentación
  • Soporte

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS for Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

Trabajar con NumPy en ArcGIS

  • Working with tables and feature data
  • Trabajar con rásteres

Numerical Python (NumPy) es un paquete fundamental para el cálculo científico en Python, e incluye compatibilidad con un potente objeto de conjunto N dimensional. NumPy proporciona una avenida para realizar operaciones matemáticas complejas y ha sido parte del software de instalación de ArcGIS desde la versión 9.2. Para más información, vea el sitio Web de NumPyVínculo externo.

Un conjunto Python NumPy está diseñado para manejar conjuntos grandes. Hay muchas funciones de Phyton existentes que fueron creadas para procesar conjuntos NumPy, la mayoría que se han observado están incluidas en el paquete de cálculo científico de SciPy de Python.

Working with tables and feature data

Table and feature classes can be converted to and from NumPy arrays using functions in the data access (arcpy.da) module.

To convert NumPy arrays to tables and feature classes, the arrays must be structured arrays. Structured arrays include fields (or structs) that are used to map the data to field in ArcGIS table and feature classes. For more information on structured arrays, see Structured arraysExternal link.

Create a structured NumPy array.

import numpy

arr = numpy.array([(471316.383, 5000448.782), (470402.493, 5000049.216)],
                  numpy.dtype([('X', '>f8'),('Y', '>f8')]))

Una vez lo haya creado, un conjunto estructurado NumPy se puede convertir en una clase de entidad o tabla.

Convertir un conjunto NumPy a una clase de entidad de geodatabase.

import arcpy
import numpy

out_fc = 'C:/data/texas.gdb/fd/pointlocations'

# Create a numpy array with an id field, and a field with a tuple 
#  of x,y coordinates
arr = numpy.array([(1, (471316.3835861763, 5000448.782036674)),
                   (2, (470402.49348005146, 5000049.216449278))],
                  numpy.dtype([('idfield', numpy.int32),('XY', '<f8', 2)]))

# Define a spatial reference for the output feature class
spatial_ref = arcpy.Describe('C:/data/texas.gdb/fd').spatialReference

# Export the numpy array to a feature class using the XY field to
#  represent the output point feature
arcpy.da.NumPyArrayToFeatureClass(arr, out_fc, ['XY'], spatial_ref)

Funciones arcpy.da para trabajar con datos de entidad y tablas

FuncionesExplicación
ExtendTable

Una el contenido de un conjunto estructurado NumPy a una tabla basándose en un campo de atributos común.

FeatureClassToNumPyArray

Convertir una clase de entidad a un conjunto estructurado NumPy.

NumPyArrayToFeatureClass

Convertir un conjunto estructurado NumPy a una clase de entidad.

NumPyArrayToTable

Convertir un conjunto estructurado NumPy a una tabla.

TableToNumPyArray

Convertir una tabla a conjunto estructurado NumPy.

Los campos de enteros en conjuntos NumPy no son compatible con valores nulos. Si los datos que se convirtieron utilizando FeatureClassToNumPyArray o TableToNumPyArray contienen valores nulos, las filas que incluyen los valores nulos deben omitirse totalmente u ocultarse con un valor sustituto.

Omitir todos los registros que incluyen un valor nulo.

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

Máscara Nones en los campos de enteros con valores diferentes utilizando un diccionario.

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

Tipo de conversiones

La dtypes del conjunto creado están determinados por el tipo de campo de la tabla de entrada o clase de entidad.

Tipo de campoNumPy dtype

Single

numpy.float32

Double

numpy.float64

SmallInteger

numpy.int32

Integer

numpy.int32

OID

numpy.int32

GUID

<U64

String

<u1, <u10, y así sucesivamente

Date

<M8[us]

Nota:

Los campos de cadena de caracteres convertidos a un conjunto tendrán el mismo ancho. Por ejemplo, un campo de cadena de caracteres con un ancho de 20 tendrá un dtype de <u20.

Otros tipos de campos no mencionados anteriormente, incluidos los campos ráster y BLOB, no son compatibles. Los campos de geometría tampoco no compatibles, pero varias propiedades de geometría se pueden agregar al conjunto mediante las fichas especiales que se enumeran a continuación.

TokenDescripción

SHAPE@XY

Coordenadas x,y centroide de la entidad

SHAPE@TRUECENTROID

Coordenadas x,y centroide verdadero de la entidad

SHAPE@X

Coordenada x de la entidad

SHAPE@Y

La coordenada y de la entidad

SHAPE@Z

Coordenada z de la entidad

SHAPE@M

Valor m de la entidad

SHAPE@AREA

Área de la entidad

SHAPE@LENGTH

La longitud de la entidad

Consideraciones de la memoria

Un conjunto que requiere más memoria de la que está disponible fallará con una excepción MemoryError.

Sugerencias para evitar las excepciones MemoryError:

  • Eliminar el conjunto de objetos después de utilizar; eliminar el conjunto liberará la memoria.
  • Utilice sólo los campos que necesita, especialmente los campos de texto; un campo de texto convertido en conjunto consumirá 4 bytes por cada carácter de ancho. Por ejemplo, un campo de cadena de caracteres con un ancho de 100 consumirán 400 bytes de memoria para cada valor en el conjunto.

NumPy dtypeLa cantidad de bytes por valor

<U1

4

numpy.int32

4

numpy.float32

4

numpy.float64

8

Nota:

numpy.nbytes devuelve un diccionario de dtypes y un número de bytes.

Trabajar con rásteres

El ráster se puede convertir a y desde conjuntos NumPy utilizando las funciones RasterToNumPyArray y NumPyArrayToRaster de ArcPy. Es posible que desee convertir un ráster de ArcGIS a un conjunto NumPy para:

  1. Implementar una de las distintas funciones Python existentes que se pueden aplicar a un conjunto NumPy (por ejemplo, ejecutar filtros en los datos, realizar un análisis multidimensional o utilizar rutinas de optimización).
  2. Desarrollar una función personalizada al obtener acceso a las celdas individuales dentro el conjunto NumPy (por ejemplo, para implementar notaciones de vecindad, cambiar valores de celdas individuales o ejecutar operadores acumulativos en un ráster completo).

Funciones arcpy para trabajar con rásteres

FuncionesExplicación
RasterToNumPyArray

Convertir un ráster en un conjunto NumPy.

NumPyArrayToRaster

Convierte un conjunto NumPy en un ráster.

Un ráster se convierte en un conjunto NumPy para calcular el porcentaje del valor de la celda en la fila completa del ráster. Se crea entonces un nuevo ráster.

import arcpy
import numpy

my_array = arcpy.RasterToNumPyArray('C:/data/inRaster')
my_array_sum = my_array.sum(1)
my_array_sum.shape = (my_array.shape[0], 1)
my_array_perc = (my_array * 1.0) / my_array_sum

new_raster = arcpy.NumPyArrayToRaster(my_array_perc)
new_raster.save("C:/output/fgdb.gdb/PercentRaster")

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

Plataforma ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog interno
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2018 Esri. | Privacidad | Legal