mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

日・月の出・入・南中計算実行ファイル!

[ プログラミング ] [ VisualC# ]

こんばんは。

先日は「日・月の出・入・南中計算Rubyスクリプト」を紹介しました。

そのRubyスクリプトを Microsoft Visual C# Express Edition に移行して実行(EXE)ファイルを作成してみました。 コマンドラインで日付、緯度、経度、標高を指定して実行すると計算結果を出力します。( 時刻は日本時間(UTC+9)固定 )

ソースは公開しませんが、実行(EXE)ファイルをダウンロードできるようにしておきます。興味のある方はどうぞ。

使用方法

動作確認について

アプリ作成・動作確認は WindowsXP SP3 + .NET Framework 4.0 Client Profile で行いました。 特別な処理は盛り込んでいませんので、.NET Framework は 2.0, 3.0, 3.5, 3.5 Client Profle, 4.0 でも動作すると思います。

使用方法

ダウンロードした圧縮ファイルを解凍後、コマンドプロンプトで引数を指定して"SunMoon.exe"を実行するだけです。

1
>SunMoon 第1引数 第2引数 第3引数 第4引数 [ 第5引数 ]

引数について

日付・緯度・経度・標高は必須です。オプションは省略すると全情報を出力します。 オプションを省略した場合の出力順は下記の第5引数の説明に記載のアルファベット順となります。 オプションを指定した場合は指定した順に出力します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
引数 : 第1 ( 日  付 )     [必須]   [ 99999999 ]
           計算対象の日付(グレゴリオ暦)を半角8桁数字で指定します。

       第2 ( 緯  度 )     [必須]   [ [+|-]999.99999999 | [+|-]999:99:99.99 ]
           緯度を 度 または 度・分・秒 で指定します。
           ( 北緯はプラス、南緯はマイナス )
           ( 度 の小数点以下、度・分・秒 の分以下は省略可 )

       第3 ( 経  度 )     [必須]   [ [+|-]999.99999999 | [+|-]999:99:99.99 ]
           経度を 度 または 度・分・秒 で指定します。
           ( 東経はプラス、西経はマイナス )
           ( 度 の小数点以下、度・分・秒 の分以下は省略可 )

       第4 ( 標  高 )     [必須]   [ 9999.99999999 ]
           標高をメートルで指定します。
           ( 小数点以下分以下は省略可 )

       第5 ( オプション ) [省略可] [ abcdefghijkl ]
           出力項目を下記の半角小文字アルファベットが指定可能です。
           ( 無指定なら全指定と判断 )
            a : 日の出時刻
            b : 日の出方位角
            c : 日の入時刻
            d : 日の入方位角
            e : 日の南中時刻
            f : 日の南中高度
            g : 月の出時刻
            h : 月の出方位角
            i : 月の入時刻
            j : 月の入方位角
            k : 月の南中時刻
            l : 月の南中高度

使用例

オプション指定無し

指定の日付・緯度・経度・標高の全情報を出力します。 2011年9月18日の島根県庁(北緯35.47222222度、東経133.05055556度、標高は0メートルと仮定)の場合です。

1
2
3
>SunMoon 20110918 35.47222222 133.05055556 0
2011/09/18 [ 35.47222222N 133.05055556E 0m ] 05:52:00 86.77 18:11:48 272.99 12:0
2:11 56.58 21:13:18 62.97 11:00:38 296.16 03:43:58 75.18

オプションに日の出・入時刻のみ出力する例

指定の日付・緯度・経度・標高の全情報を出力します。 2011年9月18日の島根県庁(北緯35度28分20秒、東経133度03分02秒、標高は0メートルと仮定)の場合です。

1
2
>SunMoon 20110918 35:28:20 133:03:03 0 ac
2011/09/18 [ 35:28:20N 133:03:03E 0m ] 05:52:00 18:11:48

各種計算の丸め方法や、大気差の計算条件・方法などに多少の誤差はあります。 当方が任意の位置の任意の日付で確認してみたところ、以下のような誤差が発生します。

  • 日・月の出・入・南中時刻 プラスマイナス1秒未満
  • 日・月の出・入方位角 プラスマイナス0.0001度未満
  • 日の南中高度 プラスマイナス0.01度未満
  • 月の南中高度 プラスマイナス1度未満

Rubyスクリプトで実行した場合と同じ誤差です。 この誤差については、色々なサイトで確認してみましたが、時刻を分単位、方位角・高度を100分の1単位で丸めれば、どれも結果は似たようなものになります。

※この実行(EXE)ファイルは個人的に利用することが目的で作成しています。実行結果の保証はいたしません。個人の責任の元ご利用ください。 ※著作権は、mk-mode.com に帰属しますが、自由に配布して頂いてかまいません。 ※また、ベクター等にアップするつもりも(今のところは)ありません。

参考にしたサイト・文献


VisualC# はそんなにC言語っぽくなく、むしろ VisualBasic と Java を足して2で割ったような感じに思います。 (VisualBasic をオブジェクト指向にした感じ?)

以上。

Comments