يحتوي هذا المستودع على الكود المصدري لمكتبة دالة MySQL القابلة للتحميل (التي كانت تسمى سابقًا وظائف UDF - محددة المستخدم) ، والتي توفر وظيفة SQL Astrononmy Additonal للحصول على معلومات Astro Sun and Moon لموقع جغرافي معين ووقت.
تستند الحسابات إلى تكييف فئة علم الفلك C ++ من ESP32-ATTROMYIE.
إذا كنت تحب lib_mysqludf_astro ، فامنحها نجمًا أو شوكة:
من تشغيل الدليل الأساسي:
make clean
make
sudo make installسيؤدي ذلك إلى إنشاء وتثبيت ملف المكتبة.
لإنشاء إصدار خاص بالبلد ، اتصل على Call Make مع المعلمة Lang = -dlang_xx ، حيث XX هو رمز البلد: de = German ، es = Spanish ، fr = French ، It = Italian ، Nl = Horellands ، en = English (الافتراضي).
مثال: إنشاء وتثبيت استخدام ثنائي هولندي
make clean
make LANG=-DLANG_NL
sudo make install أخيرًا ، نقوم بتنشيط الوظيفة القابلة للتحميل في خادم MySQL (استبدل username بواسطة مستخدم MySQL المحلي الذي لديه إذن لإنشاء وظائف ، مثل الجذر)
mysql -u username -p < install.sqlلإلغاء التثبيت أولاً ، قم بإلغاء التعطيل على وظيفة التحميل داخل خادم MySQL باستخدام استعلامات SQL:
DROP FUNCTION IF EXISTS astro_info;
DROP FUNCTION IF EXISTS astro;ثم قم بإلغاء تثبيت المكتبة باستخدام سطر الأوامر:
sudo make uninstallإرجاع معلومات Astro للتاريخ المحدد ، تحديد الموقع الجغرافي و timezone كسلسلة JSON.
تاريخ صالح معين في "Yyyy-MM-DD HH: MM: SS". تواريخ غير صالحة تؤدي إلى قيمة فارغة.
الوضع بين الشمال والجنوب من نقطة في شكل درجات
الشرق والغرب من نقطة في شكل درجات
إزاحة المنطقة الزمنية من UTC في ساعات
تُرجع الوظيفة معلومات Astro كسلسلة JSON مع المفاتيح التالية:
| مفتاح JSON | وصف | التنسيق/الوحدة |
|---|---|---|
| $. الوقت | تاريخ النتيجة المحددة | 'Yyyy-MM-DDTHH: MM: SS " |
| $ .Zone | إزاحة المنطقة الزمنية من UTC في ساعات | ساعة |
| $ .latitude | خط العرض الجغرافي | درجات |
| $ .longitude | خط الطول الجغرافي | درجات |
| $ .deltat | دلتات | عشري |
| $ .juliandate | تاريخ جوليان | عشري |
| $ .gmst | Greenwich sidereal الوقت | "HH: MM: SS" |
| $ .lmst | وقت sidereal المحلي | "HH: MM: SS" |
| $ .sun.distance.earth | المسافة إلى الشمس (مركز الأرض) | كم |
| $ .sun.distance.observer | المسافة إلى الشمس (من المراقب) | كم |
| $ .sun.ecliptic | طول الشمس من الشمس | درجات |
| $ .sun.declination | انخفاض الشمس | درجات |
| $ .sun.azimuth | سمت من الشمس | درجات |
| $ .sun.hight | ارتفاع الشمس فوق الأفق | درجات |
| $ .sun.diameter | قطر الشمس | قوس ثواني |
| $ .sun.rise.ASTONONALICAL | الفجر الفلكي | "HH: MM: SS" |
| $ .sun.rise.nautical | الفجر البحري | "HH: MM: SS" |
| $ .sun.rise.civil | الفجر المدني | "HH: MM: SS" |
| $ .sun.rise.sunrise | شروق الشمس | "HH: MM: SS" |
| $ .sun.culmination | تتويجا من الشمس | "HH: MM: SS" |
| $ .sun.set.sunset | غروب | "HH: MM: SS" |
| $ .sun.set.civil | الغسق المدني | "HH: MM: SS" |
| $ .sun.set.nautical | الغسق البحري | "HH: MM: SS" |
| $ .Sun.Set.ASTONONALICAL | الغسق الفلكي | "HH: MM: SS" |
| $ .sun.ascense | الصعود الصحيح للشمس | "HH: MM: SS" |
| $ .sun.zodiac | زودياك | الحمل ، برج الثور ، الجوزاء ، السرطان ، ليو ، العذراء ، الميزان ، العقرب ، القوس ، الجدي ، الدلو ، الحوت |
| $ .moon.distance.earth | المسافة إلى القمر (مركز الأرض) | كم |
| $ .moon.distance.observer | المسافة إلى القمر (من المراقب) | كم |
| $ .moon.ecliptic.latitude | خط العرض الكسوف للقمر | درجات |
| $ .moon.ecliptic.longitude | خط الطول الكسوف للقمر | درجات |
| $ .moon.declination | انخفاض القمر | درجات |
| $ .Moon.Azimuth | سمت القمر | درجات |
| $ .moon.Height | ارتفاع القمر فوق الأفق | درجات |
| $ .moon.diameter | قطر القمر | قوس ثواني |
| $ .moon.Rise | تقسيم القمر | "HH: MM: SS" |
| $ .moon.culmination | تتويجا من القمر | "HH: MM: SS" |
| $ .moon.set | أقمار | "HH: MM: SS" |
| $ .moon.ascense | الصعود الصحيح للقمر | "HH: MM: SS" |
| $ .moon.phase.name | اسم مرحلة القمر | القمر الجديد ، الهلال الشمع ، الربع الأول ، الشمع gibbous ، اكتمال القمر ، تراجع gibbous ، الربع الثالث ، waning هلال |
| $ .moon.phase.value | مرحلة القمر كمؤشر | 0..7 |
| $ .moon.phase.number | عصر القمر في New Moon (0) - اكتمال القمر (1) | عشري |
| $ .moon.age | عمر القمر في راديان | 0..359 |
| $ .moon.Sign | علامة القمر | الحمل ، برج الثور ، الجوزاء ، السرطان ، ليو ، العذراء ، الميزان ، العقرب ، القوس ، الجدي ، الدلو ، الحوت |
مثال:
{
"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 "
}
}احصل على أشعة الشمس/مجموعة
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 ` ;عودة
+ -- -------------------+----------+----------+
| Time | Sunrise | Sunset |
+ -- -------------------+----------+----------+
| 2023 - 01 - 18T09: 00 : 00 | 08 : 44 : 23 | 16 : 58 : 02 |
+ -- -------------------+----------+----------+احصل على بعض معلومات القمر
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 ` ;عودة
+ -- -------------------+----------+----------+-----------------+-------+
| Time | Moonrise | Moonset | Phase | % Age |
+ -- -------------------+----------+----------+-----------------+-------+
| 2023 - 01 - 18T09: 00 : 00 | 05 : 33 : 24 | 12 : 52 : 19 | Waning crescent | 86 |
+ -- -------------------+----------+----------+-----------------+-------+ إرجاع معلومات المكتبة كسلسلة JSON
أمثلة:
> 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 |
+ -- ------------------+---------+----------------------+