Séisme sur le thème Blechertown : il peut trembler maintenant

février 26, 2021

Depuis quelques temps j’ai  mis en avant le thème de Weewx Belchertown Theme et je viens de le mettre à jour.

En effet, j’avais rajouté la partie « séisme » et l’utilisation de l’API du site https://renass.unistra.fr/fr/zones/ le site national d’information sur la sismicité de la France. Mais voila que  depuis une semaine l’API a changé d’url et des options ont été rajoutées. (c’était prévu !)

Présentation de l’URL  : 

Si vous désirez faire une recherche c’est par ici : https://api.franceseisme.fr/fr/search , ensuite il suffit de saisir différents paramètres et vous vous trouverez avec une belle url longue comme le bras : 

https://api.franceseisme.fr/fr/search/results?start_date=2021-02-26&end_date=2021-02-26&maximal_latitude=&minimal_longitude=47.82&maximal_longitude=&minimal_latitude=-3.42&limit=&offset=&order_by=descending_time&minimal_magnitude=&maximal_magnitude=&minimal_depth=&maximal_depth=&event_id=&event_type_earthquake=false&event_type_quarry+blast=false&event_type_explosion=false&event_type_induced=false&event_type_outside+of+network+interest=false&event_type_landslide=false&event_type_rockslide=false&event_type_other+event=false&event_type_sonic+boom=false&event_type_nuclear+explosion=false&event_type_chemical+explosion=false&event_type_building+collapse=false

on se retrouve avec des champs comme  :

  • &start_date=2021-02-26
  • &end_date=2021-02-26
  • &maximal_latitude=
  • &minimal_longitude=47.82
  • &maximal_longitude=
  • &minimal_latitude=-3.42
  • &limit=
  • &offset=
  • &order_by=descending_time
  • &minimal_magnitude=
  • &maximal_magnitude=
  • &minimal_depth=
  • &maximal_depth=
  • &event_id=
  • &event_type_earthquake=false
  • &event_type_quarry+blast=false
  • &event_type_explosion=false
  • &event_type_induced=false
  • &event_type_outside+of+network+interest=false
  • &event_type_landslide=false
  • &event_type_rockslide=false
  • &event_type_other+event=false
  • &event_type_sonic+boom=false
  • &event_type_nuclear+explosion=false
  • &event_type_chemical+explosion=false
  • &event_type_building+collapse=false

 

Les champs que  nous utiliserons seront  la latitude (mini et maxi) , la longitude (mini et maxi) , la magnitude (mini) , le format JSON 

Comment intégrer ceci au template Belchertown ? 

Tout le mérite revient à norecords, https://github.com/norecords,  sa station météo est  ici  :  https://meteo.correns.org/ Il faut avant tout le remercier.

il a forké le thème Belchertown pour pouvoir y insérer les séismes de France.

le fichier à modifier  est  « belchertown.py » et il se trouve « normalement » sous  /usr/share/weewx/user/, donc attention aux mises à jour futures !

L’url utilisée : 

https://api.franceseisme.fr/fdsnws/event/1/query?format=json&eventid=fr2021fwqzae

et surtout l’url retenue  : 

https://api.franceseisme.fr/fdsnws/event/1/query?eventtype=earthquake&minmagnitude=2&minlatitude=%.2f&minlongitude=%.2f&maxlatitude=%.2f&maxlongitude=%.2f&format=json&limit=1&orderby=time

 L’auteur a fixé la magnitude mini à 2 (en dessous ce n’est pas significatif) et ensuite il faut calculer les  deux valeurs mini et maxi de  la lattitude et de la longitude.

comme ceci d’après son auteur  : 

# Calculate min/max lat adn min/max long. https://stackoverflow.com/a/23118314
lat = float(latitude)
long = float(longitude)
radiusInKm = int(earthquake_maxradiuskm)

kmInLongitudeDegree = 111.320 * cos( lat / 180.0 * pi)

deltaLat = radiusInKm / 111.1
deltaLong = radiusInKm / kmInLongitudeDegree

minLat = lat - deltaLat
maxLat = lat + deltaLat
minLong = long - deltaLong
maxLong = long + deltaLong

 

il faudra donc rajouter la bibliothèque « pi » au niveau de l’import  :

from math import asin, atan2, cos, degrees, pi, radians, sin, sqrt

 

Un autre souci également c’est au  niveau du  parsing du fichier Json récupéré : il y a une description en Français ET en anglais (pareil pour l’url) : 

Voici un exemple de fichier Json généré :

// 20210226185544
// https://meteo-pontscorff.fr/data-weewx/FROGGIT/belchertown/json/earthquake.json

{
"features": [
{
"geometry": {
"coordinates": [
-2.817246199,
47.69209671,
-4.665725708
],
"type": "Point"
},
"id": "fr2021fvalxz",
"properties": {
"automatic": false,
"description": {
"en": "Earthquake of magnitude 2.8, near of Vannes",
"fr": "Tremblement de terre de magnitude 2.8, proche de Vannes"
},
"mag": 2.760723648,
"magType": "MLv",
"time": "2021-02-17T19:31:55.331990Z",
"type": "earthquake",
"url": {
"en": "https://renass.unistra.fr/en/events/fr2021fvalxz",
"fr": "https://renass.unistra.fr/fr/evenements/fr2021fvalxz"
}
},
"type": "Feature"
}
],
"type": "FeatureCollection"
}

il faudra modifier une autre partie  ( la partie  pour le « parsing ») : 

# Calculate min/max latitude and min/max longitude from radius and station location. https://stackoverflow.com/a/23118314

lat = float(latitude)
long = float(longitude)
radiusInKm = int(earthquake_maxradiuskm)
...
...
if match("fr_.*", system_locale):
    equrl = eqdata["features"][0]["properties"]["url"]["fr"]
    eqplace = eqdata["features"][0]["properties"]["description"]["fr"]
else:
    equrl = eqdata["features"][0]["properties"]["url"]["en"]
    eqplace = eqdata["features"][0]["properties"]["description"]["en"]
...
...

 

Une fois tout ceci modifié et bien renseigné dans le fichier ,il n’est pas nécessaire de redemarrer le service de Weewx. En effet une simple génération de rapports et le tour est joué

(Attention toutefois au fichier Json généré au préalable , supprimez-le !)

#wee_reports --config=/etc/weewx/weewx.conf

 

Conclusion 

Merci encore à  Norecords pour ces modifications !

Ca marche du Tonnerre !