NEWS
DWD Adapter - Modifizieren für Auflösung Gemeinden?
-
Servus,
ich habe gerade auf der Seite des DWD eine interessante Beschreibung eines "WFS" Dienstes gefunden …
http://www.dwd.de/DE/wetter/warnungen_a ... onFile&v=2
Im Grunde kann man die Wetterwarnungen auf Gemeindebasis abfragen, sowohl als Bild, als auch als XML oder JSON.
Hab grade etwas experimentiert, mit dem Aufruf
https://maps.dwd.de/geoserver/dwd/ows?s ... 172111%27)
erhält man:
!
{ "type": "FeatureCollection", "totalFeatures": 3, "features": [{ "type": "Feature", "id": "Warnungen_Gemeinden.fid-41da0a5e_15d5b2d5ffc_480c", "geometry": { "type": "Polygon", "coordinates": [[[6.854347, 51.084607], [6.820931, 51.073513], [6.828339, 51.056378], [6.773913, 51.064462], [6.798142, 51.036982], [6.823121, 51.038557], [6.834904, 51.018578], [6.839252, 50.982512], [6.818349, 50.965211], [6.814996, 50.940875], [6.823938, 50.926992], [6.841227, 50.924576], [6.857899, 50.904548], [6.878066, 50.910576], [6.917799, 50.89255], [6.911754, 50.882869], [6.91798, 50.860817], [6.930764, 50.839276], [6.956805, 50.835633], [6.982252, 50.840551], [7.023078, 50.839192], [7.032761, 50.849061], [7.057782, 50.849149], [7.062588, 50.829764], [7.090368, 50.833186], [7.163219, 50.868467], [7.137477, 50.882946], [7.139383, 50.919237], [7.14517, 50.945226], [7.114339, 50.943359], [7.086736, 50.957928], [7.100483, 50.966896], [7.09578, 50.985313], [7.068983, 50.989723], [7.075967, 51.002017], [7.068278, 51.018733], [6.984916, 51.011275], [6.957072, 51.034955], [6.896984, 51.064375], [6.856213, 51.076522], [6.854347, 51.084607]]] }, "geometry_name": "THE_GEOM", "properties": { "AREADESC": "Köln", "NAME": "Stadt Köln", "WARNCELLID": 805315000, "IDENTIFIER": "2.49.0.1.276.DWD.PVW.1500473245453.40", "SENDER": "CAP@dwd.de", "SENT": "2017-07-19T14:08:00Z", "STATUS": "Actual", "MSGTYPE": "Alert", "SOURCE": "PVW", "SCOPE": "Public", "LANGUAGE": "de-DE", "CATEGORY": "Met", "EVENT": "VORABINFORMATION SCHWERES GEWITTER", "RESPONSETYPE": "Prepare", "URGENCY": "Future", "SEVERITY": "Severe", "CERTAINTY": "Observed", "EC_PROFILE": "2.1", "EC_LICENSE": "Geobasisdaten: Copyright Bundesamt für Kartographie und Geodäsie, Frankfurt am Main, 2013", "EC_II": "40", "EC_GROUP": "THUNDERSTORM", "EC_AREA_COLOR": "255 128 128", "EFFECTIVE": "2017-07-19T07:08:00Z", "ONSET": "2017-07-19T12:00:00Z", "EXPIRES": "2017-07-20T04:00:00Z", "SENDERNAME": "DWD / Nationales Warnzentrum Offenbach", "HEADLINE": "VORABINFORMATION UNWETTER vor SCHWEREM GEWITTER", "DESCRIPTION": "Ab heute Nachmittag bis in die Nacht zum Donnerstag hinein können SCHWERE GEWITTER mit lokal HEFTIGEM STARKREGEN bis 40 mm in kurzer Zeit, großem HAGEL mit Korngrößen bis 4 cm und SCHWEREN STURMBÖEN bis 100 km/h (55 kt, Bft 10), lokal ORKANARTIGEN BÖEN bis 115 km/h (62 kt, BFT 11) auftreten.", "INSTRUCTION": "Dies ist ein erster Hinweis auf erwartete Unwetter. Er soll die rechtzeitige Vorbereitung von Schutzmaßnahmen ermöglichen. Die Prognose wird in den nächsten 6 Stunden konkretisiert. Bitte verfolgen Sie die weiteren Wettervorhersagen mit besonderer Aufmerksamkeit.", "WEB": "http://www.wettergefahren.de", "CONTACT": "Deutscher Wetterdienst", "PARAMETERNAME": null, "PARAMATERVALUE": null, "ALTITUDE": 0, "CEILING": 9842.5197, "bbox": [6.773913, 50.829764, 7.163219, 51.084607] } }, { "type": "Feature", "id": "Warnungen_Gemeinden.fid-41da0a5e_15d5b2d5ffc_480d", "geometry": { "type": "Polygon", "coordinates": [[[6.854347, 51.084607], [6.820931, 51.073513], [6.828339, 51.056378], [6.773913, 51.064462], [6.798142, 51.036982], [6.823121, 51.038557], [6.834904, 51.018578], [6.839252, 50.982512], [6.818349, 50.965211], [6.814996, 50.940875], [6.823938, 50.926992], [6.841227, 50.924576], [6.857899, 50.904548], [6.878066, 50.910576], [6.917799, 50.89255], [6.911754, 50.882869], [6.91798, 50.860817], [6.930764, 50.839276], [6.956805, 50.835633], [6.982252, 50.840551], [7.023078, 50.839192], [7.032761, 50.849061], [7.057782, 50.849149], [7.062588, 50.829764], [7.090368, 50.833186], [7.163219, 50.868467], [7.137477, 50.882946], [7.139383, 50.919237], [7.14517, 50.945226], [7.114339, 50.943359], [7.086736, 50.957928], [7.100483, 50.966896], [7.09578, 50.985313], [7.068983, 50.989723], [7.075967, 51.002017], [7.068278, 51.018733], [6.984916, 51.011275], [6.957072, 51.034955], [6.896984, 51.064375], [6.856213, 51.076522], [6.854347, 51.084607]]] }, "geometry_name": "THE_GEOM", "properties": { "AREADESC": "Köln", "NAME": "Stadt Köln", "WARNCELLID": 805315000, "IDENTIFIER": "2.49.0.1.276.DWD.PVW.1500473245453.3", "SENDER": "CAP@dwd.de", "SENT": "2017-07-19T14:08:00Z", "STATUS": "Actual", "MSGTYPE": "Alert", "SOURCE": "PVW", "SCOPE": "Public", "LANGUAGE": "de-DE", "CATEGORY": "Met", "EVENT": "SCHWERES GEWITTER mit ORKANBÖEN, HEFTIGEM STARKREGEN und HAGEL", "RESPONSETYPE": "Prepare", "URGENCY": "Immediate", "SEVERITY": "Severe", "CERTAINTY": "Observed", "EC_PROFILE": "2.1", "EC_LICENSE": "Geobasisdaten: Copyright Bundesamt für Kartographie und Geodäsie, Frankfurt am Main, 2013", "EC_II": "48", "EC_GROUP": "THUNDERSTORM;WIND;RAIN;HAIL", "EC_AREA_COLOR": "255 0 0", "EFFECTIVE": "2017-07-19T14:08:00Z", "ONSET": "2017-07-19T13:05:00Z", "EXPIRES": "2017-07-19T14:30:00Z", "SENDERNAME": "DWD / Nationales Warnzentrum Offenbach", "HEADLINE": "Amtliche UNWETTERWARNUNG vor SCHWEREM GEWITTER mit ORKANBÖEN, HEFTIGEM STARKREGEN und HAGEL", "DESCRIPTION": "Von Westen ziehen Gewitter auf. Dabei gibt es orkanartige Böen mit Geschwindigkeiten bis 115 km/h (32m/s, 63kn, Bft 11) sowie heftigen Starkregen mit Niederschlagsmengen zwischen 25 l/m² und 40 l/m² pro Stunde und Hagel mit Korngrößen um 4 cm.", "INSTRUCTION": "ACHTUNG! Hinweis auf mögliche Gefahren: Bei Blitzschlag besteht Lebensgefahr! Es sind unter anderem verbreitet schwere Schäden an Gebäuden möglich. Bäume können entwurzelt werden und Dachziegel, Äste oder Gegenstände herabstürzen. Überflutungen von Kellern und Straßen sowie örtliche Überschwemmungen an Bächen und kleinen Flüssen sind möglich (Details: www.hochwasserzentralen.de). Es können zum Beispiel Erdrutsche auftreten. Schließen Sie alle Fenster und Türen! Sichern Sie Gegenstände im Freien! Halten Sie insbesondere Abstand von Gebäuden, Bäumen, Gerüsten und Hochspannungsleitungen! Vermeiden Sie möglichst den Aufenthalt im Freien!", "WEB": "http://www.wettergefahren.de", "CONTACT": "Deutscher Wetterdienst", "PARAMETERNAME": "Böen", "PARAMATERVALUE": "<115 [km/h]", "ALTITUDE": 0, "CEILING": 9842.5197, "bbox": [6.773913, 50.829764, 7.163219, 51.084607] } }, { "type": "Feature", "id": "Warnungen_Gemeinden.fid-41da0a5e_15d5b2d5ffc_480e", "geometry": { "type": "Polygon", "coordinates": [[[6.854347, 51.084607], [6.820931, 51.073513], [6.828339, 51.056378], [6.773913, 51.064462], [6.798142, 51.036982], [6.823121, 51.038557], [6.834904, 51.018578], [6.839252, 50.982512], [6.818349, 50.965211], [6.814996, 50.940875], [6.823938, 50.926992], [6.841227, 50.924576], [6.857899, 50.904548], [6.878066, 50.910576], [6.917799, 50.89255], [6.911754, 50.882869], [6.91798, 50.860817], [6.930764, 50.839276], [6.956805, 50.835633], [6.982252, 50.840551], [7.023078, 50.839192], [7.032761, 50.849061], [7.057782, 50.849149], [7.062588, 50.829764], [7.090368, 50.833186], [7.163219, 50.868467], [7.137477, 50.882946], [7.139383, 50.919237], [7.14517, 50.945226], [7.114339, 50.943359], [7.086736, 50.957928], [7.100483, 50.966896], [7.09578, 50.985313], [7.068983, 50.989723], [7.075967, 51.002017], [7.068278, 51.018733], [6.984916, 51.011275], [6.957072, 51.034955], [6.896984, 51.064375], [6.856213, 51.076522], [6.854347, 51.084607]]] }, "geometry_name": "THE_GEOM", "properties": { "AREADESC": "Köln", "NAME": "Stadt Köln", "WARNCELLID": 805315000, "IDENTIFIER": "2.49.0.1.276.DWD.PVW.1500473245453.10", "SENDER": "CAP@dwd.de", "SENT": "2017-07-19T14:08:00Z", "STATUS": "Actual", "MSGTYPE": "Alert", "SOURCE": "PVW", "SCOPE": "Public", "LANGUAGE": "de-DE", "CATEGORY": "Met", "EVENT": "STARKES GEWITTER", "RESPONSETYPE": "Prepare", "URGENCY": "Immediate", "SEVERITY": "Moderate", "CERTAINTY": "Observed", "EC_PROFILE": "2.1", "EC_LICENSE": "Geobasisdaten: Copyright Bundesamt für Kartographie und Geodäsie, Frankfurt am Main, 2013", "EC_II": "38", "EC_GROUP": "THUNDERSTORM;WIND;RAIN;HAIL", "EC_AREA_COLOR": "255 153 0", "EFFECTIVE": "2017-07-19T13:49:00Z", "ONSET": "2017-07-19T13:49:00Z", "EXPIRES": "2017-07-19T15:30:00Z", "SENDERNAME": "DWD / Nationales Warnzentrum Offenbach", "HEADLINE": "Amtliche WARNUNG vor STARKEM GEWITTER", "DESCRIPTION": "Es treten Gewitter auf. Dabei gibt es schwere Sturmböen mit Geschwindigkeiten bis 100 km/h (28m/s, 55kn, Bft 10) sowie Starkregen mit Niederschlagsmengen zwischen 15 l/m² und 25 l/m² pro Stunde und Hagel.", "INSTRUCTION": "ACHTUNG! Hinweis auf mögliche Gefahren: Örtlich kann es Blitzschlag geben. Bei Blitzschlag besteht Lebensgefahr! Vereinzelt können beispielsweise Bäume entwurzelt und Dächer beschädigt werden. Achten Sie besonders auf herabstürzende Äste, Dachziegel oder Gegenstände. Während des Platzregens sind kurzzeitig Verkehrsbehinderungen möglich.", "WEB": "http://www.wettergefahren.de", "CONTACT": "Deutscher Wetterdienst", "PARAMETERNAME": "Böen", "PARAMATERVALUE": "<100 [km/h]", "ALTITUDE": 0, "CEILING": 9842.5197, "bbox": [6.773913, 50.829764, 7.163219, 51.084607] } }], "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::4326" } }, "bbox": [6.773913, 50.829764, 7.163219, 51.084607] } !
Man bekommt da also die Gemeindegrenzen als Polygon und die Wettersituation als "Properties".
… sprich, man könnte damit den DWD Adapter für die Auflösung auf Gemeindebasis modifizieren. Mir persönlich käme das (im Landkreis-Norden) schon ganz gelegen, nicht immer die Warnungen zu sehen wenn im Landkreis-Süden ein Gewitter durchzieht ...
Die Frage ist halt, ändert/erweitert man den bestehenden Adapter oder ist es schlauer, einen zweiten DWD Adapter aus dem jetzigen abzuleiten? Oder zusätzliche Daten einbauen? Oder????????
Wie geht man das am schlauesten an?
CU
Werner
-
Proof of concept als javascript …
! ```
`var debuglevel = 4;
var debugchannel = 'info';
! function dwmlog( message, level, channel) {
if (typeof channel === 'undefined') {
channel = debugchannel;
}
if ( typeof level === 'undefined')
{
level = debuglevel;
}
if ( debuglevel >= level ) {
log (message, channel );
}
}
! var AdapterId = "javascript.0";
var ChannelId = "dwd";
! var forceInitStates = false;
var numOfWarnings = 3;
! var url='https://maps.dwd.de/geoserver/dwd/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=dwd:Warnungen_Gemeinden&outputFormat=application/json&CQL_FILTER=WARNCELLID IN ('XXXAREAXXX')';
var warncellid = 809175127;
! url=url.replace("XXXAREAXXX",warncellid);
! function createStates(n){
for (var i=0; i<n; i++)/{/createstate(channelid+".warning."+i+".name","",forceinitstates,{type:/'string'});/createstate(channelid+".warning."+i+".text","",forceinitstates,{type:/createstate(channelid+".warning."+i+".headline","",forceinitstates,{type:/createstate(channelid+".warning."+i+".description","",forceinitstates,{type:/createstate(channelid+".warning."+i+".object","",forceinitstates,{type:/createstate(channelid+".warning."+i+".begin",0,forceinitstates,{type:/'number'});/createstate(channelid+".warning."+i+".end",0,forceinitstates,{type:/createstate(channelid+".warning."+i+".severity",0,forceinitstates,{min:0,/max:/4,/type:/'number',/states:["none","minor","moderate","severe","extreme"]});/createstate(channelid+".warning."+i+".urgency",0,forceinitstates,{min:0,/2,/states:["n/a","future","immediate"]});/createstate(channelid+".warning."+i+".category",0,forceinitstates,{min:0,/a","health","met"]});/createstate(channelid+".warning."+i+".eventcode",0,forceinitstates,{type:/createstate(channelid+".warning."+i+".color",0,forceinitstates,{type:/createstate(channelid+".warning."+i+".htmllong","",forceinitstates,{type:/}/**/parse/cap/profile/*/according/to/https:/werdis.dwd.de/tools/cap-dwd-profil.pdf/function/processcap(w)/this.name="w.NAME;" this.begin="new" date(w.onset).gettime();/this.end="new" date(w.expires).gettime();/this.text="w.EVENT;" this.headline="w.HEADLINE;" this.description="w.DESCRIPTION;" this.instruction="w.INSTRUCTION;" this.object="JSON.stringify(w);" switch/(w.severity)/case/"minor":/this.severity="1;" break;/"moderate":/"severe":/"extreme":/default:/(w.urgency)/"future":/this.urgency="1;" "immediate":/(w.category)/"health":/this.category="1;" "met":/cols="w.EC_AREA_COLOR.split("" ");/this.color="cols[0]*65536+cols[1]*256+cols[2]*1;" this.eventcode="parseInt(w.EC_II);" this.htmllong="<div style="background: #" +this.color.tostring(16)+'"="">';
this.HTMLlong += '
! ### '+this.headline+'
! ';
this.HTMLlong += '
! Zeitraum von: '+formatDate(this.begin,"DD.MM.YYYY hh:mm")+' bis: '+formatDate(this.end,"DD.MM.YYYY hh:mm")+"
! ";
this.HTMLlong += '
! '+this.description+'
! ';
this.HTMLlong += w.SENDERNAME;
}
! function processData(data) {
if (!data) {
return;
}var thedata = JSON.parse(data); var warnings= []; var warn = null; if (thedata.totalFeatures>0) { for (i=0; i<thedata.totalfeatures; 3/10/i++)/{/warn="new" processcap(thedata.features[i].properties);/dwmlog/(json.stringify(warn),4);/warnings.push(warn);/}/warnings.sort(function(a,b){/var/asort="a.urgency*1000+a.category*100+a.severity;" bsort="b.urgency*1000+b.category*100+b.severity;" return/bsort-asort;/});/dwmlog(json.stringify(warnings));/for/(i="0;" i<numofwarnings;/if/(i<warnings.length)/setstate(channelid+".warning."+i+".name",warnings[i].name);/setstate(channelid+".warning."+i+".text",warnings[i].text);/setstate(channelid+".warning."+i+".headline",warnings[i].headline);/setstate(channelid+".warning."+i+".description",warnings[i].description);/setstate(channelid+".warning."+i+".object",warnings[i].object);/setstate(channelid+".warning."+i+".begin",warnings[i].begin);/setstate(channelid+".warning."+i+".end",warnings[i].end);/setstate(channelid+".warning."+i+".severity",warnings[i].severity);/setstate(channelid+".warning."+i+".urgency",warnings[i].urgency);/setstate(channelid+".warning."+i+".category",warnings[i].category);/setstate(channelid+".warning."+i+".eventcode",warnings[i].eventcode);/setstate(channelid+".warning."+i+".color",warnings[i].color);/setstate(channelid+".warning."+i+".htmllong",warnings[i].htmllong);/else/setstate(channelid+".warning."+i+".name","");/setstate(channelid+".warning."+i+".text","");/setstate(channelid+".warning."+i+".headline","");/setstate(channelid+".warning."+i+".description","");/setstate(channelid+".warning."+i+".object","{}");/setstate(channelid+".warning."+i+".begin",0);/setstate(channelid+".warning."+i+".end",0);/setstate(channelid+".warning."+i+".severity",0);/setstate(channelid+".warning."+i+".urgency",0);/setstate(channelid+".warning."+i+".category",0);/setstate(channelid+".warning."+i+".eventcode",0);/setstate(channelid+".warning."+i+".color",0);/setstate(channelid+".warning."+i+".htmllong","");/function/requestdwd(){/request="require('request');" request({/uri:/url,/method:/"get",/timeout:/10000,/followredirect:/true,/maxredirects:/},/function(error,/response,/body)/dwmlog("dwd/error/"/+/error,2);/response:/json.stringify(response),4);/body:/body,4);/(error="==" null)/processdata(body);/createstates(numofwarnings);/requestdwd();/schedule/("*/*/*",/function(){/<e=""></thedata.totalfeatures;></n;>`
! ... leider sind hier ein Teil der Datenpunkte (severity, urgency, category) ... ich sag mal, eingeschränkt kompatibel.
! Andererseits fände ich eh hier eine Struktur besser, die mehrere Warncell-Id's (Also Gemeinden) unterstützt, man muss "nur" die Warncellid mit einer Komma-Separierten Liste übergeben ...
! Ich grübel mal weiter ...[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]