lunes, 1 de junio de 2015

Uso del VbScript en la calculadora de expresiones del ArcGIS (rec + 1)

La calculadora de expresiones del ArcGIS nos da la posibilidad de hacer pequeñas rutinas que nos pueden ayudar hacer cosas sencillas sobre la tabla de atributos de alguna capa.
Como sabemos, para acceder a dicha calculadora, solo hacemos un click derecho a la cabecera de la columna de interés y luego seleccionamos el botón “Field Calculator..”  desde el menú contextual que aparece luego. Cuando la calculadora aparezca, en la parte donde dice Parser, seleccionamos VB Script (siendo el otro Python) y seleccionamos (o ponemos un “check”) la casilla “Show Codeblock” y nos mostrara algo como la imagen siguiente:





 Cabe señalar, que estos cálculos se hacen de fila en fila u objeto espacial actual. Como ejemplo emularemos la función “rec + 1” del ArcView:
El código genérico sería el siguiente:

Dim rec
Dim inicio
inicio = 1
rec = [FID] + inicio

en la siguiente imagen, vemos como queda esta expresión en la calculadora  y el resultado en la tabla de atributos:






















Vemos que la variable inicio es puesto solo para indicar cuál sería el inicio de la sucesión, siendo no necesaria su presencia.

Si queremos hacer la función anterior pero agregándole una separación de 5 unidades, haremos esto:

Dim rec
Dim inicio
Dim separacion
inicio = 1
separacion = 5
rec = [FID]*separacion + inicio

y en la siguiente imagen vemos como quedaría esta expresión y el resultado de la misma:





















Finalmente, si queremos llenar con un valor con una condición dada, usaríamos algo como esto:

Dim tmp
if [PTO] = "PTO1" then
tmp = "PUNTO1"
else
tmp ="OTROS"
end if

donde, en la columna PTO se repiten varias veces el valor “PTO1” y los buscamos y al encontrarlo colocamos en la columna resultado el valor de “PUNTO1”, si no se encuentra este valor, colocamos el valor de “OTROS”, quedando la expresión en la calculadora y la tabla de esta forma:


















Esperando que sea de ayuda este post, será hasta el otro mes. Saludos
ª