Ich habe eine vorhandene Excel-Tabelle entwickelt, um bestimmte Hydrantendaten zu verfolgen. Diese wird regelmäßig aktualisiert und mit den räumlichen Hydrantendaten in ArcGIS verknüpft. In der Tabelle gibt es eine Reihe von Spalten, in die Daten zu statischem Druck, Restdruck und Durchflussrate eingegeben werden können.
Unter Verwendung der Nennkapazität bei 20 PSI in einer Fire Flow Test- Formel zur Berechnung des Fire Flow berechnet die Tabelle automatisch. Die Berechnung ist wie folgt.
Fire Flow = Flow * ((Static - 20)/(Static - Residual))^0.54
Ich bin mir nicht sicher, wie ich das am besten angreifen kann, und suche nach Vorschlägen. Basierend auf den Ergebnissen der Berechnung habe ich eine zusätzliche Spalte mit einer IF-Anweisung, die die geeignete Brandflussfarbe angibt, für die der Hydrant gestrichen werden soll. Für diejenigen, die nicht wissen, ist die Hydrantenfarbe ein Indikator für das Feuerwehrpersonal im Notfall die Brandflussbedingungen. Ich habe einige Nachforschungen angestellt und das folgende Python-Skript entwickelt:
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
Ich möchte wissen, ob die oben genannten Berechnungen, die in der Excel-Tabelle verwendet werden, mithilfe des Feldrechners und des Python-Parsers in der Datenbankattributtabelle repliziert werden können. Anstatt sich auf die Excel-Tabelle und die Notwendigkeit zu verlassen, die Daten erneut zu verbinden.
Antworten:
Ihr Python-Code ist sinnvoll, weist jedoch einige Fehler auf. Fügen Sie dies in das Feld "Pre-Logic Script Code" im Feldrechner ein:
Fügen Sie dann in das Feld darunter Folgendes ein:
Die Einrückung in diesem oberen Block ist etwas ungewöhnlich, aber das genaue Ausmaß der Einrückung spielt keine Rolle, solange die Linien relativ zueinander korrekt eingerückt sind.
Die Fehler:
Wenn Sie eine Funktion definieren, müssen Sie ihr eine Liste von Parametern folgen, mit denen die Funktion ihre Arbeit erledigt. Die Liste sollte in Klammern stehen. In Ihrem Fall verwenden Sie nur einen Eingabeparameter, Ihre Fire_Flow-Nummer.
Sie werden passieren
!Fire_Flow!
in die Funktion, wenn Sie in der Funktion sind der Wert der Variablen zugewiesen wirdfire_flow
, so stattdessen auf diese Variable verweisen. Außerdem müssen SieBlack
Anführungszeichen setzen, damit eine Zeichenfolge zurückgegeben wird. So wie Sie es hier haben, sucht Ihr Skript nach einer Variablen mit dem NamenBlack
, die zurückgegeben werden soll, und sie existiert nicht.Sie brauchen kein Ende, wenn Sie in Python sind.
Für Ihr erstes Feld, die Feuerflussnummer, müssen Sie Ihre Felder entsprechend benennen, und der Operator für Exponenten in Python lautet
**
nicht.^
Fügen Sie dies in das untere Feld des Feldrechners ein:Wenn Sie mehr als ein Feld gleichzeitig aktualisieren müssen, stimme ich MacroZED zu, dass ein Aktualisierungscursor der bessere Weg ist, aber diese können etwas verwirrend sein, wenn Sie Python noch nicht kennen.
quelle
Dies kann definitiv in ArcGIS erfolgen, ohne dass Excel erforderlich ist. Wenn diese Felder (statischer Druck, Restdruck und Durchflussrate) bereits in einem Datensatz enthalten sind, können wir die neuen Felder mithilfe der folgenden Cursor hinzufügen und aktualisieren:
quelle