Ce référentiel contient le code source d'une bibliothèque de fonctions chargée MySQL (précédemment appelée UDF - fonctions définies par l'utilisateur), qui fournit une fonction Astrononmie SQL additonale pour obtenir des informations Astro Sun et Moon pour un emplacement et un temps géographiques donné.
Les calculs sont basés sur une adaptation de la classe d'astronomie C ++ de ESP32-ASTROMONIE.
Si vous aimez lib_mysqludf_astro , donnez-lui une étoile ou la fourchez:
Du répertoire de base Run:
make clean
make
sudo make installCeci créera et installer le fichier de bibliothèque.
Pour créer une version spécifique au pays, appelez la commande de faire du paramètre Lang = -dlang_xx, où xx est le code de pays: de = allemand, es = espagnol, fr = français, it = italien, nl = Pays-Bas, en = anglais (par défaut).
Exemple: créer et installer une utilisation binaire néerlandaise
make clean
make LANG=-DLANG_NL
sudo make install Enfin, nous activons la fonction chargée dans MySQL Server (remplacez username par un utilisateur MySQL local qui a la permission de créer des fonctions, par exemple root)
mysql -u username -p < install.sqlPour désinstaller d'abord la fonction de désactivation de la fonction chargable dans votre serveur MySQL à l'aide des requêtes SQL:
DROP FUNCTION IF EXISTS astro_info;
DROP FUNCTION IF EXISTS astro;Ensuite, désinstallez la bibliothèque à l'aide de la ligne de commande:
sudo make uninstallRenvoie les informations Astro pour la date donnée, la géolocalisation et le fuseau horaire en tant que chaîne JSON.
Une date valide donnée dans le format 'Yyyy-mm-dd HH: MM: SS. Les dates non valides entraînent une valeur nulle.
Position nord-sud d'un point en format degrés
Position est-ouest d'un point au format degrés
Décalage du fuseau horaire de l'UTC en heures
La fonction renvoie les informations Astro sous forme de chaîne JSON avec les touches suivantes:
| Clé JSON | Description | Format / unité |
|---|---|---|
| $. | Date pour le résultat donné | 'Yyyy-mm-ddthh: mm: ss' |
| $. | Décalage du fuseau horaire de l'UTC en heures | heure |
| $. | Latitude géographique | degrés |
| $. | Longitude géographique | degrés |
| $ .deltat | deltat | décimal |
| $ .Juliandate | Julian Date | décimal |
| $ .Gmst | Greenwich Sidereal Time | 'HH: MM: SS' |
| $ .Lmst | Temps sidéral local | 'HH: MM: SS' |
| $ .Sun.Distance.Earth | Distance du soleil (Terre's Center) | km |
| $ .Sun.distance.observer | Distance du soleil (de l'observateur) | km |
| $ .Sun.ecliptic | Longueur écliptique du soleil | degrés |
| $ .Sun.Declination | Déclinaison du soleil | degrés |
| $ .Sun.azimuth | Azimut du soleil | degrés |
| $ .Sun.height | Hauteur du soleil au-dessus de l'horizon | degrés |
| $ .Sun.diamètre | Diamètre du soleil | arc secondes |
| $ .Sun.rise.astronomical | Aube astronomique | 'HH: MM: SS' |
| $ .Sun.rise.nautical | Aube nautique | 'HH: MM: SS' |
| $ .Sun.rise.civil | Aube civile | 'HH: MM: SS' |
| $ .Sun.rise.sunrise | Lever du soleil | 'HH: MM: SS' |
| $. | Culmination du soleil | 'HH: MM: SS' |
| $ .Sun.set.sunset | Coucher de soleil | 'HH: MM: SS' |
| $ .Sun.set.civil | Crépuscule civil | 'HH: MM: SS' |
| $ .Sun.set.Nautical | Crépuscule nautique | 'HH: MM: SS' |
| $ .Sun.set.astronomical | Crépuscule astronomique | 'HH: MM: SS' |
| $ .Sun. | Ascension droite du soleil | 'HH: MM: SS' |
| $ .Sun.zodiac | Zodiaque | Bélier, Taureau, Gémeaux, Cancer, Leo, Vierge, Balance, Scorpion, Sagittaire, Capricorne, Aquarius, Poissons |
| $ .Moon.diste.Earth | Distance de la lune (Terre's Center) | km |
| $ .Moon.distance.observer | Distance de la lune (de l'observateur) | km |
| $ .Moon.ecliptic.latitude | Latitude écliptique de la lune | degrés |
| $ .Moon.ecliptic.longitude | Longitude écliptique de la lune | degrés |
| $ .Moon.Declination | Déclinaison de la lune | degrés |
| $ .Moon.azimuth | Azimut de la lune | degrés |
| $ .Moon.height | Hauteur de la lune au-dessus de l'horizon | degrés |
| $ .Moon.diamètre | Diamètre de la lune | arc secondes |
| $ .Moon.rise | Lune de lune | 'HH: MM: SS' |
| $ .Moon.culmination | Culmination de la lune | 'HH: MM: SS' |
| $ .Moon.set | Moonset | 'HH: MM: SS' |
| $ .Moon. | Ascension droite de la lune | 'HH: MM: SS' |
| $ .Moon.phase.name | Nom de la phase de lune | Nouvelle lune, Crescent d'épilation, premier trimestre, gibbous à la cire, pleine lune, décroissant Gibbous, troisième trimestre, décroissant Crescent |
| $ .Moon.phase.value | Phase de lune comme indice | 0..7 |
| $ .Moon.phase.number | Âge de la Lune depuis la nouvelle lune (0) - pleine lune (1) | décimal |
| $ .Moon.age | Âge de la Lune en radians | 0..359 |
| $ .Moon.sign | Signe de lune | Bélier, Taureau, Gémeaux, Cancer, Leo, Vierge, Balance, Scorpion, Sagittaire, Capricorne, Aquarius, Poissons |
Exemple:
{
"Time" : " 2023-01-18T09:00:00 " ,
"Zone" : 1 ,
"Latitude" : 53.182153 ,
"Longitude" : 4.854429 ,
"deltaT" : 65 ,
"JulianDate" : 2459962.83333 ,
"GMST" : " 15:49:54 " ,
"LMST" : " 16:09:19 " ,
"Sun" : {
"Distance" : {
"Earth" : 147182898.6 ,
"Observer" : 147182769.4
},
"Ecliptic" : 297.968 ,
"Declination" : -20.565 ,
"Azimuth" : 127.65 ,
"Height" : 1.5 ,
"Diameter" : 32.51 ,
"Rise" : {
"Astronomical" : " 06:39:38 " ,
"Nautical" : " 07:21:00 " ,
"Civil" : " 08:04:22 " ,
"Sunrise" : " 08:44:23 "
},
"Culmination" : " 12:50:58 " ,
"Set" : {
"Sunset" : " 16:58:02 " ,
"Civil" : " 17:38:04 " ,
"Nautical" : " 18:21:28 " ,
"Astronomical" : " 19:02:52 "
},
"Ascension" : " 20:00:14 " ,
"Zodiac" : " Capricorn "
},
"Moon" : {
"Distance" : {
"Earth" : 370620.2 ,
"Observer" : 369274.6
},
"Ecliptic" : {
"Latitude" : -2.528 ,
"Longitude" : 248.606
},
"Declination" : -25.195 ,
"Azimuth" : 176.16 ,
"Height" : 12 ,
"Diameter" : 32.24 ,
"Rise" : " 05:33:24 " ,
"Culmination" : " 09:17:17 " ,
"Set" : " 12:52:19 " ,
"Ascension" : " 16:25:58 " ,
"Phase" : {
"Name" : " Waning crescent " ,
"Value" : 7 ,
"Number" : 0.174
},
"Age" : 310.737 ,
"Sign" : " Sagittarius "
}
}Obtenez le soleil à lever / se coucher
SET @ts = NOW();
SET @latitude = 53 . 182153 ;
SET @longitude = 4 . 854429 ;
SET @timezone = TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
SELECT
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Time ' ) AS ` Time ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Sun.Rise.Sunrise ' ) AS ` Sunrise ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Sun.Set.Sunset ' ) AS ` Sunset ` ;rendements
+ -- -------------------+----------+----------+
| Time | Sunrise | Sunset |
+ -- -------------------+----------+----------+
| 2023 - 01 - 18T09: 00 : 00 | 08 : 44 : 23 | 16 : 58 : 02 |
+ -- -------------------+----------+----------+Obtenez des informations sur la lune
SET @ts = NOW();
SET @latitude = 53 . 182153 ;
SET @longitude = 4 . 854429 ;
SET @timezone = TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
SELECT
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Time ' ) AS ` Time ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Rise ' ) AS ` Moonrise ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Set ' ) AS ` Moonset ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Phase.Name ' ) AS ` Phase ` ,
ROUND(CAST(JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Age ' ) AS FLOAT) / 3 . 6 , 0 ) AS ` % Age ` ;rendements
+ -- -------------------+----------+----------+-----------------+-------+
| Time | Moonrise | Moonset | Phase | % Age |
+ -- -------------------+----------+----------+-----------------+-------+
| 2023 - 01 - 18T09: 00 : 00 | 05 : 33 : 24 | 12 : 52 : 19 | Waning crescent | 86 |
+ -- -------------------+----------+----------+-----------------+-------+ Renvoie les informations de la bibliothèque en tant que chaîne JSON
Exemples:
> SELECT
JSON_UNQUOTE(JSON_VALUE(astro_info(), ' $.Name ' )) AS Name,
JSON_UNQUOTE(JSON_VALUE(astro_info(), ' $."Version" ' )) AS Version,
JSON_UNQUOTE(JSON_VALUE(astro_info(), ' $."Build" ' )) AS Build;
+ -- ------------------+---------+----------------------+
| Name | Version | Build |
+ -- ------------------+---------+----------------------+
| lib_mysqludf_astro | 1 . 0 . 0 | Jan 18 2023 09 : 00 : 00 |
+ -- ------------------+---------+----------------------+