dump1090 Prometheus ExporterでADS-B受信状況を監視する

前の記事ではdump1090-fa(他のdump-1090でも同じ)をインストールして実行したが、こういうのは基本的には停まらず動き続けてくれることが前提のサービスなので動いていることを監視したいという欲求はある筈。(dump1090が動いているホストのシステム稼働状況を監視するのとは別にdump1090の稼働状況を監視したいという意味)  それで、そう考えた先人はPrometheusで監視する用のexporterとしてdump1090 Prometheus Exporterと、Grafana用ダッシュボードのdump1090export Grafana dashboardというのを作ってくれている。ここは凄く感謝して使わせていただくことに。

dump1090 Prometheus Exporterのインストールと起動

以下、https://github.com/claws/dump1090-exporterを参照して進めた。

dump1090exportは必ずしもdump1090-fa(など)と同じホストに置く必要はないみたいだけど、敢えて別けて置く必要もまたないわけで、今回はdump1090exportをdump1090-faと同じホストで実行させるようにする。使用するのは前回と同じくOrange Pi Zero Plusというシングルボードコンピュータで動くArmbian(Debian Linux)のホスト。Raspberry PiとRaspbianやPCのLinuxもほぼ似たようなものかと。

Armbianはコンパクトなので最初からあれもこれもてんこ盛りで入っているわけではないので幾つかパッケージをインストールする。Pythonが必要だが、Python2系はダメらしいのでpython3系でパッケージをインストールする。

$ sudo apt install python3-pip python3-setuptools python3-dev
$ sudo pip3 install dump1090exporter

Python3系用のpipはArmbianのパッケージでインストールするとpip3らしい。Linuxの他のディストリビューションやxBSD等では必要に応じてpipに読み替えて実行いただければ。
dump1090exportはpipでインストールするだけなので簡単。Python用で必要なのは勝手にインストールされる。

/usr/local/bin/dump1090exporterが実行に使用するファイル。

$ dump1090exporter -h
usage: dump1090exporter [-h] [--url <dump1090 url>] [--host <exporter host>]
                        [--port <exporter port>]
                        [--aircraft-interval <aircraft data refresh interval>]
                        [--stats-interval <stats data refresh interval>]
                        [--latitude <receiver latitude>]
                        [--longitude <receiver longitude>] [--debug]

dump1090 Prometheus Exporter

optional arguments:
  -h, --help            show this help message and exit
  --url <dump1090 url>  Url of the dump1090 service to be monitored
  --host <exporter host>
                        The address to expose collected metrics from. Default
                        is all interfaces.
  --port <exporter port>
                        The port to expose collected metrics from. Default is
                        9105
  --aircraft-interval <aircraft data refresh interval>
                        The number of seconds between updates of the aircraft
                        data. Default is 10 seconds
  --stats-interval <stats data refresh interval>
                        The number of seconds between updates of the stats
                        data. Default is 60 seconds
  --latitude <receiver latitude>
                        The latitude of the receiver position to use as the
                        origin.
  --longitude <receiver longitude>
                        The longitude of the receiver position to use as the
                        origin.
  --debug               Print debug output
dump1090exporterのREADME.rstによると実行サンプルは以下。
$ dump1090exporter \
  --url=http://192.168.1.201:8080 \
  --port=9105 \
  --latitude=-34.9285 \
  --longitude=138.6007 \
  --debug

ただし、dump1090-faが動いているホストで実行する場合は--url, --host, --portは指定する必要はなさそう。また、2つのインターバル指定も多くの場合は初期値から変えなくて良さそうなので--latitude(緯度)と--longitude(経度)だけ指定する。もちろん、動作テストのとき以外は--debugは要らない筈。

システム起動時にdump1090exporterを自動起動させるためのsystemd用ファイルは作っても良いと思うが面倒なので/etc/rc.localに2行挿入した。

/etc/rc.local (2行挿入、最後の"exit 0"の直前の行辺り)
/bin/sleep 20
/usr/local/bin/dump1090exporter --latitude=-35.00000000 --longitude=136.00000000 &

システム起動が落ち着いてからdump1090exporterを起動させるというつもりて20秒の余裕を持たせた。

手動でも自動実行でもdump1090exporterが起動してから、情報が出力されていることを確認してみる。

curlで実行(ブラウザでも可)
$ curl http://192.168.0.127:9105/metrics

ここでは192.168.0.127がdump1090exporterが動いているホストのIPアドレスとする。

# HELP dump1090_messages_total Number of Mode-S messages processed since start up
# TYPE dump1090_messages_total gauge
dump1090_messages_total{time_period="latest"} 8462670
# HELP dump1090_recent_aircraft_max_range Maximum range of recently observed aircraft
# TYPE dump1090_recent_aircraft_max_range gauge
dump1090_recent_aircraft_max_range{time_period="latest"} 0.0
後略

何か値が入っていて120行程度?ドバッと出力されればOK。

これでdump1090exporter側は完了。

Prometheus側の設定

dump1090exporterのREADME.rstによると設定ファイルに以下のようなのを追記することになっている。

/usr/local/etc/prometheus.yml (既存の設定に編集追加)
1
2
3
4
5
6
scrape_configs:
  - job_name: 'dump1090'
    scrape_interval: 10s
    scrape_timeout: 5s
    static_configs:
      - targets: ['192.168.1.201:9105']

1行目のscrape_configs:の行は既にprometheus.ymlにあると思われるので、その下層の設定の後に2〜6行目を追加する。
targetsにdump1090exporterが動いているホストのIPアドレスを指定する。
Prometheusを再起動するなり設定ファイルをリロードさせるなり。

Prometheusはこれだけ。

Grafanaのダッシュボード追加

提供されているにダッシュボードを貰ってきてGrafanaにインポートしたら後は眺めるだけ。何も考えなくてよいのでラク。

dump1090 Prometheus Exporter 1
https://grafana.com/grafana/dashboards/768にダッシュボードがある。
ページを開いて右列のDownload JSONのリンクをクリックしてJSONファイルをダウンロードする。

dump1090 Prometheus Exporter 2
Grafanaの左列の Createにポインタを合わせ、サブメニューのImportをクリックする。

dump1090 Prometheus Exporter 3
右方のUpload .json fileボタンをクリックする。
ファイル選択画面が表示されるので先にダウンロードしたJSONファイルを選択してアップロードする。

dump1090 Prometheus Exporter 4
インポート画面に変わるのでOptionsの1番下のPrometheusのドロップダウンメニューからPrometheus(稼働中のPrometheusが複数ある場合はdump1090exporterのデータを取り込んでいるPrometheus)を選択する。
Importボタンをクリックする。

dump1090 Prometheus Exporter 5
自動的にインポートしたダッシュボード画面に切り替わる筈。Prometheusがdump1090exporterからデータを取り込み始めたとき以降のデータは遡って見ることができる。(もちろん、破棄された過去データは見れない)

dump1090 Prometheus Exporter 6
1つ前の画像はブラウザ画面が狭くて見難かったけど、実際に見るであろう2Kサイズくらいで表示するとこんな感じ。
それぞれのグラフの概要も表示されるので、それが何を示しているのかもわかる。他人が作ったダッシュボード(やグラフ)ってどういう意図で何を示そうとしているのか解らなくて困ることがあるので、こういう心配りは嬉しい。しかし、messages / secのグラフでlatest(直近の1秒)とlast 1 min(直近の1分間の平均?)を示している意図は判らない。
最上段のサマリの数字は、リアルタイム(今回のdump1090exporterの設定では10秒毎の更新)で、その時点でdump1090に検知されている情報。Aircraft Totalは、検知されている航空機数。Aircraft with Positionで位置の通知が正常に受信できている航空機。なのでAircraft without Positionは単純にその引き算。それが直下のグラフでは水色のラインで示されている。Max Rangeはその時点で一番遠くにいる航空機までの距離。Messages/Secは1秒あたりに受信するADS-Bの(Mode-S)メッセージパケット数。Signal PeakとSignal Meanは電波強度を示すためのピークと移動平均。ノイズはサマリの数値には表示されないが、Signal Strengthグラフには表示されている。単位はdbFSで個人的には馴染みがない。

見たら判るが、dump1090exporterがdump1090から取得するデータは統計情報(受信状況)だけ。dump1090が受信した個別の航空機のデータは含まれない。だから、dump1090exporterで取得したデータから各航空機の飛行経路をプレイバックできるかというと無理。作った人にそういう気持ちはなかったみたい。まぁ個別航空機のデータまで含んだらデータ量増えすぎなのでこれで良いと思う。

この記事では関係ないんだけど、
ADS-Bのメッセージパケットは航空機1機あたりで沢山来る。1パケットは112ビットまたは56ビット。仮に1バイト8ビットとして1バイトコードの文字データを送信するとすると英数字で14文字または7文字しか送れない程度の大きさでしかない。これでは航空機の識別番号と速度、位置、高度、その他幾つかの全てを1パケットで送るのは無理。それぞれの情報をタイプコード別に違うパケットとして送信するみたい。だから、電波状況によってはパケットを取りこぼして位置(だけ)が取得できない航空機とかがでてくるのね、きっと。パケットの仕様はよく見てないというか「がとらぼ」の中の人の頭のレベルでは理解できないので間違ってたらスミマセン。興味のある人はhttps://mode-s.org/を見て下さい。

関連記事:

Volumioにウェブラジオ局を登録

ここ最近のバージョンのVolumioでは日本を含む世界中のウェブラジオが非常に多く登録されているので検索するなりジャンル別などから選ぶなりして聴くというのができる。便利。

でも、登録されていない局も膨大。
任意の局を登録して聴きたいという需要は多い筈。で、Volumioではとても簡単に局を登録して聴くことができるようになっているんだけど、意外と知らない人も多い。
今回は日本のNHKとOTTAVAを例に登録してみた。

ウェブラジオの登録方法

Volumioにウェブラジオ局を登録 1
メインの「プレイバック」画面。ブラウザの横幅が広ければ左下の「 一覧表示」、狭ければ左上の「」をクリック。

Volumioにウェブラジオ局を登録 2
「ウェブラジオ」をクリック。

Volumioにウェブラジオ局を登録 3
リスト中の「 マイウェブ放送局」の右側にある「」をクリック。

Volumioにウェブラジオ局を登録 4
すぐ近くに「 ウェブラジオの追加」が表示されるのでそれをクリック。

Volumioにウェブラジオ局を登録 5
登録できるのが2項目だけという簡単さ(それがアダになっている部分もあるけど)。
「名前」は任意で好きなのを。普通は放送局名を入れる。
UrlにはウェブラジオのストリームURLやプレイリストURLを入力する。傾向としてはM3Uが多いかな。PLSも使えるとある。ウェブラジオのウェブサイトのURLではないので、これは公開されているURLをググるなりして調べる。(後述)
入力したら「追加」をクリック。

Volumioにウェブラジオ局を登録 6
ウェブラジオのメニューリストに戻るので今度はリスト中の「 マイウェブ放送局」をクリック。

Volumioにウェブラジオ局を登録 7
登録したウェブラジオ局がリスト表示される(ここではNHK東京とOTTAVA)ので聴きたい局をクリック。

これだけ。超簡単。
問題はウェブラジオのストリームURLなどを調べるのが大変な(こともある)のね。

NHK

NHKは最近はRadikoでも聴けるようになってるようだが、NHK自身でも変わらずウェブラジオを提供している。今回はそちら。

Volumioにウェブラジオ局を登録 8
NHK自身が提供しているhttp://www.nhk.or.jp/radio/config/config_web.xmlをブラウザで見る。XMLファイルなので普通のウェブページとは見た目が大きく違うけど、見た瞬間に拒否反応さえ起こさなければ普通に判る内容。
聴きたい局の地域までスクロールして、第1、第2、FMの登録したいURLをコピーしてVolumioに登録する。URLは変わるかもしれないので聴けなくなったらURLを調べなおして再登録(登録済みのURLだけ書き換える)。

OTTAVA

個人的にOTTAVAに特に思い入れがあるわけではなく、今回はたまたまで取り挙げた。

Volumioにウェブラジオ局を登録 9
公式ウェブでは情報らしい情報が提供されていなかったのでWikipediaさんのOTTAVAのページを開く。
下の方にスクロールする。

Volumioにウェブラジオ局を登録 10
「出典・参照」の19番に「2018年11月23日現在のストリームURL」と書かれている。そのリンクURLは2020年2月22日現在も有効なのでリンクをコピーしてVolumioに登録する。

ところで、ottava.jpのウェブサイトを開いた時に表示されるタイムテーブルと、ウェブ上の再生ボタンで視聴できるクラシックチャンネルのストリームURLは
https://ottava-live.webcdn.stream.ne.jp/hls-live/mvqj18ky8u87ske8/playlist.m3u8

こちらは、ちょこっと聴いた範囲では48KHz/32bitだった。無料放送だけどいいね。ただし、超非力なRaspberry Pi Zero Wだとストリームファイルの継ぎ目で2秒ほど再生が途切れるみたい。

不思議なことに日本のウェブラジオはとにかくストリーム/プレイリストのURLを公開したがらない。聴いて貰わなきゃ事業として成立する流れになる筈もなく失敗する未来しかない。只でさえラジオを聴く習慣のある人口は減っているのだから例え1人でも聞いてみようという人を増やさなきゃダメなのに手をこまねくどころか自ら興味を持ちかけの人を拒否するようなことをしている。この3月末にもi-dioが終了するらしいが、そうなるのは当然だった。「試しに聴いてみたいな」と興味持ってくれた人に「聴きたかったら先ずはスマホに専用アプリ入れろ」じゃそりゃ嫌だわ。ウェブサイト上で聴くこともさせないとかもうお話しにならない。あと、スマホでネットのラジオは聴けるだろうけど、熱心なリスナーってスマホで聴き続けるかしら。(若い人はラジオを聴かないという前提のオッサンの思考)
そう考えると、少しでも多くスマホ以外のデバイスでも聴いてもらえるようにしなきゃならない筈だけど日本は逆を行き続けるのよね。日本のラジオは電波での放送が終了すると共に滅びるんじゃないかと思う。

ところでRadiko

Volumioの標準機能ではRadikoは聴くことができない。ウェブラジオの設定で細かいことができないということもあるけどRadikoの場合はそれだけではない。ググると「らじるこプラグイン」経由でゲフンゲフンしてる人もいるようだけど、そんなことまではしなくてもいいんだけどね。代わりにVolumioの・・・・・・。まぁ結局は面倒なんだけど。機会があればいつか別の記事で。

新なんちゃってコリニアアンテナとカバレッジ

なんちゃってコリニアアンテナ再作成

昨年にデタラメ放題で作ったコリニアアンテナがAliExpressで購入したなんかよくわからないアンテナより遥かに良かったのに気を良くして新しいアンテナを作ることに。今回は屋外に設置すること前提でしっかり作る。ただし正しく作れているか確認するための測定機器は何もないので今回も「なんちゃって」なアンテナであることは変わらない。激安NanoVNAをeBayで注文したんだけど出品者がキャンセルしちゃったのよね。
今回使用したのは一般的なテレビアンテナのケーブルよりだいぶ細いRG58ケーブルで、芯線と網線の間の絶縁体(導体)が硬いポリエチレンなので波長短縮率は67%。前回のなんちゃってアンテナ作成時に使ったS5CFVケーブルは発泡ポリエチレンで波長短縮率は80%だったのでそれより短いアンテナが作れる。短くなる分、リクツとしては長さ合わせはシビアになる筈だが、前回作った感想は「意外とデタラメでもイケるぞ」なので今回もお手軽に作る。送信ありだとデタラメじゃダメなんだろうけど、受信のみだからね。

1090MHzの波長は275.0389523mm
λ/2 = 137.51947616
λ/4 = 68.75973807
それぞれ短縮率を掛ける。
短λ/2 = 137.51947616 x 0.67 = 92.138049mm まるめて92mm
短λ/4 = 68.75973807 x 0.67 = 46.069024mm まるめて46mm

「がとらぼ」の中の人の工作精度だと整数ミリ単位が限度。それに、波長短縮率もこの同軸ケーブルを測定してケーブル素材での正しい長さを出しているわけではなく、あくまでもポリエチレンの場合のアバウトな率なのでこの数値で100%正しいということでもなく、計算上の長さで精度を出したところで意味がない。

コリニアアンテナ作製 1
短λ/2を8本(8段)、それぞれの両端に短λ/4を1つずつ取り付け、先端側の短λ/4の末端はショートした。その先にλ/4ほど芯線をビョンと伸ばすのは今回は無し。
購入したケーブルは丸まりクセがなく、どちらかというと解くと真っ直ぐになろうとするもので、それを購入してから2ヶ月ほど天井から真っ直ぐぶらさげて保管していたが、エレメントの長さに切ると何故か丸まろうとするのが不思議。
上の写真はピンぼけで、芯線も適切な長さ(網線の露出部分+0.5mm程度)にカットする前のもの。実はこのあと、アンテナが完成するまでの写真が全てカメラのSDカード不良で取り出せなかった。

コリニアアンテナ作製 2
これは失敗して使わなかったエレメントをスマホで撮影したもの。網線部分にハンダをしている。網線の下のポリエチレンに悪影響を与えないように90Wのはんだこてで一気にハンダを網線に染み込ませる。写真の手前側は少し厚くハンダを置いて、隣接するエレメントの芯線をひっつける部分になる(筈だった)。が、この写真のエレメントはその網線にハンダを染み込ませるのが綺麗にできなかったのでボツにした。同軸ケーブルの網線は「はんだ吸取り線」と同じようなのだから簡単な筈で失敗するのは恥ずかしいんだけどね。

前回はエレメントの接合は同軸ケーブルの外皮と網線の境に隣接するエレメントの芯線を突き刺すという簡易方式にしたが、今回はそれぞれのエレメントの外皮を7mmずつ剥いてきちんとハンダ付けした。また、エレメントの接合部はそうでない部分と比べて強度が劣るので力が加わるとそこから折れ曲がったりショートしたりで良くないので自己融着テープをしっかり巻きつけて防水且つ強度のある状態にした。本来はさらにその上から防護用にビニールテープを巻くんだろうけど、パイプの中に収めるのでエレメント接合部分はビニールテープは無しとした。

その8段コリニアアンテナは直径22mmの硬質ビニル電線管(J管)に収めた。FRPのパイプの方が良さそうだけどちょっと高いのと入手が難しいのよね。園芸用のダンポールPというのがFRPパイプに樹脂コーティングしてあって1〜3m程度の短く細いコリニアアンテナには良さそうだったので今度購入してみようかと考えている。ちょうど良い太さと長さのものが単品で販売されているかが問題だけど。
パイプの先端にはノック付きのツバ管を取り付けた。ツバ管だけどノック付きは実質的にはフタになる。(隙間があるので防水化必須)
テグスをコリニアアンテナ先端に固定して、そのテグスで引っ張り上げるようにしてパイプの先端のツバ管のノック部に留める。ツバ管はパイプの先端と一緒に自己融着テープで防水処理してからビニールテープを巻いて保護した。

アンテナの根本側は22mmのJ管の上に26mmのJ管を被せた。これは内径が22mmでNコネクタがすっぽり収まる太さだったから。コネクタ部分がパイプで隠れるようにした方がコネクタが雨に直接晒されなくて良いかなということで。2つのバイプを重ねると隙間があったので滑り止めシートを巻きつけて無理やりパイプをはめ込んだ。2種類のパイプの継ぎ目部分の外側は自己融着テープで防水処理してからビニールテープを巻いて保護した。

コリニアアンテナ作製 3
以前のAliExpressで購入したアンテナを屋根に設置したときは直径60mmの塩ビパイプにBPF+LNAとRTL-SDRドングルとOrangePi Zero Plusを入れたが、OrangePiの収まりが悪いのと結露にも困ったので今回は新しいケースを作った。
ダイソーで購入したパスタケースが長さ的に良さそうだったのでそれに穴を開けて中にモノ収めてホットボンドで穴を塞ぎ、さらに自己融着テープを貼って目張りをした上で防護為にのビニールテープを巻いた。ヒートシンク部分だけはホットボンドのみ。また、タッパーのフタも自己融着テープ+ビニールテープにした。これで防水はしっかりできた筈。暑い日に破裂する可能性はあるが、以前にパイプに一式収めたときは破裂を恐れてスポンジによる虫侵入防止付きの空気口を付けた結果が結露で水溜りになり大変なことになったので今回は密閉。
上の写真はタッパーの中の右の青いのがBPF+LNA、中央の緑がRTL-SDRドングル、左の青い基板がOrangePi Zero Plus(の裏面)。Orange PiとBPF+LNAを繋いでいる中央下の小さな基板はOrangePiからBPS+LNAに電力を供給する間に入れた整流ダイオード。この基板はホットボンドでタッパーの内側に留めている。

コリニアアンテナ作製 4
タッパーの裏側は、OrangePiのSoCに貼り付けた銅のキューブと同じサイズの穴を開けてキューブを貫通させてタッパーとの隙間をホットボンドで塞ぎ、ヒートシンクを銅キューブに貼り付けて、さらにヒートシンクをタッパーとホットボンドでぐるり1周しっかりと隙間を塞ぐように盛った。

コリニアアンテナ作製 5
残念ながら天候に恵まれず屋根に取り付けられなかったのでアンテナ台にタイバンドでアンテナを仮止めして地面に置くしかなかった。ここは周囲を建物に囲まれた中庭的な場所なので地面に置いたアンテナの水平方向は全ての方向で直線的には何かに邪魔された状態。感度は期待できないかなと思った。(この時点では)

コリニアアンテナ作製 6
1つ前の記事でdump1090-faのWeb-UIの画像を上げたが、それだとカバレッジは表示できないっぽいのでVirtual Radarでdump1090-faからデータを取るようにして1日放置した。つまりデータ取り始めてから約24時間で収集したカバレッジ。灰色のカバレッジが4万ft、青色のカバレッジが3万ft。
上の画像では何故か全ての飛行機がGo West。これは珍しくなく頻発する。東行きの飛行機はいないのかしら?(東行きの航路がカバレッジ外の伊勢湾の方みたい)
ところで、「がとらぼ」の中の人はオッサンなのでGo WestというとPet Shop Boys、お爺さんたちはVillage Peopleかな。若い人たちは誰を想像するのかしら?

カバレッジ

上の画像を見て「カバレッジ凄い狭いな」と思われた方もいるかもしれないが、「がとらぼ」の中の人の実家は内陸の「風の谷」みたいなところなので元々カバレッジの広さは期待できないところ。

カバレッジ考察 1
以前にも紹介したHeyWhatsThatというウェブサイトで任意の場所で「期待できる見晴らし」を調べることができる。上の画像は「がとらぼ」の中の人がアンテナを地上20ft(屋根の上という想定)に置いた場所からの見晴らしの可能性を示したもの。
上の画像では3万ftの見晴らしがオレンジ線、4万ftの見晴らしが青線となっている。見た通り、北側と西側は特に狭く、南東側は直線に削り取られたようにごっそり狭い。これは地形的にこれ以上はどうしようもない。山の上にアンテナを持っていけば激的に改善するのは判っているけど無理だし。
さて、24時間で取ったカバレッジをHeyWhatsThatで得た「期待できる見晴らし」を比べると、奈良県方向と長野県方向が大幅に弱いものの、北西方向は意外と健闘していると思われる。しかも、これはアンテナが地面にあって周囲を建物に囲まれてるのでおそらく反射と回折で得ている電波。それを考えるとむしろビックリなくらい。

カバレッジ考察 2
HeyWhatsThatで得られた最も遠い陸地側は長野と群馬の境にある愛宕山(実際には愛宕山からは少し離れた下仁田)だが、そこからアンテナ設置場所までの電波の飛び方も表示してみた。下の方の灰色の凸凹しているのがアンテナ設置場所と愛宕山の間の地形の断面。愛宕山といってもその山頂からは途中の地形に邪魔されて全く光(電波)は届かない。上の図は愛宕山の上空で海抜4万ftからの1090MHz(ADS-B)の電波の飛び方(屈折)をオレンジの線で示している。1090MHzは光に近いほぼ1直線。これで左の方を見るとアンテナ設置場所から15マイル(24km)ほどにそれほど背が高いわけでもないのにごちゃごちゃと山があるのが判る。これが「がとらぼ」の中の人のアンテナからの見晴らしを悪くしている原因。ちょうど10マイル地点でオレンジの線とぶつかりかけている。つまり愛宕山の上空(海抜で)4万ft以下だと邪魔されるということ。

カバレッジ考察 3
場所は愛宕山から変えずに高さを半分の2万ftにした。左のアンテナから15マイルほどはオレンジの線が全て山の中を通っている。地中は電波は通らないのでつまり電波は遮られている。同じく、中央の80マイル手前の大きな山にも遮られている。

カバレッジ考察 4
上と同じく愛宕山で高さ2万ft。ただし、電波の周波数を極超短波の1090MHzではなく短波でアマチュア無線でよく使われる14MHzにした。光や周波数の高い電波だと直進性が高いので黒い直線だが、14MHzくらい低くなると大気中での屈折が大きくなるのでオレンジ色の弧の幅が出てくる。地形がオレンジに塗られている部分は地形により電波が遮られるが上の弧は地形に邪魔されていないので愛宕山2万ftから直接電波が届くということになる。この周波数は電離層で反射した電波も届くけど、ここでは直接波だけ。地形による(特に山頂などによる)回折はこの図で考慮されているのかはド素人なのでわからない。(おそらくされていない。)

何を言いたいのかというと、「がとらぼ」の中の人の実家からは高度の低い飛行機を捉えるのは難しそうだなと。

関連記事: