6e6d27f323
- city_registry: settlement_source noaa → metar - weather_sources: 移除 Moscow METAR cluster 5 站配置 - country_networks: 删除 RussiaStationWebNetworkProvider 类 - 文档: Tier 4 备注更新
895 lines
32 KiB
Python
895 lines
32 KiB
Python
# PolyWeather City Registry
|
|
# A unified "Source of Truth" for all tracked cities, coordinates, ICAO codes, and risk profiles.
|
|
|
|
CITY_REGISTRY = {
|
|
"ankara": {
|
|
"name": "Ankara",
|
|
"lat": 40.1281,
|
|
"lon": 32.9951,
|
|
"icao": "LTAC",
|
|
"tz_offset": 10800,
|
|
"use_fahrenheit": False,
|
|
"is_major": False,
|
|
"fast_metar_refresh": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Esenboğa 机场",
|
|
"distance_km": 24.5,
|
|
"warning": "内陆高原城市,昼夜温差大(可达15°C+); 激进取整效应明显。",
|
|
},
|
|
"istanbul": {
|
|
"name": "Istanbul",
|
|
"lat": 41.2749,
|
|
"lon": 28.7323,
|
|
"icao": "LTFM",
|
|
"settlement_source": "noaa",
|
|
"settlement_station_code": "LTFM",
|
|
"settlement_station_label": "Istanbul Airport",
|
|
"tz_offset": 10800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"fast_metar_refresh": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Istanbul Airport",
|
|
"distance_km": 34.0,
|
|
"warning": "市场现按 NOAA LTFM 整度°C口径结算;以 weather.gov Temp 列当天最终完成质控后的最高整度摄氏值为准。",
|
|
},
|
|
"moscow": {
|
|
"name": "Moscow",
|
|
"lat": 55.5915,
|
|
"lon": 37.2615,
|
|
"icao": "UUWW",
|
|
"settlement_source": "metar",
|
|
"settlement_station_code": "UUWW",
|
|
"settlement_station_label": "Vnukovo International Airport",
|
|
"tz_offset": 10800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Vnukovo International Airport",
|
|
"distance_km": 29.0,
|
|
"warning": "仅 UUWW METAR 单站;无实时国家级站网,看日内趋势时需注意报间相对稳定但更新频率较低。",
|
|
},
|
|
"london": {
|
|
"name": "London",
|
|
"lat": 51.5048,
|
|
"lon": 0.0522,
|
|
"icao": "EGLC",
|
|
"tz_offset": 0,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "London City 机场",
|
|
"distance_km": 12.7,
|
|
"warning": "泰晤士河局部微气候影响。",
|
|
},
|
|
"paris": {
|
|
"name": "Paris",
|
|
"lat": 48.9694,
|
|
"lon": 2.4414,
|
|
"icao": "LFPB",
|
|
"settlement_source": "aeroweb",
|
|
"settlement_station_code": "LFPB",
|
|
"settlement_station_label": "Paris Le Bourget (AEROWEB)",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/fr/bonneuil-en-france/LFPB",
|
|
"tz_offset": 3600,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Paris-Le Bourget 机场",
|
|
"distance_km": 12.0,
|
|
"warning": "巴黎市场现按 Le Bourget 机场 METAR / LFPB 历史记录锚定;市区热岛与机场北侧低云可能造成偏差。",
|
|
},
|
|
"seoul": {
|
|
"name": "Seoul",
|
|
"lat": 37.4602,
|
|
"lon": 126.4407,
|
|
"icao": "RKSI",
|
|
"tz_offset": 32400,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "high",
|
|
"risk_emoji": "🔴",
|
|
"airport_name": "仁川国际机场",
|
|
"distance_km": 48.8,
|
|
"warning": "距离太远,海洋性vs大陆性气候差异大。",
|
|
},
|
|
"busan": {
|
|
"name": "Busan",
|
|
"lat": 35.1795,
|
|
"lon": 128.9382,
|
|
"icao": "RKPK",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "RKPK",
|
|
"settlement_station_label": "Busan/Gimhae International Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/kr/busan/RKPK",
|
|
"tz_offset": 32400,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "金海国际机场",
|
|
"distance_km": 14.0,
|
|
"warning": "市场现按 Wunderground 金海国际机场站整度°C口径结算;海风与沿海云量会影响午后峰值。",
|
|
},
|
|
"hong kong": {
|
|
"name": "Hong Kong",
|
|
"lat": 22.3019,
|
|
"lon": 114.1742,
|
|
"icao": "VHHH",
|
|
"settlement_source": "hko",
|
|
"settlement_station_code": "HKO",
|
|
"settlement_station_label": "HK Observatory",
|
|
"settlement_station_candidates": ["HK Observatory", "Hong Kong Observatory"],
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "香港天文台总部",
|
|
"distance_km": 2.0,
|
|
"warning": "海风与地形共同作用,午后对流触发后温度回落可能偏快。",
|
|
},
|
|
"shenzhen": {
|
|
"name": "Shenzhen",
|
|
"lat": 22.4686,
|
|
"lon": 113.9970,
|
|
"icao": "LFS",
|
|
"settlement_source": "hko",
|
|
"settlement_station_code": "LFS",
|
|
"settlement_station_label": "Shenzhen (HKO)",
|
|
"settlement_station_candidates": ["Lau Fau Shan"],
|
|
"disable_aviationweather": True,
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "深圳(HKO 天文台站)",
|
|
"distance_km": 0.0,
|
|
"warning": "深圳温度市场结算按香港天文台(HKO)站口径,通过流浮山分钟级观测。非机场 METAR,不可与宝安机场 ZGSZ/VHHH 报文混用。",
|
|
},
|
|
"taipei": {
|
|
"name": "Taipei",
|
|
"lat": 25.0377,
|
|
"lon": 121.5149,
|
|
"icao": "RCSS",
|
|
"settlement_source": "cwa",
|
|
"settlement_station_code": "466920",
|
|
"settlement_station_label": "中央气象署台北站",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "中央气象署台北站",
|
|
"distance_km": 0.0,
|
|
"warning": "结算按交通部中央气象署台北站口径,不应混用松山机场 METAR 作为结算主源。",
|
|
},
|
|
"shanghai": {
|
|
"name": "Shanghai",
|
|
"lat": 31.1434,
|
|
"lon": 121.8052,
|
|
"icao": "ZSPD",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "浦东国际机场",
|
|
"distance_km": 33.0,
|
|
"warning": "沿海平流与城市热岛叠加,午后最高温落点易出现1-2°C偏差。",
|
|
},
|
|
"singapore": {
|
|
"name": "Singapore",
|
|
"lat": 1.3644,
|
|
"lon": 103.9915,
|
|
"icao": "WSSS",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "樟宜机场",
|
|
"distance_km": 17.5,
|
|
"warning": "全年温度振幅较小,主要受午后阵雨时段影响。",
|
|
},
|
|
"kuala lumpur": {
|
|
"name": "Kuala Lumpur",
|
|
"lat": 2.7456,
|
|
"lon": 101.7072,
|
|
"icao": "WMKK",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "WMKK",
|
|
"settlement_station_label": "Kuala Lumpur International Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/my/sepang-district/WMKK",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "吉隆坡国际机场",
|
|
"distance_km": 45.0,
|
|
"warning": "市场现按 Wunderground 吉隆坡国际机场站整度°C口径结算;午后对流和热带湿热会让峰值窗口偏短。",
|
|
},
|
|
"jakarta": {
|
|
"name": "Jakarta",
|
|
"lat": -6.2666,
|
|
"lon": 106.8910,
|
|
"icao": "WIHH",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "WIHH",
|
|
"settlement_station_label": "Jakarta/Halim Perdanakusuma Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/id/jakarta/WIHH",
|
|
"tz_offset": 25200,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Halim Perdanakusuma Airport",
|
|
"distance_km": 12.0,
|
|
"warning": "市场现按 Wunderground Halim 机场站整度°C口径结算;热带午后阵雨常在峰值前后快速压制气温。",
|
|
},
|
|
"manila": {
|
|
"name": "Manila",
|
|
"lat": 14.5086,
|
|
"lon": 121.0198,
|
|
"icao": "RPLL",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "RPLL",
|
|
"settlement_station_label": "Manila/Ninoy Aquino International Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/ph/manila/RPLL",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "尼诺伊·阿基诺国际机场",
|
|
"distance_km": 10.0,
|
|
"warning": "市场现按 Wunderground 尼诺伊·阿基诺国际机场站整度°C口径结算;海风、湿热与午后对流会压缩日最高温窗口。",
|
|
},
|
|
"karachi": {
|
|
"name": "Karachi",
|
|
"lat": 24.9065,
|
|
"lon": 67.1608,
|
|
"icao": "OPKC",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "OPKC",
|
|
"settlement_station_label": "Karachi/Jinnah International Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/pk/karachi/OPKC",
|
|
"tz_offset": 18000,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "真纳国际机场",
|
|
"distance_km": 15.0,
|
|
"min_plausible_metar_temp_c": 5.0,
|
|
"warning": "市场现按 Wunderground 真纳国际机场站整度°C口径结算;海风锋、干热输送与尘霾会影响峰值兑现时间。",
|
|
},
|
|
"tokyo": {
|
|
"name": "Tokyo",
|
|
"lat": 35.5523,
|
|
"lon": 139.7798,
|
|
"icao": "RJTT",
|
|
"tz_offset": 32400,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "羽田机场",
|
|
"distance_km": 15.0,
|
|
"warning": "湾风与热岛效应并存,日最高温时点有时会后移。",
|
|
},
|
|
"tel aviv": {
|
|
"name": "Tel Aviv",
|
|
"lat": 32.0114,
|
|
"lon": 34.8867,
|
|
"icao": "LLBG",
|
|
"tz_offset": 7200,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Ben Gurion 机场",
|
|
"distance_km": 14.8,
|
|
"warning": "海陆风转换明显,午后海风可压制升温,最高温时点可能后移。",
|
|
"settlement_source": "ims",
|
|
"settlement_station_code": "225",
|
|
"settlement_station_label": "Lod Airport",
|
|
},
|
|
"toronto": {
|
|
"name": "Toronto",
|
|
"lat": 43.6777,
|
|
"lon": -79.6248,
|
|
"icao": "CYYZ",
|
|
"tz_offset": -18000,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "Pearson 国际机场",
|
|
"distance_km": 19.6,
|
|
"warning": "冬季湖效应偶尔导致局部强降温。",
|
|
},
|
|
"buenos aires": {
|
|
"name": "Buenos Aires",
|
|
"lat": -34.8222,
|
|
"lon": -58.5358,
|
|
"icao": "SAEZ",
|
|
"tz_offset": -10800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Ezeiza 国际机场",
|
|
"distance_km": 28.1,
|
|
"warning": "夏天城区可比郊区高2-3°C。",
|
|
},
|
|
"wellington": {
|
|
"name": "Wellington",
|
|
"lat": -41.3272,
|
|
"lon": 174.8053,
|
|
"icao": "NZWN",
|
|
"tz_offset": 46800,
|
|
"use_fahrenheit": False,
|
|
"is_major": False,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "惠灵顿国际机场",
|
|
"distance_km": 5.5,
|
|
"warning": "风大影响体感,但温度测量偏差小。",
|
|
},
|
|
"new york": {
|
|
"name": "New York",
|
|
"lat": 40.7769,
|
|
"lon": -73.8740,
|
|
"icao": "KLGA",
|
|
"tz_offset": -18000,
|
|
"use_fahrenheit": True,
|
|
"is_major": True,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "LaGuardia 机场",
|
|
"distance_km": 14.5,
|
|
"warning": "东河水汽可能在春季产生温差。",
|
|
},
|
|
"los angeles": {
|
|
"name": "Los Angeles",
|
|
"lat": 33.9416,
|
|
"lon": -118.4085,
|
|
"icao": "KLAX",
|
|
"tz_offset": -28800,
|
|
"use_fahrenheit": True,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Los Angeles International Airport",
|
|
"distance_km": 29.0,
|
|
"warning": "海风与沿海层云对午后升温影响明显,LAX 口径常明显低于内陆城区。",
|
|
},
|
|
"san francisco": {
|
|
"name": "San Francisco",
|
|
"lat": 37.6213,
|
|
"lon": -122.3790,
|
|
"icao": "KSFO",
|
|
"tz_offset": -28800,
|
|
"use_fahrenheit": True,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "San Francisco International Airport",
|
|
"distance_km": 20.0,
|
|
"warning": "海湾冷空气和平流雾常压制机场升温,SFO 与市区体感差异可快速放大。",
|
|
},
|
|
"denver": {
|
|
"name": "Denver",
|
|
"display_name": "Denver",
|
|
"lat": 39.7017,
|
|
"lon": -104.7518,
|
|
"icao": "KBKF",
|
|
"tz_offset": -25200,
|
|
"use_fahrenheit": True,
|
|
"is_major": False,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Buckley Space Force Base",
|
|
"distance_km": 3.5,
|
|
"warning": "丹佛高原地形下日照与下沉增温切换快,Buckley 与 Denver 核心区午后峰值常有明显错位。",
|
|
},
|
|
"austin": {
|
|
"name": "Austin",
|
|
"lat": 30.1945,
|
|
"lon": -97.6699,
|
|
"icao": "KAUS",
|
|
"tz_offset": -21600,
|
|
"use_fahrenheit": True,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Austin-Bergstrom International Airport",
|
|
"distance_km": 12.0,
|
|
"warning": "德州中部午后混合层增强快,干热与局地对流会让峰值窗口前后偏差放大。",
|
|
},
|
|
"houston": {
|
|
"name": "Houston",
|
|
"lat": 29.6454,
|
|
"lon": -95.2789,
|
|
"icao": "KHOU",
|
|
"tz_offset": -21600,
|
|
"use_fahrenheit": True,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "William P. Hobby Airport",
|
|
"distance_km": 12.0,
|
|
"warning": "墨西哥湾水汽与海风回流显著,湿热条件下机场白天升温节奏容易偏慢。",
|
|
},
|
|
"mexico city": {
|
|
"name": "Mexico City",
|
|
"lat": 19.4363,
|
|
"lon": -99.0721,
|
|
"icao": "MMMX",
|
|
"tz_offset": -21600,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "high",
|
|
"risk_emoji": "🔴",
|
|
"airport_name": "Benito Juárez International Airport",
|
|
"distance_km": 6.5,
|
|
"warning": "高海拔盆地城市,辐射增温与午后对流并存,峰值前后 1-2°C 偏差较常见。",
|
|
},
|
|
"chicago": {
|
|
"name": "Chicago",
|
|
"lat": 41.9742,
|
|
"lon": -87.9073,
|
|
"icao": "KORD",
|
|
"tz_offset": -21600,
|
|
"use_fahrenheit": True,
|
|
"is_major": False,
|
|
"risk_level": "high",
|
|
"risk_emoji": "🔴",
|
|
"airport_name": "O'Hare 国际机场",
|
|
"distance_km": 25.3,
|
|
"warning": "密歇根湖效应:湖边vs内陆可差10°F+。",
|
|
},
|
|
"dallas": {
|
|
"name": "Dallas",
|
|
"lat": 32.8471,
|
|
"lon": -96.8518,
|
|
"icao": "KDAL",
|
|
"tz_offset": -21600,
|
|
"use_fahrenheit": True,
|
|
"is_major": False,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Dallas Love Field 机场",
|
|
"distance_km": 11.2,
|
|
"warning": "城市热岛效应在夏季午后会使温度略高于郊区。",
|
|
},
|
|
"miami": {
|
|
"name": "Miami",
|
|
"lat": 25.7959,
|
|
"lon": -80.2870,
|
|
"icao": "KMIA",
|
|
"tz_offset": -18000,
|
|
"use_fahrenheit": True,
|
|
"is_major": False,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "Miami 国际机场",
|
|
"distance_km": 10.3,
|
|
"warning": "温差较小,数据稳定。",
|
|
},
|
|
"atlanta": {
|
|
"name": "Atlanta",
|
|
"lat": 33.6407,
|
|
"lon": -84.4277,
|
|
"icao": "KATL",
|
|
"tz_offset": -18000,
|
|
"use_fahrenheit": True,
|
|
"is_major": False,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "Hartsfield-Jackson 机场",
|
|
"distance_km": 12.6,
|
|
"warning": "数据较准。",
|
|
},
|
|
"seattle": {
|
|
"name": "Seattle",
|
|
"lat": 47.4502,
|
|
"lon": -122.3088,
|
|
"icao": "KSEA",
|
|
"tz_offset": -28800,
|
|
"use_fahrenheit": True,
|
|
"is_major": False,
|
|
"risk_level": "low",
|
|
"risk_emoji": "🟢",
|
|
"airport_name": "Sea-Tac 国际机场",
|
|
"distance_km": 17.4,
|
|
"warning": "微气候差异存在但较小。",
|
|
},
|
|
"lucknow": {
|
|
"name": "Lucknow",
|
|
"lat": 26.7606,
|
|
"lon": 80.8893,
|
|
"icao": "VILK",
|
|
"tz_offset": 19800,
|
|
"use_fahrenheit": False,
|
|
"is_major": False,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Chaudhary Charan Singh 国际机场",
|
|
"distance_km": 14.0,
|
|
"warning": "印度北方热岛效应,夏季午后机场反馈略低于市区。",
|
|
},
|
|
"sao paulo": {
|
|
"name": "São Paulo",
|
|
"lat": -23.4356,
|
|
"lon": -46.4731,
|
|
"icao": "SBGR",
|
|
"tz_offset": -10800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "high",
|
|
"risk_emoji": "🔴",
|
|
"airport_name": "São Paulo/Guarulhos 机场",
|
|
"distance_km": 25.0,
|
|
"warning": "距离远且海拔有差异,局部降雨温差极大。",
|
|
},
|
|
"munich": {
|
|
"name": "Munich",
|
|
"lat": 48.3538,
|
|
"lon": 11.7861,
|
|
"icao": "EDDM",
|
|
"tz_offset": 3600,
|
|
"use_fahrenheit": False,
|
|
"is_major": False,
|
|
"risk_level": "high",
|
|
"risk_emoji": "🔴",
|
|
"airport_name": "Munich 机场",
|
|
"distance_km": 28.5,
|
|
"warning": "距离非常远,空旷机场夜间降温快,冬季易生大雾压制气温。",
|
|
},
|
|
"milan": {
|
|
"name": "Milan",
|
|
"lat": 45.6306,
|
|
"lon": 8.7281,
|
|
"icao": "LIMC",
|
|
"settlement_source": "metar",
|
|
"tz_offset": 3600,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "马尔彭萨机场",
|
|
"distance_km": 49.0,
|
|
"warning": "机场距市区较远,午后峰值与夜间降温节奏需优先看机场站。",
|
|
},
|
|
"warsaw": {
|
|
"name": "Warsaw",
|
|
"lat": 52.1657,
|
|
"lon": 20.9671,
|
|
"icao": "EPWA",
|
|
"settlement_source": "metar",
|
|
"tz_offset": 3600,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "肖邦机场",
|
|
"distance_km": 10.0,
|
|
"warning": "平原地形下辐射冷却显著,清晨与夜间温度回落可能偏快。",
|
|
},
|
|
"helsinki": {
|
|
"name": "Helsinki",
|
|
"lat": 60.3172,
|
|
"lon": 24.9633,
|
|
"icao": "EFHK",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "EFHK",
|
|
"settlement_station_label": "Helsinki Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/fi/vantaa/EFHK",
|
|
"tz_offset": 7200,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "赫尔辛基机场",
|
|
"distance_km": 17.0,
|
|
"warning": "市场现按 Wunderground 赫尔辛基机场站整度°C口径结算;高纬度日照变化快,冷平流会明显影响日峰值。",
|
|
},
|
|
"amsterdam": {
|
|
"name": "Amsterdam",
|
|
"lat": 52.3086,
|
|
"lon": 4.7639,
|
|
"icao": "EHAM",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "EHAM",
|
|
"settlement_station_label": "Amsterdam Airport Schiphol Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/nl/schiphol/EHAM",
|
|
"tz_offset": 3600,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "阿姆斯特丹史基浦机场",
|
|
"distance_km": 17.0,
|
|
"warning": "市场现按 Wunderground 史基浦机场站整度°C口径结算;北海海风和平流层云容易限制午后升温。",
|
|
},
|
|
"madrid": {
|
|
"name": "Madrid",
|
|
"lat": 40.4722,
|
|
"lon": -3.5608,
|
|
"icao": "LEMD",
|
|
"settlement_source": "metar",
|
|
"tz_offset": 3600,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "阿道弗·苏亚雷斯马德里-巴拉哈斯机场",
|
|
"distance_km": 13.0,
|
|
"warning": "机场位于东北侧开阔区,午后混合层增强时与核心城区体感温度可能出现偏差。",
|
|
},
|
|
|
|
"chengdu": {
|
|
"name": "Chengdu",
|
|
"lat": 30.5785,
|
|
"lon": 103.9471,
|
|
"icao": "ZUUU",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "成都双流国际机场",
|
|
"distance_km": 16.0,
|
|
"warning": "盆地地形,夜间降温较慢,多云雾影响日照升温。",
|
|
},
|
|
"chongqing": {
|
|
"name": "Chongqing",
|
|
"lat": 29.7196,
|
|
"lon": 106.6416,
|
|
"icao": "ZUCK",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "high",
|
|
"risk_emoji": "🔴",
|
|
"airport_name": "重庆江北国际机场",
|
|
"distance_km": 19.0,
|
|
"warning": "四大火炉之一,夏季持续高温,夜间温度偏高,湿度大。",
|
|
},
|
|
"guangzhou": {
|
|
"name": "Guangzhou",
|
|
"lat": 23.3924,
|
|
"lon": 113.2988,
|
|
"icao": "ZGGG",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "ZGGG",
|
|
"settlement_station_label": "Guangzhou Baiyun International Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/cn/guangzhou/ZGGG",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "广州白云国际机场",
|
|
"distance_km": 28.0,
|
|
"warning": "市场现按 Wunderground 广州白云国际机场站整度°C口径结算;珠三角海陆风与午后对流会让峰值兑现时间出现摇摆。",
|
|
},
|
|
"qingdao": {
|
|
"name": "Qingdao",
|
|
"lat": 36.3620,
|
|
"lon": 120.0882,
|
|
"icao": "ZSQD",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "ZSQD",
|
|
"settlement_station_label": "Qingdao Jiaodong International Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/cn/qingdao/ZSQD",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "青岛胶东国际机场",
|
|
"distance_km": 39.0,
|
|
"warning": "市场现按 Wunderground 青岛胶东国际机场站整度°C口径结算;沿海海风、低云和海雾会影响日内升温效率。",
|
|
},
|
|
"beijing": {
|
|
"name": "Beijing",
|
|
"lat": 40.0801,
|
|
"lon": 116.5846,
|
|
"icao": "ZBAA",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "北京首都国际机场",
|
|
"distance_km": 25.0,
|
|
"warning": "北方内陆,夏季干热,冬季寒冷,春秋易受风沙影响。",
|
|
},
|
|
"wuhan": {
|
|
"name": "Wuhan",
|
|
"lat": 30.7838,
|
|
"lon": 114.2081,
|
|
"icao": "ZHHH",
|
|
"tz_offset": 28800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "high",
|
|
"risk_emoji": "🔴",
|
|
"airport_name": "武汉天河国际机场",
|
|
"distance_km": 26.0,
|
|
"warning": "江汉平原,水汽充足,夏季常现长时闷热高温。",
|
|
},
|
|
"panama city": {
|
|
"name": "Panama City",
|
|
"lat": 8.9733,
|
|
"lon": -79.5556,
|
|
"icao": "MPMG",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "MPMG",
|
|
"settlement_station_label": "Panama City/Marcos A. Gelabert Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/pa/panama-city/MPMG",
|
|
"tz_offset": -18000,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "Marcos A. Gelabert Airport",
|
|
"distance_km": 6.0,
|
|
"warning": "市场现按 Wunderground Marcos A. Gelabert 机场站整度°C口径结算;热带对流常让峰值在午后被快速截断。",
|
|
},
|
|
"cape town": {
|
|
"name": "Cape Town",
|
|
"lat": -33.9696,
|
|
"lon": 18.5972,
|
|
"icao": "FACT",
|
|
"settlement_source": "wunderground",
|
|
"settlement_station_code": "FACT",
|
|
"settlement_station_label": "Cape Town International Airport Station",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/za/matroosfontein/FACT",
|
|
"tz_offset": 7200,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "开普敦国际机场",
|
|
"distance_km": 20.0,
|
|
"warning": "市场现按 Wunderground 开普敦国际机场站整度°C口径结算;海风和平流云会显著影响午后升温节奏。",
|
|
},
|
|
"jeddah": {
|
|
"name": "Jeddah",
|
|
"lat": 21.6702,
|
|
"lon": 39.1525,
|
|
"icao": "OEJN",
|
|
"settlement_source": "ncm",
|
|
"settlement_station_code": "OEJN",
|
|
"settlement_station_label": "Jeddah King Abdulaziz Intl (NCM)",
|
|
"settlement_url": "https://www.wunderground.com/history/daily/sa/jeddah/OEJN",
|
|
"tz_offset": 10800,
|
|
"use_fahrenheit": False,
|
|
"is_major": True,
|
|
"risk_level": "medium",
|
|
"risk_emoji": "🟡",
|
|
"airport_name": "阿卜杜勒阿齐兹国王国际机场",
|
|
"distance_km": 18.0,
|
|
"warning": "市场现按 Wunderground 吉达阿卜杜勒阿齐兹国王国际机场站整度°C口径结算;干热背景下海风与沙尘输送会改变峰值兑现时点。",
|
|
},
|
|
}
|
|
|
|
ALIASES = {
|
|
# English shortcuts
|
|
"ank": "ankara", "ist": "istanbul", "ltfm": "istanbul", "mos": "moscow", "mow": "moscow", "uuww": "moscow", "vnukovo": "moscow", "lon": "london", "par": "paris",
|
|
"nyc": "new york", "ny": "new york", "chi": "chicago",
|
|
"la": "los angeles", "lax": "los angeles", "losangeles": "los angeles",
|
|
"sf": "san francisco", "sfo": "san francisco", "sanfrancisco": "san francisco",
|
|
"aur": "denver", "denver": "denver", "buckley": "denver", "kbkf": "denver", "aurora": "denver",
|
|
"aus": "austin", "kaus": "austin",
|
|
"hou": "houston", "khou": "houston", "hobby": "houston",
|
|
"cdmx": "mexico city", "mexicocity": "mexico city", "mmmx": "mexico city",
|
|
"dal": "dallas", "mia": "miami", "atl": "atlanta",
|
|
"sea": "seattle", "tor": "toronto", "sel": "seoul",
|
|
"seo": "seoul", "hkg": "hong kong", "hk": "hong kong",
|
|
"lfs": "shenzhen", "laufaushan": "shenzhen", "lau fau shan": "shenzhen",
|
|
"tpe": "taipei", "tp": "taipei", "taipei": "taipei",
|
|
"pus": "busan", "bus": "busan", "rkpk": "busan",
|
|
"sha": "shanghai", "sh": "shanghai", "sin": "singapore",
|
|
"sg": "singapore", "tok": "tokyo", "tyo": "tokyo",
|
|
"kul": "kuala lumpur", "wmkk": "kuala lumpur", "sepang": "kuala lumpur",
|
|
"jkt": "jakarta", "wihh": "jakarta", "halim": "jakarta",
|
|
"mnl": "manila", "manila": "manila", "rpll": "manila",
|
|
"khi": "karachi", "karachi": "karachi", "opkc": "karachi", "jinnah": "karachi",
|
|
"hel": "helsinki", "efhk": "helsinki", "vantaa": "helsinki",
|
|
"ams": "amsterdam", "eham": "amsterdam", "schiphol": "amsterdam",
|
|
"pty": "panama city", "mpmg": "panama city", "panamacity": "panama city",
|
|
"cpt": "cape town", "fact": "cape town", "capetown": "cape town", "matroosfontein": "cape town",
|
|
"jed": "jeddah", "oejn": "jeddah",
|
|
"tlv": "tel aviv", "telaviv": "tel aviv",
|
|
"ba": "buenos aires", "wel": "wellington",
|
|
"luc": "lucknow", "sp": "sao paulo", "mun": "munich",
|
|
"mil": "milan", "mxp": "milan", "waw": "warsaw", "war": "warsaw",
|
|
"mad": "madrid", "madrid": "madrid", "lemd": "madrid",
|
|
|
|
# Chinese names
|
|
"安卡拉": "ankara",
|
|
"伊斯坦布尔": "istanbul",
|
|
"莫斯科": "moscow",
|
|
"伦敦": "london",
|
|
"巴黎": "paris",
|
|
"纽约": "new york",
|
|
"洛杉矶": "los angeles",
|
|
"旧金山": "san francisco",
|
|
"奥罗拉": "denver",
|
|
"丹佛": "denver",
|
|
"奥斯汀": "austin",
|
|
"休斯顿": "houston",
|
|
"墨西哥城": "mexico city",
|
|
"芝加哥": "chicago",
|
|
"达拉斯": "dallas",
|
|
"迈阿密": "miami",
|
|
"亚特兰大": "atlanta",
|
|
"西雅图": "seattle",
|
|
"多伦多": "toronto",
|
|
"首尔": "seoul",
|
|
"香港": "hong kong",
|
|
"流浮山": "shenzhen",
|
|
"台北": "taipei",
|
|
"臺北": "taipei",
|
|
"釜山": "busan",
|
|
"上海": "shanghai",
|
|
"新加坡": "singapore",
|
|
"吉隆坡": "kuala lumpur",
|
|
"雅加达": "jakarta",
|
|
"雅加達": "jakarta",
|
|
"马尼拉": "manila",
|
|
"馬尼拉": "manila",
|
|
"卡拉奇": "karachi",
|
|
"东京": "tokyo",
|
|
"東京": "tokyo",
|
|
"特拉维夫": "tel aviv",
|
|
"布宜诺斯艾利斯": "buenos aires",
|
|
"惠灵顿": "wellington",
|
|
"勒克瑙": "lucknow",
|
|
"圣保罗": "sao paulo",
|
|
"慕尼黑": "munich",
|
|
"米兰": "milan",
|
|
"米蘭": "milan",
|
|
"华沙": "warsaw",
|
|
"華沙": "warsaw",
|
|
"赫尔辛基": "helsinki",
|
|
"赫爾辛基": "helsinki",
|
|
"阿姆斯特丹": "amsterdam",
|
|
"巴拿马城": "panama city",
|
|
"开普敦": "cape town",
|
|
"開普敦": "cape town",
|
|
"吉达": "jeddah",
|
|
"吉達": "jeddah",
|
|
"马德里": "madrid",
|
|
"馬德里": "madrid",
|
|
"ctu": "chengdu", "cd": "chengdu",
|
|
"ckg": "chongqing", "cq": "chongqing",
|
|
"szx": "shenzhen", "sz": "shenzhen",
|
|
"can": "guangzhou", "gz": "guangzhou", "zggg": "guangzhou",
|
|
"tao": "qingdao", "qdo": "qingdao", "qingdao": "qingdao", "zsqd": "qingdao",
|
|
"pek": "beijing", "bjs": "beijing", "bj": "beijing",
|
|
"wuh": "wuhan", "wh": "wuhan",
|
|
"成都": "chengdu",
|
|
"重庆": "chongqing",
|
|
"深圳": "shenzhen",
|
|
"广州": "guangzhou",
|
|
"青岛": "qingdao",
|
|
"青島": "qingdao",
|
|
"青岛胶东": "qingdao",
|
|
"青島膠東": "qingdao",
|
|
"北京": "beijing",
|
|
"武汉": "wuhan",
|
|
}
|