Más

Usando la calculadora de campo en un campo de cadena que tiene algunos valores vacíos?


Tengo un campo CityState que tiene la ciudad y los estados de los terratenientes. Bellingham WA, por ejemplo. Estoy creando dos campos nuevos, OwnerCity y OwnerState en los que elimino los dos últimos caracteres de CityState para OwnerCity (RTrim ([CityState], 2) y capturo los dos últimos caracteres para OwnerState (Right ([CityState], 2). de las celdas de CityState están vacías, por lo que no puedo ejecutar la calculadora.

¿Qué puedo agregar para que ejecute el cálculo donde hay texto y mantenga el valor vacío si no hay texto? Estoy seguro de que hay una respuesta fácil para esto, pero aún no lo he descubierto.


Al usar el analizador de Python en la calculadora de campo, puede usar las siguientes funciones para ejecutar las divisiones de ciudad / estado e ignorar esos registros con valores vacíos (sé que esto no es vbscript, pero también es muy fácil de implementar):

Tenga en cuenta que probablemente sería mejor tener "," delineando los nombres de la ciudad / estado en el campo CityState para garantizar una división más sólida para las ciudades que tienen varios nombres / espacios.

EJECUTAR en el campo de nueva ciudad:

def splitValue (x): if "in x: return x.split (") [0] # asumiendo que tiene un espacio entre la ciudad y el estado, también podría dividir por, también else: return x

splitValue (! CityState!)

EJECUTAR en el nuevo campo de estado:

def splitValue (x): if "in x: return x.split (") [1] # asumiendo que tiene un espacio entre la ciudad y el estado, también podría dividir por, también else: return x

splitValue (! CityState!)


También hay una función de división en VB Script.

Entonces, su código se vería algo así como (Analizador de secuencias de comandos de VB comprobado y Mostrar bloque de código marcado):

Código de secuencia de comandos de prelógica:

Dim result a = Split ([YOUR FIELD], "") 'el primer parámetro es el nombre del campo, el segundo es el delimter result = a (0)' o a (1) dependiendo de la parte de la cadena dividida que necesite

NOMBRE DEL CAMPO = Parte

resultado

Por valores perdidos

Si sabe que es posible que le falte un valor de campo, puede agregar un cheque para ese valor vacío. Encontré usandoubound (a)para darle el límite superior de la matriz creada por elSepararfunción. Entonces, para verificar si la función no se pudo dividir (solo 1 valor, sin espacios, etc.), puede hacer algo como:

si ubound (a) = 0 entonces resultado = "lo que sea" final si

Puede encontrar que la ruta de Python es mucho más fácil ya que puede verificar el.largopropiedad de la matriz en lugar de tener que llamar a esta otra función.

Es un poco más complicado que el analizador de Python, pero puede que le resulte más fácil si está más familiarizado con VB Script. Los ejemplos de ESRI carecen terriblemente de buenos ejemplos de VB Script, pero parece que debería poder tomar los dos simples que tienen y expandirlos.


Ver el vídeo: Filling Attribute Table Automatically with Simple Steps in ArcMap Using Field Calculator (Septiembre 2021).