Tengo una hoja de cálculo Excel existente desarrollada para rastrear datos específicos de hidrantes contra incendios, esto se actualiza periódicamente y se une a los datos espaciales de hidrantes en ArcGIS. En la hoja de cálculo hay una serie de columnas para ingresar datos relacionados con la presión estática, la presión residual y la velocidad de flujo.
Utilizando la capacidad nominal a 20 PSI en una fórmula de prueba de flujo de fuego para calcular el flujo de fuego, la hoja de cálculo calcula automáticamente. El cálculo es el siguiente.
Fire Flow = Flow * ((Static - 20)/(Static - Residual))^0.54
No estoy seguro de la mejor manera de atacar esto y estoy buscando sugerencias. Con base en los resultados del cálculo, tengo una columna adicional con una declaración IF que indica el color de flujo de incendio apropiado que se debe pintar el hidrante. Para aquellos que no saben, el color del hidrante es un indicador para despedir al personal en caso de emergencia de las condiciones del flujo de incendio. He investigado un poco y he desarrollado el siguiente script de Python:
def Reclass !Bon_Color!:
if ( !Fire_Flow! <= 0):
return Black
elif ( !Fire_Flow! >= 1 and !Fire_Flow! <= 499):
return Red
elif ([Fire_Flow] > 499 and [Fire_Flow] <= 999):
return Orange
elif ( !Fire_Flow! > 999 and !Fire_Flow! <= 1499):
return Green
elif ( !Fire_Flow! > 1499):
return Blue
end if
Me gustaría saber si los cálculos mencionados anteriormente, utilizados en la hoja de cálculo de Excel, podrían replicarse en la tabla de atributos de la base de datos utilizando la calculadora de campo y el analizador de pitón. En lugar de confiar en la hoja de cálculo de Excel y la necesidad de volver a unir los datos.
Respuestas:
Su código de Python tiene sentido pero tiene algunos errores. Pegue esto en el cuadro "Código de script prelógico" en la calculadora de campo:
Luego, en el cuadro debajo de eso, pegue:
La sangría en ese bloque superior es un poco inusual, pero la cantidad exacta de sangría no importa siempre que las líneas estén sangradas correctamente una con respecto a la otra.
Los errores:
Cuando define una función, debe seguirla con una lista de parámetros que la función utiliza para hacer su trabajo. La lista debe estar entre paréntesis. En su caso, solo está utilizando un parámetro de entrada, su número Fire_Flow.
Pasará
!Fire_Flow!
a la función, una vez que esté en la función, ese valor se asignará a la variablefire_flow
, por lo tanto, refiérase a esa variable. Además, debe ponerBlack
comillas para que se devuelva una cadena. De la forma en que lo tiene aquí, su script está buscando una variable llamadaBlack
para devolver, y no existe.No necesitas terminar si estás en Python.
Para su primer campo, el número de flujo de fuego, debe nombrar sus campos apropiadamente y el operador para los exponentes en Python es
**
, no^
pegar esto en el cuadro inferior de la calculadora de campo:Si necesita actualizar más de un campo simultáneamente, estoy de acuerdo con MacroZED en que un cursor de actualización es la mejor manera, pero puede ser un poco confuso si es nuevo en Python.
fuente
Esto definitivamente se puede hacer en ArcGIS sin la necesidad de sobresalir. Si estos campos (Presión estática, Presión residual y Velocidad de flujo) ya están en un conjunto de datos, entonces podemos usar los siguientes cursores para agregar los nuevos campos y actualizarlos:
fuente