Rを使ってAIPから全国の滑走路の情報(PAPI & GP)を入手する

 アプリ:PAPI改修のためにAIPから全国の滑走路の情報を調べる必要が出てきました。
作業は全国の滑走路のPAPIの位置やGPの位置、ILSの設置状況を全国の滑走路毎にEXCELの表にするイメージです。
これによって、アプリPAPIで手入力していた情報が、滑走路を選択するだけで一発で入力されることになります。しかし、情報量は膨大です。
毎日少しずつ手作業で調べるのはつらいし、どうしようと思っていたところ以前試したRを使ったスクレイピングを実践してみようと考えました。

AIPはIDとパスワードを入力する必要がありますので、少しやっかいですが下記を参考にしました。
https://qiita.com/hoxo_m/items/59bedbf7e4c7c99cbf5a

試しにRORAの運用時間の表(RORA AD 2.3  OPERATIONAL HOURS)を表示させてみます。
Rのコード(核心部分)は以下のようになっています。

login_page <- html_session(“https://aisjapan.mlit.go.jp/Login.do”)
login_form <- html_form(login_page)[[1]] %>%
set_values(userID=”*****”, password=”*****”)
session <- submit_form(login_page, login_form)

session %>%
jump_to(“https://aisjapan.mlit.go.jp/html/AIP/html/20210617/eAIP/20210617/JP-AD-2-RORA-en-JP.html#RORA-AD-2.1”) %>%
html_node(xpath = ‘/html/body/div[2]/div/div[3]/table’) %>%
html_table

上記の結果は

これはAIPの下表の内容そのままです。

ちなみに黄色いアンダーラインマーカーの所にfull Pathを指定するのがポイントです。
Copy full XPath ですね。


この試行で光が差してきました。
PAPIの位置の情報は各空港のAD2.14表にあるので、これを全空港に対してループを回して自動取得すればいいのです。


https://www.koji-ito.com/?wpdmpro=runway_papi3_table-csv

試行錯誤しつつ(詳細は省きます)、PAPIが3°に設定されている空港に限定したCSV形式のテーブルを作成できました。上記がそれです。ちなみにテーブルの冒頭は下記のようになっております。

ID_RWYairport_idairport_nameNAME_RWYID_NAME_RWYRWY_XXpapi_anglepapi_locationpapi_mehtILSGP_mRef_Datum_ftGP_angleRWY_trueRWY_lengthRWY_widthTH_latTH_lonTH_elevationMAG_VAR
RORA01RORA粟国粟国01RORA粟国0113183.728FALSENANANA4.888002526.3521127.1424445
RORA19RORA粟国粟国19RORA粟国19193142.728FALSENANANA184.888002526.35469127.1426265
RJSK10RJSK秋田秋田10RJSK秋田1010342074FALSENANANA96.6125006039.3701140.1215288.58
RJSK28RJSK秋田秋田28RJSK秋田2828342966TRUE351543276.6125006039.36517140.1359313.68
RJDA13RJDA天草天草13RJDA天草13133133.224FALSENANANA124.5510003032.29062130.09163307
RJDA31RJDA天草天草31RJDA天草31313133.224FALSENANANA304.5510003032.28478130.09483307
RJKA03RJKA奄美奄美03RJKA奄美033341561TRUE33354325.75200045NANA275
RJKA21RJKA奄美奄美21RJKA奄美2121337461FALSENANANA205.75200045NANA145
RJSA06RJSA青森青森06RJSA青森066342374FALSENANANA51.9130006040.43298140.40296479
RJSA24RJSA青森青森24RJSA青森2424344066TRUE334543231.9130006040.44298140.42096649
RJEC16RJEC旭川(Civil)旭川(Civil)16RJEC旭川(Civil)16163400.274FALSENANANA154.1725006043.4051142.26276609
RJEC34RJEC旭川(Civil)旭川(Civil)34RJEC旭川(Civil)34343499.266TRUE368543334.1725006043.39381142.27167219
RJTF35RJTF調布調布35RJTF調布353539818FALSENANANA343.28003035.40051139.31451377
RJGG18RJGG中部国際中部国際18RJGG中部国際1818341666TRUE311.554316935006034.5226136.4806156.58
RJGG36RJGG中部国際中部国際36RJGG中部国際3636341666TRUE311.553334935006034.50346136.4833156.58

なお、滑走路の緯度経度は~度~分~秒の形式のようです。
例えば一番先頭の粟国RWY01のTH_lat 26.3521 は北緯26度25分21秒です。
通常の形式にする為には26+35/60+21/3600のように計算する必要があります。


これが出来あがりますとアプリ「PAPI」へのPAPI位置やGPの位置などの手入力が不要になるのです。
次はアプリPAPIの改修に取りかかろうと思います。

 最後にPAPIが3°以外の滑走路も含めたテーブルも掲載しましょう。(上記より列が少ないのですがご容赦ください)
下記がそれですが、統計にしてみますと結構面白いものです。

https://www.koji-ito.com/?wpdmpro=papi%e3%81%a8glidepath%e3%81%ae%e6%83%85%e5%a0%b1%e3%83%86%e3%83%bc%e3%83%96%e3%83%ab

追記

2021/8/19 にこのデータを使ってアプリを一新しました。
効果は抜群。
スクレイピング技術の有効性を改めて認識しました。