Está en la página 1de 7

Ejemplos de Calcular campo http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//005s00...

Ejemplos de Calcular campo


Resource Center » Biblioteca para profesionales » Administración de datos » Tipos de datos geográficos » Tablas » Calcular valores de
campo

Introducir valores con el teclado no es la única forma de editar los valores de una tabla. En
algunos casos, puede realizar un cálculo matemático para establecer un valor de campo para un
registro único o para todos los registros. Puede realizar cálculos simples y avanzados en todos
los registros o en registros seleccionados. Además, puede calcular área, longitud, perímetro y
otras propiedades geográficas en campos de tablas de atributos. Las siguientes secciones incluyen
ejemplos del uso de la calculadora de campo. Los cálculos se pueden realizar con Python o con
VBScript.
Para ArcGIS, se recomienda el lenguaje de secuencia de comandos de Python. Utilice Python si
desea acceder a la funcionalidad de geoprocesamiento, incluida la geometría de entidad. La
adopción de Python como el lenguaje de secuencia de comandos para ArcGIS 10.0 proporciona
muchas oportunidades para realizar cálculos.
Utilice VBScript si tiene experiencia con VBA o VBScript y se siente cómodo con la sintaxis de
secuencia de comandos. Los archivos .cal guardados de versiones anteriores de ArcGIS pueden
funcionar o pueden precisar modificaciones mínimas. Si tiene código VBA de versiones anterior
que utilizan ArcObjects, deberá modificar los cálculos para que funcionen en la versión 10.0.

Nota: Python aplica la sangría como parte de la sintaxis. Utilice dos o


cuatro espacios para definir cada nivel lógico. Alinee el comienzo
y el final de los bloques de declaración, y sea consistente.
Los campos de expresión de cálculo de Python se encuentran
entre signos de exclamación (!!).
Cuando nombre variables, tenga en cuenta que Python distingue
entre mayúsculas y minúsculas, de manera que yield no es lo
mismo que Yield.
VBScript no permite declarar explícitamente ningún tipo de dato;
todas las variables son implícitamente Variant. Las declaraciones
como Dim x as String deberían quitarse o simplificarse a Dim
x.
Después de introducir las declaraciones, puede hacer clic en
Guardar si desea escribirlas en un archivo. El botón Cargar le
solicitará que busque y seleccione un archivo de cálculo
existente.

Cálculos simples
Ejemplos de cadenas sencillas
Las cadenas de caracteres están admitidas por una serie de funciones de cadenas de
caracteres de Python, incluidas capitalize, rstrip y replace.
Poner en mayúscula el primer carácter de la cadena del campo CITY_NAME.

!CITY_NAME!.capitalize()

Eliminar los espacios en blanco al final de la cadena del campo CITY_NAME.

!CITY_NAME!.rstrip()

Reemplazar las instancias de "california" con "California" que se encuentran en el campo


STATE_NAME.

1 de 7 25/05/2011 8:41
Ejemplos de Calcular campo http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//005s00...

!STATE_NAME!.replace("california", "California")

Los caracteres en un campo de cadena se pueden acceder mediante la indexación y la


segmentación en Python. La indexación recupera los caracteres en una posición del índice;
la segmentación recupera un grupo de caracteres.
Ejemplo Explicación Resultado
!fieldname![0] El primer "a"
carácter.

!fieldname![-2] El "e"
segundo/último
carácter.

!fieldname![1:4] El segundo, "bcd"


tercero, cuarto
y quinto
carácter.

Python también admite el formato de cadena con el operador %.


Combinar FieldA y FieldB separados por dos puntos.
"%s:%s" % (!FieldA!, !FieldB!)

Operaciones de cadenas de Python comunes

Funciones de cadenas de VBScript


Las cadenas de caracteres están admitidas por una serie de funciones de cadenas de
caracteres de VBScript, incluidas Left, InStr y Chrt. A continuación hay algunos
ejemplos de VBScript para funciones de cadenas comúnmente utilizadas en la Calculadora
de campo.
Función Left: Devuelve una (cadena) Variant que contiene una cantidad especificada de
caracteres desde el lado izquierdo de una cadena.
MyStr = Left([MyField], 1)

Función Right: Devuelve una (cadena) Variant que contiene una cantidad especificada de
caracteres desde el lado derecho de una cadena.
MyStr = Right([MyField], 1)

Función Mid: Devuelve una (cadena) Variant que contiene una cantidad especificada de
caracteres de una cadena.
MyString = "Mid Function Demo" 'Create text string FirstWord = Mid(MyString, 1, 3) '
Returns "Mid" LastWord = Mid(MyString, 14, 4) 'Returns "Demo" MidWords = Mid(MyString,
5) 'Returns "Function Demo"

Función InStr: Devuelve un valor Variant (Long) que especifica la posición de la primera
instancia de una cadena dentro de otra.
MyPosition = InStr([address], " ")

Función Replace: Devuelve una cadena en la que una subcadena especificada ha sido
reemplazada por otra subcadena, una cantidad de veces especificada.
NewString = Replace([comments], "#", "!")

Función Chr: Devuelve una cadena que contiene el carácter asociado con el código de
carácter especificado.
' Replace a carriage return character with an exclamation NewString =
Replace([comments], chr(13), "!")

2 de 7 25/05/2011 8:41
Ejemplos de Calcular campo http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//005s00...

Operador &: Se utiliza para forzar la concatenación de cadenas de dos expresiones.


MyStr = [MyField1] & " " & [MyField2]

Ejemplos de matemática sencillos


Python proporciona herramientas para procesar números. Python también admite una serie
de funciones numéricas y matemáticas, incluidas math, cmath, decimal, random, itertools,
functools y operator.
Operador Explicación Ejemplo Resultado
x + y x más y 1.5 + 4.0
2.5

x - y x menos y 3.3 - 1.1


2.2

x * y x multiplicado por y 2.0 * 4.4


2.2

x / y x dividido por y 4.0 / 3.2


1.25

x // y x dividido por y (división truncada) 4.0 / 3.0


1.25

x % y x módulo y 8 % 3 2

-x expresión negativa de x x = 5 -5
-x

+x x no cambia x = 5 5
+x

x ** y x elevado a la potencia de y 2 ** 3 8

Multiplicación
!Rank! * 2

Calcule el volumen de una esfera dado un campo de radio.


4 / 3 * math.pi * !Radius! ** 3

Utilizar bloques de código


Con las expresiones de Python y el parámetro de Código bloque, puede:
Utilizar cualquier función de Python en la expresión.
Acceder a los objetos y las funciones de geoprocesamiento.
Acceder a las propiedades de geometría de entidad.
Acceder al nuevo operador de valor aleatorio.
Reclasificar valores con la lógica if-then-else.
Utilizar otras herramientas de geoprocesamiento.
El analizador utilizado determina la forma en que se utiliza el código bloque. La Calculadora
de campo es compatible con los analizadores de Python y VB Script.
Analizador Bloque de código
Python Es compatible con la funcionalidad de Python. El bloque de código se
expresa utilizando las funciones de Python (def). Las propiedades de
geometría se expresan utilizando objetos de geoprocesamiento, como
objetos de punto, donde sea apropiado.

3 de 7 25/05/2011 8:41
Ejemplos de Calcular campo http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//005s00...

VB Script Los cálculos se realizan utilizando VBScript.

Las funciones de Python se definen con la palabra clave def seguida del nombre de la función
y los parámetros de entrada de la función. Los valores se vuelven de la función con una
declaración return . El nombre de la función es elección suya (no utilice espacios ni números a
la izquierda).

Nota: Recuerde que Python aplica la sangría como parte de la sintaxis.


Utilice dos o cuatro espacios para definir cada nivel lógico. Alinee
el comienzo y el final de los bloques de declaración, y sea
consistente.

Ejemplos de código: matemática


Redondear el valor del campo a dos posiciones decimales.
Expression: round(!area!,2) Parser: Python

Utilizar el módulo de matemática para convertir metros a pies. La conversión se eleva a la


potencia de 2 y se multiplica por el área.
Parser: Python Expression: MetersToFeet((float!shape.area)) Code Block: def
MetersToFeet(area): return math.pow(3.2808,2) * area

Calcular campos utilizando la lógica con Python


Clasificar basado en los valores de campo.
Parser: Python Expression: Reclass(!WELL_YIELD!) Code Block: def Reclass(WellYield): if
(WellYield >= 0 and WellYield <= 10): return 1 elif (WellYield > 10 and WellYield <=
20): return 2 elif (WellYield > 20 and WellYield <= 30): return 3 elif
(WellYield > 30): return 4

4 de 7 25/05/2011 8:41
Ejemplos de Calcular campo http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//005s00...

Calcular campos utilizando la lógica con VBScript


Ejecuta condicionalmente un grupo de declaraciones, dependiendo del valor de una expresión.
Parser: VB Script Expression: PopulationDensity = density Code Block: Dim density If
[POP90_SQMI] < 100 Then density = "low" elseif [POP90_SQMI] < 300 Then density = "medium"
else density = "high" end if

Ejemplos de código: geometría

Nota: Para obtener más información sobre la conversión de unidades


geométricas, consulte la sección "Conversiones de unidades
geométricas" a continuación.

Calcular el área de una entidad.


Parser: Python Expression: !shape.area!

Calcular la coordenada X máxima de una entidad.


Parser: Python Expression: !shape.extent.XMax!

Calcular el número de vértices de una entidad.


Parser: Python Expression: MySub(!shape!) Code Block: def MySub(feat): partnum =
0 # Count the number of points in the current multipart feature partcount =
feat.partCount pntcount = 0 # Enter while loop for each part in the feature (if a
singlepart feature # this will occur only once) # while partnum < partcount: part =
feat.getPart(partnum) pnt = part.next() # Enter while loop for each vertex #
while pnt: pntcount += 1 pnt = part.next() # If pnt is null, either the
part is finished or there is an # interior ring # if not pnt: pnt =
part.next() partnum += 1 return pntcount

Para una clase de entidad de puntos, cambiar la coordenada x de cada punto por 100.
Parser: Python Expression: shiftXCoordinate(!SHAPE!) Code Block: def
shiftXCoordinate(shape): shiftValue = 100 point = shape.getPart(0) point.X +=
shiftValue return point

Conversiones de unidades geométricas


Las propiedades de forma y longitud del campo de geometría se pueden modificar con tipos de
unidades expresadas con un signo @.
Palabras clave de unidad de medida de área:
ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS |
SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS |
SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS |
UNKNOWN
Palabras clave de unidad de medida lineal:
CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS |
METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS

Nota: Si los datos se almacenan en un sistema de coordenadas


geográficas y se proporciona una unidad lineal (por ejemplo, pies),
el cálculo de longitud se convertirá mediante un algoritmo
geodésico.

5 de 7 25/05/2011 8:41
Ejemplos de Calcular campo http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//005s00...

Precaución: Convertir las unidades de área en datos en un sistema de


coordenadas geográficas producirá resultados cuestionables ya que
los grados decimales no son consistentes en el globo.

Calcular la longitud de una entidad en yardas.


Parser: Python Expression: !shape.length@yards!

Calcular el área de una entidad en acres.


Parser: Python Expression: !shape.area@acres!

Ejemplos de código: fechas


Calcular la fecha actual.
Parser: Python Expression: time.strftime("%d/%m/%Y")

Calcular la fecha y hora actuales.


Parser: Python Expression: time.strftime("%d/%m/%Y %H:%M")

Ejemplos de código: cadenas


Devolver los tres caracteres más a la derecha.
Parser: Python Expression: !SUB_REGION![-3:]

Remplazar todas las instancias de una "P" mayúscula con una "p" minúscula.
Parser: Python Expression: !STATE_NAME!.replace("P","p")

Concatenar dos campos con un separados de espacio


Parser: Python Expression: !SUB_REGION! + " " + !STATE_ABBR!

Convertir a la primera letra de cada palabra en mayúscula y las demás en


minúscula
Los siguientes ejemplos muestran diferentes maneras de convertir palabras de modo que
cada palabra tenga la primer letra en mayúscula y el resto de las letras en minúscula.
Parser: Python Expression: ' '.join([i.capitalize() for i in !STATE_NAME!.split(' ')])

Parser: Python Expression: string.capwords(!STATE_NAME!, ' ') Expression Type: import


string

Parser: Python Expression: MySub(!STATE_NAME!) Code Block: def MySub(myfieldname):


import string return string.capwords(myfieldname, ' ')

Cálculos acumulativos y secuenciales


Calcular un número o Id. secuencial basado en un intervalo.
Parser: Python Expression: autoIncrement() Code Block: rec=0 def autoIncrement(): global
rec pStart = 1 #adjust start value, if req'd pInterval = 1 #adjust interval value, if
req'd if (rec == 0): rec = pStart else: rec = rec + pInterval return rec

Calcular el valor acumulativo de un campo numérico.


Parser: Python Expression: accumulate(!FieldA!) Code Block: total = 0 def
accumulate(increment): global total if total: total += increment else: total =
increment return total

Calcular el aumento del porcentaje de un campo numérico.

6 de 7 25/05/2011 8:41
Ejemplos de Calcular campo http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//005s00...

Parser: Python Expression: percentIncrease(float(!FieldA!)) Code Block: lastValue = 0 def


percentIncrease(newValue): global lastValue if lastValue: percentage = ((newValue -
lastValue) / lastValue) * 100 else: percentage = 0 lastValue = newValue return
percentage

Valores aleatorios
Utilizar el paquete del sitio de numpy para calcular valores flotantes aleatorios entre 0,0 y
1,0.
Parser: Python Expression: getRandomValue() Code Block: import numpy.random as R def
getRandomValue(): return R.random()

Temas relacionados
Calcular el área, la longitud y otras propiedades geométricas
Cambiar las mayúsculas y minúsculas de los valores de campos de texto
Principios de cálculos de campo
Realizar cálculos de campo simples

Copyright © 1995-2011 Esri. Todos los derechos reservados.

4/18/2011
URL: http://help.arc gis.c om/es/arc gisdesktop/10.0/help/005s/005s0000002m000000.htm

7 de 7 25/05/2011 8:41

También podría gustarte