Adresserkennung per Skript
BosMon kann aus Alarmierungstexten die Einsatzadresse, Koordinaten und Stichworte bestimmen. Reichen die einfachen oder erweiterten Regeln dafür nicht aus, lässt sich eine Regel der Adresserkennung als Skript in der Sprache C# programmieren, siehe Adresse und Stichworte – Regeln.
Das folgende Beispiel zeigt den Aufbau eines solchen Skripts: Die Methode EvaluateMessage erhält den Alarmierungstext und prüft ihn mit einem regulären Ausdruck. Trifft der Ausdruck nicht zu, gibt sie false zurück. Trifft er zu, schreibt sie die gefundenen Teile in values und gibt true zurück.
Beispiel
Der reguläre Ausdruck im Beispiel erwartet Alarmierungstexte der Form Einsatzort: Hauptstraße 12, Musterstadt und liefert Straße, Hausnummer und Ort. Passen Sie ihn an den Aufbau Ihrer Alarmierungstexte an.
private static System.Text.RegularExpressions.Regex s_regex = new System.Text.RegularExpressions.Regex(@"Einsatzort:\s*(?<streetname>[^,\d]+?)\s+(?<streetnumber>\d+\s*[a-zA-Z]?)\s*,\s*(?<locality>[^,]+)");
public static bool EvaluateMessage(String message, System.Collections.Generic.IDictionary<String, String> values) {
var match = s_regex.Match(message);
if (! match.Success)
return false;
values["coordinates"] = match.Groups["coordinates"].Value;
values["latitude"] = match.Groups["latitude"].Value;
values["longitude"] = match.Groups["longitude"].Value;
values["country"] = match.Groups["country"].Value;
values["state"] = match.Groups["state"].Value;
values["locality"] = match.Groups["locality"].Value;
values["sublocality"] = match.Groups["sublocality"].Value;
values["address"] = match.Groups["address"].Value;
values["streetname"] = match.Groups["streetname"].Value;
values["streetnumber"] = match.Groups["streetnumber"].Value;
values["premise"] = match.Groups["premise"].Value;
values["shortkeyword"] = match.Groups["shortkeyword"].Value;
values["longkeyword"] = match.Groups["longkeyword"].Value;
values["alarmtext"] = match.Groups["alarmtext"].Value;
values["incidentnumber"] = match.Groups["incidentnumber"].Value;
return true;
}
Der reguläre Ausdruck ist ein frei gewähltes Beispiel. Offen ist, welcher Schlüssel in values (z. B. streetname, shortkeyword, alarmtext) welcher Variable bzw. welchem Feld der Adresserkennung entspricht. Gebraucht wird eine entsprechende Aufstellung.