Diskussion:RainAlarm

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche

SB To Do

To Do App.:

  • Kleinigkeiten:
    • Refactoring: MrGimoList?
  • RegionForecast verbessern, z.B. durch Geraden-Interpolation
  • Ev. Weglassen der Kategorie "< 1.0 mm/h" im Radarbild (bedeutet kaum Regen) durch Bildvorverarbeitung (Schwellwert dunkler?).
  • Limitieren von zu grossen RegionForecast-Werten wie z.B. max. Velocity...
  • RainAlarm.java => Response-Texte anpassen: Siehe unten.
  • Die Koordinaten müssen innerhalb der Schweiz liegen, also zwischen 45 und 48 Grad Nord und zwischen 4 und 11 Grad Ost.
  • Filtern von kleinsten Pixelgruppen
  • Erzeugen eines animierten GIFs, vom Web her zugänglich

Offen:

  • Woher die Ausreisser, bei denen plötzlich kommt "Niederschlag unwahrscheinlich in den nächsten zwei Stunden!"??
  • Reliefkarte als Hintergrund fuer GIS (Swisstopo)

Für ein anderes Mal:

  • Berücksichtigung von Grössenveränderung, Rotation/Richtungsänderung sowie Beschleunigung/Verlangsamung
  • Erkennen von "No Data" ("Fehlende Daten beim Bundesamt") des Inputs (z.B. bei Betriebsausfall vom Monte Lama). Siehe z.B. die Abbildung rechts.
    hier
  • Übernehmen der Klassifikation der Regen- und der Schneeintensität (auch wenn's nur ein mittlerer Wert pro Ellipse/'Niederschlags-Zelle' ist)

Ausgabe-Texte

Texte (zusammengesetzt):

  • Niederschlag unwahrscheinlich in den nächsten zwei Stunden! (17:05 31.12.2010)
  • Niederschlag möglich in ca. 56 Min.; er dauert voraussichtlich ca. 40 Min.! (17:05 31.12.2010)
  • Niederschlag möglich in ca. 56 Min.; er dauert voraussichtlich über zwei Stunden! (17:05 31.12.2010)
  • Aktuell Niederschlag; er dauert voraussichtlich noch ca. 23 Min.! (17:05 31.12.2010)
  • Aktuell Niederschlag; er dauert voraussichtlich noch über zwei Stunden! (17:05 31.12.2010)

... gefolgt von "RainAlarm by http://labs.geometa.info/rainalarm (Quellen: SF Meteo und !MeteoSchweiz)".

Ausnahme-Texte:

  • Und bei Problemen: Es ist ein Problem aufgetreten. Bitte versuchen Sie es später noch einmal.
  • falls ausser Betrieb: Service zurzeit nicht in Betrieb. Versuchen Sie es später noch einmal.
  • falls falsche oder fehlende Koordinaten: Koordinaten fehlen oder falsch. Siehe http://www.gis.hsr.ch/wiki/RainAlarm.

JSON

Auruf: GET <URL>&format=json

Beispiel:

 {
   "message":"Niederschlag unwahrscheinlich in den nächsten zwei Stunden!", 
   "raining":false,
   "rainStart":-1,
   "rainStop":-1
 }

JSON-Attributes:

message: string

  • "text" => enthält die Informationen in Textform

raining: boolean

  • true => es regnet
  • false => es regnet nicht

rainStart: integer

  • -1 => start unbekannt
  • 0 => zurzeit Niederschlag
  • 1... max => start in x min

rainStop: integer

  • -1 => stop Unbekannt
  • 0... max => stop in x min

RainAlarm.java

Folgende Ausgabe gibt es (abhängig von start und stop):

  • Kein arrivalNowcast (start): "Niederschlag unwahrscheinlich in den nächsten zwei Stunden!" (start = -1)
  • arrivalNowcast (start):
    • 1. "Aktuell Niederschlag." (start = 0)
    • 2. "Niederschlag möglich in ca. xx Min." (start > 0)
  • durationNowcast (stop):
    • 1. "Er dauert voraussichtlich ca. yy Min.!" (stop > start)
    • 2. "Er dauert voraussichtlich mehr als zwei Stunden!" (stop = -1)

http://dev.ifs.hsr.ch/rainalarm/browser/trunk/rainalarm/src/ch/hsr/ifs/rainalarm/

Die aktuelle Revision 76, Zeile 48 ff. sieht so aus:

   private String createSMS(int[] startStopRain) {
       int start = startStopRain[0];
       int stop = startStopRain[1];
       String duration = "";
        
       if (start == -1)
           return "Kaum Niederschlag innert 2h.";
       if (stop == -1)
           duration = "lÀnger als " + (120 - start) + " Min";
       else
           duration = (stop - start) + "Min.";
       if (start == 0)
           return "Es regnet(schneit) voraussichtlich noch " + duration + SUFFIX;
       
       return "Niederschlag möglich in ca. " + start + " Min, dauert voraussichtlich " + duration + SUFFIX;
   }

Hier sollte 1. von Niederschlag die Rede sein und 2. sollte start (besser: arrivalNowcast) und stop (besser durationNowcast) angegeben werden - auch im Antwort-Text. Daher Neu, Zeile 48 ff. :

   final int MAXFORECASTDURATION = 120;
   private String createSMS(int[] startStopRain) {
       int start = startStopRain[0];
       int stop = startStopRain[1];
       String durationText = "";
       String text = "";
       final int NODATA = -1;
       
       // Kein Niederschlag in Sicht
       if (start == NODATA)
           return "Niederschlag unwahrscheinlich in den nächsten zwei Stunden!";
       
       // Niederschlag ins Sicht (mit Dauer) oder Niederschlag dauert an (noch Dauer...).
       if (stop == NODATA || (stop - start) >= MAXFORECASTDURATION) 
           durationText = "; er dauert voraussichtlich lÀnger als" + (MAXFORECASTDURATION - start) + " Min.!";
       else 
           durationText = "; er dauert voraussichtlich ca. " + (stop - start) + " Min.!";
       
       if (start == 0)
           text = "Aktuell Niederschlag" + durationText;
       else 
           text = "Niederschlag möglich in ca. " + start + " Min." + durationText;
                   
       return text + SUFFIX;
   }

Ideen

Website: