Как определить в каком знаке зодиака луна при помощи PHP

Положение луны

Для определения положении луны я использовал программу swisseph. Программа swisseph позволяет читать таблицу Эфемерид координат астрономических объектов. После того как разобрался с этой программой, нашел обертку на PHP для swetest.

composer req destinylab/swetest "dev-master"

Немного кода:

$date = new \DateTime();
$separator = ',';
$query = [
    'b'    => $date->format('d.m.Y'), // Дата на которую необходимо получить позицию планеты
    'ut'   => $date->format('H:i:s'), // Время
    'p'    => '1', // Информацию о какой планете надо получить. 1 - луна
    'g'    => $separator, // Разделитель значений
    'e'    => 'swe', // Использовать Швейцарскую таблицу Эфемерид
    'f'    => 'lsZ', // Какие значения необходимо получить. l - долгота, s - широта, Z - в каком знаке зодиака
    'head' => '' // Исключить доп. инфу из ответа
];
// Команда будет выглядеть
// ./swetest -b10.02.2018 -ut16:17:20 -p1 -g, -eswe -flsZ -head
$swetest = new Swetest();
// Запрашиваем информацию, о каждой планете на новой строке. 
$output = $swetest->query($query)->execute()->getOutput();
// $output[0] - так как луна на первой строке, и разделяем значение разделителем ','
$moon = explode($separator, trim($output[0]));

// $moon[0] - долгота "260.9579881"
// $moon[1] - широта " 11.8415737"
// $moon[2] - в каком знаке "20 sa 57'28.7572"

$zodiac = explode(' ', trim($moon[0]));
// $zodiac[0] - градус "21"
// $zodiac[1] - код знака зодиака "sa"
// $zodiac[2] - минуты и секунды "2'33.1771"
$zodiacCode = [
    'ar' => 'в овне',
    'aq' => 'в водолее',
    'ge' => 'в близнецах',
    'sa' => 'в стрельце',
    'cp' => 'в козероге',
    'vi' => 'в деве',
    'pi' => 'в рыбах',
    'sc' => 'в скорпионе',
    'li' => 'в весах',
    'cn' => 'в раке',
    'ta' => 'в тельце',
    'le' => 'во льве',
];

echo 'Луна в ' . $zodiacCode[$zodiac[1]];

Комментариев нет

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *