Eu tenho uma planilha do Excel existente desenvolvida para rastrear dados específicos de hidrante, que são atualizados periodicamente e associados aos dados espaciais do hidrante no ArcGIS. Na planilha, existem várias colunas para inserir dados relacionados à pressão estática, pressão residual e vazão.
Utilizando a capacidade nominal de 20 PSI em uma fórmula de teste de fluxo de incêndio para calcular o fluxo de incêndio, a planilha calcula automaticamente. O cálculo é o seguinte.
Fire Flow = Flow * ((Static - 20)/(Static - Residual))^0.54
Não tenho certeza da melhor maneira de atacar isso e estou procurando sugestões. Com base nos resultados do cálculo, eu tenho uma coluna adicional com uma declaração IF que indica a cor do fluxo de fogo apropriada na qual o hidrante deve ser pintado. Para quem não sabe, a cor da boca de incêndio é um indicador para despedir o pessoal em uma situação de emergência nas condições do fluxo de incêndio. Eu fiz algumas pesquisas e desenvolvi o seguinte script 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
Gostaria de saber se os cálculos mencionados acima, usados na planilha do Excel, podem ser replicados na tabela de atributos do banco de dados, utilizando a calculadora de campo e o python-parser? Em vez de confiar na planilha do Excel e na necessidade de reunir os dados novamente.
Respostas:
Seu código python faz sentido, mas possui alguns erros. Cole isso na caixa "Código do script pré-lógico" na calculadora de campo:
Em seguida, na caixa abaixo, cole:
O recuo nesse bloco superior é um pouco incomum, mas a quantidade exata de recuo não importa, desde que as linhas sejam recuadas corretamente em relação uma à outra.
Os erros:
Ao definir uma função, você precisa segui-la com uma lista de parâmetros que a função usa para realizar seu trabalho. A lista deve estar entre parênteses. No seu caso, você está usando apenas um parâmetro de entrada, o seu número Fire_Flow.
Você passará
!Fire_Flow!
para a função, quando estiver na função em que o valor é atribuído à variávelfire_flow
, portanto, consulte a variável. Além disso, você precisa colocarBlack
aspas, para que uma string seja retornada. Do jeito que você o tem aqui, seu script está procurando por uma variável chamadaBlack
a retornar e ela não existe.Você não precisa terminar se estiver em Python.
Para o seu primeiro campo, o número do fluxo de incêndio, você precisa nomear seus campos adequadamente e o operador dos expoentes em Python
**
não é .^
Cole isso na caixa inferior da calculadora de campos:Se você precisar atualizar mais de um campo simultaneamente, concordo com o MacroZED que um cursor de atualização é a melhor maneira, mas isso pode ser um pouco confuso se você é novo no Python.
fonte
Definitivamente, isso pode ser feito no ArcGIS sem a necessidade de se destacar. Se esses campos (pressão estática, pressão residual e vazão) já estiverem em um conjunto de dados, podemos usar os seguintes cursores para adicionar os novos campos e atualizá-los:
fonte