callsignはやっぱ特殊な英語だなぁ

と思いきや。

ただの趣味で、航空会社のコールサインを openflights のデータを使って PowerShell に喋らせようとして、Japan Transocean Air がこんなことに:


「JAI OCEAN」を「ハイ オーシャン」と発声するのも良くわからないが、なんかそもそもヘンだ。

と思ったら。

wikipediaによれば、「JAY OCEAN」が正しいと思われる。のでめでたく:

なお、コールサインは特殊は特殊で。


Name: Air Japan
ICAO: AJX
IATA: NQ
Callsign: air japan


Name: All Nippon Airways
ICAO: ANA
IATA: NH
Callsign: all nippon


Name: Air Nippon
ICAO: ANK
IATA: EL
Callsign: ank air


Name: Hokkaido International Airlines
ICAO: ADO
IATA: HD
Callsign: air do


Name: Ibex Airlines
ICAO: IBX
IATA: FW
Callsign: ibex


Name: JAL Express
ICAO: JEX
IATA: JC
Callsign: janex


Name: JALways
ICAO: JAZ
IATA: JO
Callsign: jalways


Name: Japan Airlines
ICAO: JAL
IATA: JL
Callsign: japanair


Name: Japan Airlines Domestic
ICAO: JAL
IATA: JL
Callsign: j-bird


Name: Japan Asia Airways
ICAO: JAA
IATA: EG
Callsign: asia


Name: Japan Transocean Air
ICAO: JTA
IATA: NU
Callsign: jay ocean


Name: Star Flyer
ICAO: SFJ
IATA: 7G
Callsign: starflyer


Name: Skymark Airlines
ICAO: SKY
IATA: BC
Callsign: skymark


Name: Skynet Asia Airways
ICAO: SNJ
IATA: 6J
Callsign: newsky


Name: Japan Air System
ICAO: JAS
IATA: JD
Callsign: air system


Name: Fuji Dream Airlines
ICAO: \N
IATA: JH
Callsign: fuji dream


Name: Peach Aviation
ICAO: \N
IATA: MM
Callsign: air peach


Name: AirAsia Japan
ICAO: WAJ
IATA:
Callsign: wing asia


Star Flyer は「スターフライヤー」じゃないかと思うのだが、英語読みだと「スターフレアー」になってしまうんだろうか? これは謎。jalways も「ヤルウェイズ」と、中国人みたいな発音。なんかヘン。


なお、airlines.dat はこんなんで簡単に読めます:

 1 # -*- coding: utf-8 -*-
 2 import csv
 3 
 4 keys = ("ID", "Name", "Alias", "IATA", "ICAO", "Callsign", "Country")
 5 reader = csv.reader(open("airlines.dat", "rb"))
 6 all_active_with_callsign = {}
 7 for row in reader:
 8     if row[-1] == "N":  # not active
 9         continue
10     # \N means null.
11     # " S.A" is strange...
12     if row[-2] == "\\N" or row[-2].startswith(" S.A."):
13         continue
14     # Name
15     #     Name of the airline.
16     # Alias
17     #     Alias of the airline. For example, All Nippon Airways
18     #     is commonly known as "ANA".
19     # IATA
20     #     2-letter IATA code, if available.
21     # ICAO
22     #     3-letter ICAO code, if available.
23     # Callsign
24     #     Airline callsign.
25     # Country
26     #     Country or territory where airline is incorporated.
27     data = dict(zip(keys, map(lambda s: s.decode("iso-8859-1").strip(), row[:-1])))
28     if not data["IATA"] and not data["ICAO"]:
29         continue
30     del data["Alias"]  # i don't care
31     cntry = data["Country"]
32     if data["Callsign"] and data["Callsign"] != "\\N":
33         if cntry not in all_active_with_callsign:
34             all_active_with_callsign[cntry] = []
35         all_active_with_callsign[cntry].append(data)