명령줄에서 일출 및 기타 천문 데이터

명령줄에서 일출 및 기타 천문 데이터

특정 날짜와 위치의 일출 및 일몰 시간과 달 및 행성 데이터를 표시할 수 있는 간단한 오픈 소스 명령줄 프로그램이 있습니까?

데비안 패키지 데이터베이스를 탐색하고 Google에서 검색해도 관련 항목을 찾을 수 없습니다. 이것은 저를 놀라게 합니다. 천문학 괴짜와 Unix 괴짜의 수를 고려할 때 나는 사실상의 표준 sunrise(1)(또는 아마도 sunrise(6))을 기대했을 것입니다.

나는 하늘 지도(celestia, kstars, starplot, stellarium), 지구 지도(sunclock, xplanet), 달력/의제(emacs, Remember), 시계(glunarclock, wmsun)와 같이 부수적으로 계산을 수행하는 더 복잡한 프로그램에는 관심이 없습니다. ) ) , 조석 연감(xtide). 어쩌면 있을 수도 있습니다 aa(천문 연감), 하지만 이 경도와 위도에서 이 날짜에 태양이 몇 시에 뜨는지 묻는 간단한 방법은 없습니다.

내가 놓친 게 무엇입니까?

답변1

시도해 보셨나요 sunwait?

Sunwait는 일출과 일몰은 물론 민간, 해상 및 천문학적 황혼을 계산하는 데 사용되는 작은 C 프로그램입니다. [..]

이 항목을 사용할 수 있습니다GitHub에서다음과 같이 복제할 수 있습니다.

$ git clone https://github.com/risacher/sunwait
Cloning into 'sunwait'...
remote: Enumerating objects: 107, done.
remote: Counting objects: 100% (62/62), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 107 (delta 45), reused 37 (delta 36), pack-reused 45
Receiving objects: 100% (107/107), 121.93 KiB | 2.65 MiB/s, done.
Resolving deltas: 100% (55/55), done.
$ cd sunwait/

수리 후브래킷 문제, 프로그램을 만들 수 있습니다

$ make
gcc -c -Wall  sunwait.cpp -o sunwait.o
gcc -c -Wall  sunriset.cpp -o sunriset.o
sunriset.cpp: In function ‘void sun_RA_dec(double, double*, double*, double*)’:
sunriset.cpp:151:18: warning: variable ‘zs’ set but not used [-Wunused-but-set-variable]
  151 |   double xs, ys, zs;
      |                  ^~
gcc -c -Wall  print.cpp -o print.o
gcc sunwait.o sunriset.o print.o -o sunwait -lm -lstdc++
$ ./sunwait help
Calculate sunrise and sunset times for the current or targetted day.
The times can be adjusted either for twilight or fixed durations.

The program can either: wait for sunrise or sunset   (function: wait),
  or return the time (GMT or local) the event occurs (function: list),
  or report the day length and twilight timings      (function: report),
  or simply report if it is DAY or NIGHT             (function: poll).

You should specify the latitude and longitude of your target location.


Usage: sunwait [major options] [minor options] [twilight type] [rise|set] [offset] [latitude] [longitude]

Major options, either:
    poll          Returns immediately indicating DAY or NIGHT. See 'program exit codes'. Default.
    wait          Sleep until specified event occurs. Else exit immediate.
    list [X]      Report twilight times for next 'X' days (inclusive). Default: 1.
    report        Generate a report about the days sunrise and sunset timings.

Minor options, any of:
    [no]debug     Print extra info and returns in one minute. Default: nodebug.
    [no]version   Print the version number. Default: noversion.
    [no]help      Print this help. Default: nohelp.
    [no]gmt       Print times in GMT or local-time.  Default: nogmt.

Twilight types, either:
    daylight      Top of sun just below the horizon. Default.
    civil         Civil Twilight.         -6 degrees below horizon.
    nautical      Nautical twilight.     -12 degrees below horizon.
    astronomical  Astronomical twilight. -18 degrees below horizon.
    angle [X.XX]  User-specified twilight-angle (degrees). Default: 0.

Sunrise/sunset. Only useful with major-options: 'wait' and 'list'. Any of: (default: both)
    rise          Wait for the sun to rise past specified twilight & offset.
    set           Wait for the sun to  set past specified twilight & offset.

Offset:
    offset [MM|HH:MM] Time interval (+ve towards noon) to adjust twilight calculation.

Target date. Only useful with major-options: 'report' or 'list'. Default: today
    d [DD]        Set the target Day-of-Month to calculate for. 1 to 31.
    m [MM]        Set the target Month to calculate for. 1 to 12.
    y [YYYY]      Set the target Year to calculate for. 2000 to 2099.

latitude/longitude coordinates: floating-point degrees, with [NESW] appended. Default: Bingham, England.

Exit (return) codes:
    0           OK: exit from 'wait' or 'list' only.
    1           Error.
    2           Exit from 'poll': it is DAY or twilight.
    3           Exit from 'poll': it is NIGHT (after twilight).

Example 1: sunwait wait rise offset -1:15:10 51.477932N 0.000000E
Wait until 1 hour 15 minutes 10 secs before the sun rises in Greenwich, London.

Example 2: sunwait list 7 civil 55.752163N 37.617524E
List civil sunrise and sunset times for today and next 6 days. Moscow.

Example 3: sunwait poll exit angle 10 54.897786N -1.517536E
Indicate by program exit-code if is Day or Night using a custom twilight angle of 10 degrees above horizon. Washington, UK.

Example 4: sunwait list 7 gmt sunrise angle 3
List next 7 days sunrise times, custom +3 degree twilight angle, default location.
Uses GMT; as any change in daylight saving over the specified period is not considered.

Note that program uses C library functions to determine time and localtime.
Error for timings are estimated at: +/- 4 minutes.

전역적으로 설치하려면 다음을 입력하십시오.

$ sudo install -vpm 755 sunwait /usr/local/bin/
'sunwait' -> '/usr/local/bin/sunwait'

답변2

나는 결국 Perl을 사용하게 되었다DateTime::Event::Sunrise, C 프로그램을 컴파일하는 것보다 CPAN에서 모듈을 배포하는 것이 더 쉽기 때문입니다.

사용 예:

use DateTime;
use DateTime::Astro::Sunrise;
$latitude = "+48.857"; $longitude = "+2.351"; 
$sr = DateTime::Astro::Sunrise->new($longitude, $latitude, 0, 3);
$date = DateTime->now; $date->set_time_zone("local");
($rise, $set) = $sr->sunrise($date);
$rise->set_time_zone("local"); $set->set_time_zone("local");
print $rise, " to ", $set, "\n";

sunrise스크립트.

답변3

저처럼 게으른 사람들을 위해 아주 간단한 프로그램이 있습니다.날짜, 다양한 배포판에서 사용 가능( apt-get install hdateDebian/Ubuntu/...):

hdate -s -l N50 -L E14 -z2

산출:

Wednesday, 26 June 2019, 23 Sivan 5779
sunrise: 04:55
sunset: 21:17

옵션:

  • -s sunset sunrise
  • -l, -L: 프라하의 고도와 위도 (50°05′N 14°25′E)
  • -z zone:SELC=+2

모든 끝났어. :-)

답변4

확인 해봐리눅스 홈 오토메이션 리눅스 홈 오토메이션웹사이트에서 "sunrise" 페이지를 검색하세요. c에는 몇 가지 명령줄 프로그램이 있습니다. 1985년 스타일은 매우 미니멀했습니다. 그 시대의 많은 관련 프로그램에 대한 소스 코드가 있지만 온라인에서 찾을 수 없습니다.

업데이트: 방금 sdate를 포함한 다른 항목의 소스를 찾았습니다.이벤트 레코더페이지. 페이지에서 "rise_set"을 검색하세요.

2017-12-23 업데이트:리눅스 홈 오토메이션프로젝트가 이동되었지만 일출, 일몰 등과 같은 명령줄 프로그램은 계속 사용할 수 있는 것 같습니다.여기그리고여기. 원본 페이지 링크에 줄을 그어 지웠으나 참조용으로 보관하고 새 페이지에 대한 링크를 추가했습니다.

관련 정보