Este repositório contém o código -fonte para uma biblioteca de funções carregáveis do MySQL (anteriormente chamada de funções definidas pelo usuário UDF), que fornece uma função Astrononmy SQL AddoTalal para obter informações sobre sol e lua para uma determinada localização e hora geográficas.
Os cálculos são baseados em uma adaptação da classe de astronomia C ++ da ESP32-Astronomie.
Se você gosta de lib_mysqludf_astro, dê uma estrela ou bifurcá -lo:
Da execução do diretório base:
make clean
make
sudo make installIsso criará e instalará o arquivo da biblioteca.
Para criar uma versão específica do país, ligue para o comando Make com o parâmetro Lang = -dlang_xx, onde xx é o código do país: de = alemão, es = espanhol, fr = francês, it = italiano, nl = Holanda, en = inglês (padrão).
Exemplo: Crie e instale um uso binário holandês
make clean
make LANG=-DLANG_NL
sudo make install Finalmente, ativamos a função carregável no MySQL Server (substitua username por um usuário local do MySQL que tem permissão para criar funções, por exemplo, raiz)
mysql -u username -p < install.sqlPara desinstalar primeiro a função carregável no seu servidor MySQL usando as consultas SQL:
DROP FUNCTION IF EXISTS astro_info;
DROP FUNCTION IF EXISTS astro;Em seguida, desinstale a biblioteca usando a linha de comando:
sudo make uninstallRetorna as informações do astro para a data determinada, geolocalização e fuso horário como string json.
Uma dada data válida em 'AAAA-MM-DD HH: MM: SS' Formato. As datas inválidas resulta em um valor nulo.
Posição norte -sul de um ponto no formato de graus
Posição leste-oeste de um formato de ponto em graus
Fuso horário compensado da UTC em horas
A função retorna as informações Astro como string json com as seguintes chaves:
| Chave JSON | Descrição | Formato/unidade |
|---|---|---|
| $ .Time | Data para o resultado dado | 'Yyyy-mm-ddthh: mm: ss' |
| $ .Zone | Fuso horário compensado da UTC em horas | hora |
| $ .Latitude | Latitude geográfica | graus |
| $ .Longitude | Longitude geográfica | graus |
| $ .Deltat | Deltat | decimal |
| $ .Juliandate | Julian Date | decimal |
| $ .Gmst | Tempo de Greenwich sideral | 'HH: MM: SS' |
| $ .Lmst | Tempo sideral local | 'HH: MM: SS' |
| $ .Sun.distance.earth | Distância do Sol (centro da Terra) | km |
| $ .Sun.distance.observer | Distância do sol (do observador) | km |
| $ .Sun.ecliptic | Comprimento eclíptico do sol | graus |
| $ .Sun.declination | Declinação do Sol | graus |
| $ .Sun.azimute | Azimute do sol | graus |
| $ .Sun.Height | Altura do sol acima do horizonte | graus |
| $ .Sun.diameter | Diâmetro do sol | Arco segundos |
| $ .Sun.rise.astronomical | Amawn astronômico | 'HH: MM: SS' |
| $ .Sun.rise.Nautical | Amanhecer náutico | 'HH: MM: SS' |
| $ .Sun.rise.civil | Amanhecer civil | 'HH: MM: SS' |
| $ .Sun.rise.sunrise | Nascer do sol | 'HH: MM: SS' |
| $ .Sun.culmination | Culminar do sol | 'HH: MM: SS' |
| $ .Sun.set.sunset | Pôr do sol | 'HH: MM: SS' |
| $ .Sun.set.civil | Dusk civil | 'HH: MM: SS' |
| $ .Sun.set.NAutical | Dusk náutico | 'HH: MM: SS' |
| $ .Sun.set.astronomical | Dusk astronômico | 'HH: MM: SS' |
| $ .SUN.ASCENSÃO | Ascensão direita do sol | 'HH: MM: SS' |
| $ .Sun.zodiac | Zodíaco | Áries, Touro, Gêmeos, Câncer, Leo, Virgem, Libra, Escorpião, Sagitário, Capricórnio, Aquário, Peixes |
| $ .Oon.distance.earth | Distância da Lua (centro da Terra) | km |
| $ .MOON.Distance.observer | Distância da lua (do observador) | km |
| $ .Oon.ecliptic.latitude | Latitude eclíptica da lua | graus |
| $ .Oon.ecliptic.longitude | Longitude eclíptica da lua | graus |
| $ .Oon.declination | Declinação da lua | graus |
| $ .Oon.azimute | Azimute da lua | graus |
| $ .Oon.Height | Altura da lua acima do horizonte | graus |
| $ .Oon.diameter | Diâmetro da lua | Arco segundos |
| $ .Oon.rise | Moonrise | 'HH: MM: SS' |
| $ .Oon.culmination | Culminar da lua | 'HH: MM: SS' |
| $ .MOON.SET | Moonset | 'HH: MM: SS' |
| $ .Moon.astensão | Ascensão direita da lua | 'HH: MM: SS' |
| $ .MOON.PHASE.NAME | Nome da fase da lua | Lua nova, crescente crescente, primeiro trimestre, Gibbous, lua cheia, Gibbous Waning, terceiro trimestre, Waning Crescent |
| $ .MOON.PHASE.VALUE | Fase da lua como índice | 0..7 |
| $ .MOON.PHASE.Number | Age of Moon em desde a lua nova (0) - Lua cheia (1) | decimal |
| $ .Oon.age | Age da lua em radianos | 0..359 |
| $ .MOON.SIGN | Sinal da lua | Áries, Touro, Gêmeos, Câncer, Leo, Virgem, Libra, Escorpião, Sagitário, Capricórnio, Aquário, Peixes |
Exemplo:
{
"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 "
}
}Obtenha a ascensão solar/conjunto
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 ` ;retorna
+ -- -------------------+----------+----------+
| Time | Sunrise | Sunset |
+ -- -------------------+----------+----------+
| 2023 - 01 - 18T09: 00 : 00 | 08 : 44 : 23 | 16 : 58 : 02 |
+ -- -------------------+----------+----------+Obtenha algumas informações da lua
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 ` ;retorna
+ -- -------------------+----------+----------+-----------------+-------+
| Time | Moonrise | Moonset | Phase | % Age |
+ -- -------------------+----------+----------+-----------------+-------+
| 2023 - 01 - 18T09: 00 : 00 | 05 : 33 : 24 | 12 : 52 : 19 | Waning crescent | 86 |
+ -- -------------------+----------+----------+-----------------+-------+ Retorna informações da biblioteca como string json
Exemplos:
> 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 |
+ -- ------------------+---------+----------------------+