# 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, "risk_level": "medium", "risk_emoji": "🟡", "airport_name": "Esenboğa 机场", "distance_km": 24.5, "warning": "内陆高原城市,昼夜温差大(可达15°C+); 激进取整效应明显。", }, "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": 49.0097, "lon": 2.5480, "icao": "LFPG", "tz_offset": 3600, "use_fahrenheit": False, "is_major": True, "risk_level": "medium", "risk_emoji": "🟡", "airport_name": "Charles de Gaulle 机场", "distance_km": 25.2, "warning": "城市热岛效应:市区比机场偏暖1-2°C。", }, "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大陆性气候差异大。", }, "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": "东河水汽可能在春季产生温差。", }, "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": "距离非常远,空旷机场夜间降温快,冬季易生大雾压制气温。", }, } ALIASES = { # English shortcuts "ank": "ankara", "lon": "london", "par": "paris", "nyc": "new york", "ny": "new york", "chi": "chicago", "dal": "dallas", "mia": "miami", "atl": "atlanta", "sea": "seattle", "tor": "toronto", "sel": "seoul", "seo": "seoul", "ba": "buenos aires", "wel": "wellington", "luc": "lucknow", "sp": "sao paulo", "mun": "munich", # Chinese names "安卡拉": "ankara", "伦敦": "london", "巴黎": "paris", "纽约": "new york", "芝加哥": "chicago", "达拉斯": "dallas", "迈阿密": "miami", "亚特兰大": "atlanta", "西雅图": "seattle", "多伦多": "toronto", "首尔": "seoul", "布宜诺斯艾利斯": "buenos aires", "惠灵顿": "wellington", "勒克瑙": "lucknow", "圣保罗": "sao paulo", "慕尼黑": "munich", }