Merge pull request #233 from AdenKoperczak/update_station_locations

Updated radar locations and added elevation data in radar_sites.json using NOAA's HOMR
This commit is contained in:
Dan Paulat 2024-06-29 19:19:31 -05:00 committed by GitHub
commit a0b04b0e64
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 525 additions and 205 deletions

View file

@ -1,208 +1,208 @@
[
{ "type": "wsr88d", "id": "RODN", "lat": 26.307796, "lon": 127.903422, "country": "JPN", "state": "OKI", "place": "Kadena Air Base", "tz": "Asia/Tokyo" },
{ "type": "wsr88d", "id": "RKSG", "lat": 37.207652, "lon": 127.285614, "country": "KOR", "state": "41", "place": "Camp Humphreys", "tz": "Asia/Seoul" },
{ "type": "wsr88d", "id": "RKJK", "lat": 35.92417, "lon": 126.62222, "country": "KOR", "state": "45", "place": "Kunsan Air Base", "tz": "Asia/Seoul" },
{ "type": "wsr88d", "id": "PABC", "lat": 60.791987, "lon": -161.876539, "country": "USA", "state": "AK", "place": "Bethel", "tz": "America/Anchorage" },
{ "type": "wsr88d", "id": "PAPD", "lat": 65.0351238, "lon": -147.5014222, "country": "USA", "state": "AK", "place": "Fairbanks/Pedro Dome", "tz": "America/Anchorage" },
{ "type": "wsr88d", "id": "PAHG", "lat": 60.6156335, "lon": -151.2832296, "country": "USA", "state": "AK", "place": "Kenai", "tz": "America/Anchorage" },
{ "type": "wsr88d", "id": "PAKC", "lat": 58.6794558, "lon": -156.6293335, "country": "USA", "state": "AK", "place": "King Salmon", "tz": "America/Anchorage" },
{ "type": "wsr88d", "id": "PAIH", "lat": 59.46194, "lon": -146.30111, "country": "USA", "state": "AK", "place": "Middleton Island", "tz": "America/Anchorage" },
{ "type": "wsr88d", "id": "PAEC", "lat": 64.5114973, "lon": -165.2949071, "country": "USA", "state": "AK", "place": "Nome", "tz": "America/Nome" },
{ "type": "wsr88d", "id": "PACG", "lat": 56.85214, "lon": -135.552417, "country": "USA", "state": "AK", "place": "Sitka/Biorka Island", "tz": "America/Sitka" },
{ "type": "wsr88d", "id": "KBMX", "lat": 33.1722806, "lon": -86.7698425, "country": "USA", "state": "AL", "place": "Birmingham", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KEOX", "lat": 31.4605622, "lon": -85.4592401, "country": "USA", "state": "AL", "place": "Fort Rucker", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KHTX", "lat": 34.930508, "lon": -86.0837388, "country": "USA", "state": "AL", "place": "Huntsville", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMXX", "lat": 32.5366608, "lon": -85.7897848, "country": "USA", "state": "AL", "place": "Maxwell AFB", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMOB", "lat": 30.6795378, "lon": -88.2397816, "country": "USA", "state": "AL", "place": "Mobile", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KSRX", "lat": 35.2904423, "lon": -94.3619075, "country": "USA", "state": "AR", "place": "Fort Smith", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KLZK", "lat": 34.8365261, "lon": -92.2621697, "country": "USA", "state": "AR", "place": "Little Rock", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KFSX", "lat": 34.574449, "lon": -111.198367, "country": "USA", "state": "AZ", "place": "Flagstaff", "tz": "America/Phoenix" },
{ "type": "wsr88d", "id": "KIWA", "lat": 33.289111, "lon": -111.6700092, "country": "USA", "state": "AZ", "place": "Phoenix", "tz": "America/Phoenix" },
{ "type": "wsr88d", "id": "KEMX", "lat": 31.8937186, "lon": -110.6304306, "country": "USA", "state": "AZ", "place": "Tucson", "tz": "America/Phoenix" },
{ "type": "wsr88d", "id": "KYUX", "lat": 32.4953477, "lon": -114.6567214, "country": "USA", "state": "AZ", "place": "Yuma", "tz": "America/Phoenix" },
{ "type": "wsr88d", "id": "KBBX", "lat": 39.4956958, "lon": -121.6316557, "country": "USA", "state": "CA", "place": "Beale AFB", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KEYX", "lat": 35.0979358, "lon": -117.5608832, "country": "USA", "state": "CA", "place": "Edwards AFB", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KBHX", "lat": 40.4986955, "lon": -124.2918867, "country": "USA", "state": "CA", "place": "Eureka", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KVTX", "lat": 34.4116386, "lon": -119.1795641, "country": "USA", "state": "CA", "place": "Los Angeles", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KDAX", "lat": 38.5011529, "lon": -121.6778487, "country": "USA", "state": "CA", "place": "Sacramento", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KNKX", "lat": 32.9189891, "lon": -117.041814, "country": "USA", "state": "CA", "place": "San Diego", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KMUX", "lat": 37.155152, "lon": -121.8984577, "country": "USA", "state": "CA", "place": "San Francisco", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KHNX", "lat": 36.3142088, "lon": -119.6320903, "country": "USA", "state": "CA", "place": "San Joaquin Valley", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KSOX", "lat": 33.8176452, "lon": -117.6359743, "country": "USA", "state": "CA", "place": "Santa Ana Mountains", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KVBG", "lat": 34.8383137, "lon": -120.3977805, "country": "USA", "state": "CA", "place": "Vandenberg AFB", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KFTG", "lat": 39.7866156, "lon": -104.5458126, "country": "USA", "state": "CO", "place": "Denver", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KGJX", "lat": 39.0619824, "lon": -108.2137012, "country": "USA", "state": "CO", "place": "Grand Junction", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KPUX", "lat": 38.4595034, "lon": -104.1816223, "country": "USA", "state": "CO", "place": "Pueblo", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KDOX", "lat": 38.8257651, "lon": -75.4400763, "country": "USA", "state": "DE", "place": "Dover AFB", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KEVX", "lat": 30.5649908, "lon": -85.921559, "country": "USA", "state": "FL", "place": "Eglin AFB", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KJAX", "lat": 30.4846878, "lon": -81.7018917, "country": "USA", "state": "FL", "place": "Jacksonville", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KBYX", "lat": 24.5974996, "lon": -81.7032355, "country": "USA", "state": "FL", "place": "Key West", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KMLB", "lat": 28.1131808, "lon": -80.6540988, "country": "USA", "state": "FL", "place": "Melbourne", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KAMX", "lat": 25.6111275, "lon": -80.412747, "country": "USA", "state": "FL", "place": "Miami", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KTLH", "lat": 30.397568, "lon": -84.3289116, "country": "USA", "state": "FL", "place": "Tallahassee", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KTBW", "lat": 27.7054701, "lon": -82.40179, "country": "USA", "state": "FL", "place": "Tampa", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KFFC", "lat": 33.3635771, "lon": -84.565866, "country": "USA", "state": "GA", "place": "Atlanta", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KVAX", "lat": 30.8903853, "lon": -83.0019021, "country": "USA", "state": "GA", "place": "Moody AFB", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KJGX", "lat": 32.6755239, "lon": -83.3508575, "country": "USA", "state": "GA", "place": "Robins AFB", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "PGUA", "lat": 13.455965, "lon": 144.8111022, "country": "USA", "state": "GU", "place": "Andersen AFB", "tz": "Pacific/Guam" },
{ "type": "wsr88d", "id": "PHKI", "lat": 21.8938762, "lon": -159.5524585, "country": "USA", "state": "HI", "place": "Kauai", "tz": "Pacific/Honolulu" },
{ "type": "wsr88d", "id": "PHKM", "lat": 20.1254606, "lon": -155.778054, "country": "USA", "state": "HI", "place": "Kohala", "tz": "Pacific/Honolulu" },
{ "type": "wsr88d", "id": "PHMO", "lat": 21.1327531, "lon": -157.1802807, "country": "USA", "state": "HI", "place": "Molokai", "tz": "Pacific/Honolulu" },
{ "type": "wsr88d", "id": "PHWA", "lat": 19.0950155, "lon": -155.5688846, "country": "USA", "state": "HI", "place": "South Shore", "tz": "Pacific/Honolulu" },
{ "type": "wsr88d", "id": "KDVN", "lat": 41.611556, "lon": -90.5809987, "country": "USA", "state": "IA", "place": "Davenport", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KDMX", "lat": 41.7311788, "lon": -93.7229235, "country": "USA", "state": "IA", "place": "Des Moines", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KCBX", "lat": 43.4902104, "lon": -116.2360436, "country": "USA", "state": "ID", "place": "Boise", "tz": "America/Boise" },
{ "type": "wsr88d", "id": "KSFX", "lat": 43.1055967, "lon": -112.6860487, "country": "USA", "state": "ID", "place": "Pocatello/Idaho Falls", "tz": "America/Boise" },
{ "type": "wsr88d", "id": "KLOT", "lat": 41.6044264, "lon": -88.084361, "country": "USA", "state": "IL", "place": "Chicago", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KILX", "lat": 40.150544, "lon": -89.336842, "country": "USA", "state": "IL", "place": "Lincoln", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KIND", "lat": 39.7074962, "lon": -86.2803675, "country": "USA", "state": "IN", "place": "Indianapolis", "tz": "America/Indiana/Indianapolis" },
{ "type": "wsr88d", "id": "KIWX", "lat": 41.3586356, "lon": -85.7000488, "country": "USA", "state": "IN", "place": "North Webster", "tz": "America/Indiana/Indianapolis" },
{ "type": "wsr88d", "id": "KVWX", "lat": 38.2603901, "lon": -87.7246553, "country": "USA", "state": "IN", "place": "Owensville (Evansville)", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KDDC", "lat": 37.7608043, "lon": -99.9688053, "country": "USA", "state": "KS", "place": "Dodge City", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KGLD", "lat": 39.3667737, "lon": -101.7004341, "country": "USA", "state": "KS", "place": "Goodland", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KTWX", "lat": 38.996998, "lon": -96.232618, "country": "USA", "state": "KS", "place": "Topeka", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KICT", "lat": 37.6545724, "lon": -97.4431461, "country": "USA", "state": "KS", "place": "Wichita", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KHPX", "lat": 36.7368894, "lon": -87.2854328, "country": "USA", "state": "KY", "place": "Fort Campbell", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KJKL", "lat": 37.590762, "lon": -83.313039, "country": "USA", "state": "KY", "place": "Jackson", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KLVX", "lat": 37.9753058, "lon": -85.9438455, "country": "USA", "state": "KY", "place": "Louisville", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KPAH", "lat": 37.0683618, "lon": -88.7720257, "country": "USA", "state": "KY", "place": "Paducah", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KPOE", "lat": 31.1556923, "lon": -92.9762596, "country": "USA", "state": "LA", "place": "Fort Polk", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KHDC", "lat": 30.521667, "lon": -90.418333, "country": "USA", "state": "LA", "place": "New Orleans (Hammond)", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KLCH", "lat": 30.125382, "lon": -93.2161188, "country": "USA", "state": "LA", "place": "Lake Charles", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KSHV", "lat": 32.450813, "lon": -93.8412774, "country": "USA", "state": "LA", "place": "Shreveport", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KLIX", "lat": 30.3367133, "lon": -89.8256618, "country": "USA", "state": "LA", "place": "New Orleans (Slidell)", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KBOX", "lat": 41.9558919, "lon": -71.1369681, "country": "USA", "state": "MA", "place": "Boston", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KGYX", "lat": 43.8913555, "lon": -70.2565545, "country": "USA", "state": "ME", "place": "Gray/Portland", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KCBW", "lat": 46.0391944, "lon": -67.8066033, "country": "USA", "state": "ME", "place": "Houlton", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KDTX", "lat": 42.6999677, "lon": -83.471809, "country": "USA", "state": "MI", "place": "Detroit/Pontiac", "tz": "America/Detroit" },
{ "type": "wsr88d", "id": "KAPX", "lat": 44.907106, "lon": -84.719817, "country": "USA", "state": "MI", "place": "Gaylord", "tz": "America/Detroit" },
{ "type": "wsr88d", "id": "KGRR", "lat": 42.893872, "lon": -85.5449206, "country": "USA", "state": "MI", "place": "Grand Rapids", "tz": "America/Detroit" },
{ "type": "wsr88d", "id": "KMQT", "lat": 46.5311443, "lon": -87.5487131, "country": "USA", "state": "MI", "place": "Marquette", "tz": "America/Detroit" },
{ "type": "wsr88d", "id": "KDLH", "lat": 46.8368569, "lon": -92.2097433, "country": "USA", "state": "MN", "place": "Duluth", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMPX", "lat": 44.8488029, "lon": -93.5654873, "country": "USA", "state": "MN", "place": "Minneapolis/St. Paul", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KEAX", "lat": 38.8102231, "lon": -94.2644924, "country": "USA", "state": "MO", "place": "Kansas City", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KSGF", "lat": 37.235223, "lon": -93.4006011, "country": "USA", "state": "MO", "place": "Springfield", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KLSX", "lat": 38.6986863, "lon": -90.682877, "country": "USA", "state": "MO", "place": "St. Louis", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KDGX", "lat": 32.2797358, "lon": -89.9846309, "country": "USA", "state": "MS", "place": "Brandon/Jackson", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KGWX", "lat": 33.8967796, "lon": -88.3293915, "country": "USA", "state": "MS", "place": "Columbus AFB", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KBLX", "lat": 45.8537632, "lon": -108.6068165, "country": "USA", "state": "MT", "place": "Billings", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KGGW", "lat": 48.2064536, "lon": -106.6252971, "country": "USA", "state": "MT", "place": "Glasgow", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KTFX", "lat": 47.4595023, "lon": -111.3855368, "country": "USA", "state": "MT", "place": "Great Falls", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KMSX", "lat": 47.0412971, "lon": -113.9864373, "country": "USA", "state": "MT", "place": "Missoula", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KMHX", "lat": 34.7759313, "lon": -76.8762571, "country": "USA", "state": "NC", "place": "Morehead City", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KRAX", "lat": 35.6654967, "lon": -78.4897855, "country": "USA", "state": "NC", "place": "Raleigh/Durham", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KLTX", "lat": 33.9891631, "lon": -78.4291059, "country": "USA", "state": "NC", "place": "Wilmington", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KBIS", "lat": 46.7709329, "lon": -100.7605532, "country": "USA", "state": "ND", "place": "Bismarck", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMVX", "lat": 47.5279417, "lon": -97.3256654, "country": "USA", "state": "ND", "place": "Grand Forks (Mayville)", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMBX", "lat": 48.39303, "lon": -100.8644378, "country": "USA", "state": "ND", "place": "Minot AFB", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KUEX", "lat": 40.320966, "lon": -98.4418559, "country": "USA", "state": "NE", "place": "Grand Island/Hastings", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KLNX", "lat": 41.9579623, "lon": -100.5759609, "country": "USA", "state": "NE", "place": "North Platte", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KOAX", "lat": 41.3202803, "lon": -96.3667971, "country": "USA", "state": "NE", "place": "Omaha", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KABX", "lat": 35.1497579, "lon": -106.8239576, "country": "USA", "state": "NM", "place": "Albuquerque", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KFDX", "lat": 34.6341569, "lon": -103.6186427, "country": "USA", "state": "NM", "place": "Cannon AFB", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KHDX", "lat": 33.0768844, "lon": -106.1200923, "country": "USA", "state": "NM", "place": "Holloman AFB", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KLRX", "lat": 40.7396933, "lon": -116.8025529, "country": "USA", "state": "NV", "place": "Elko", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KESX", "lat": 35.7012894, "lon": -114.8918277, "country": "USA", "state": "NV", "place": "Las Vegas", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KRGX", "lat": 39.7541931, "lon": -119.4620597, "country": "USA", "state": "NV", "place": "Reno", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KENX", "lat": 42.5865699, "lon": -74.0639877, "country": "USA", "state": "NY", "place": "Albany", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KBGM", "lat": 42.1997045, "lon": -75.9847015, "country": "USA", "state": "NY", "place": "Binghamton", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KBUF", "lat": 42.9488055, "lon": -78.7369108, "country": "USA", "state": "NY", "place": "Buffalo", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KTYX", "lat": 43.7556319, "lon": -75.6799918, "country": "USA", "state": "NY", "place": "Montague", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KOKX", "lat": 40.8655093, "lon": -72.8638548, "country": "USA", "state": "NY", "place": "New York City", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KCLE", "lat": 41.4131875, "lon": -81.8597451, "country": "USA", "state": "OH", "place": "Cleveland", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KILN", "lat": 39.42028, "lon": -83.82167, "country": "USA", "state": "OH", "place": "Wilmington", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KFDR", "lat": 34.3620014, "lon": -98.9766884, "country": "USA", "state": "OK", "place": "Frederick", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KTLX", "lat": 35.3333873, "lon": -97.2778255, "country": "USA", "state": "OK", "place": "Oklahoma City", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KINX", "lat": 36.1750977, "lon": -95.5642802, "country": "USA", "state": "OK", "place": "Tulsa", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KVNX", "lat": 36.7406166, "lon": -98.1279409, "country": "USA", "state": "OK", "place": "Vance AFB", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMAX", "lat": 42.0810766, "lon": -122.7173334, "country": "USA", "state": "OR", "place": "Medford", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KPDT", "lat": 45.6906118, "lon": -118.8529301, "country": "USA", "state": "OR", "place": "Pendleton", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KRTX", "lat": 45.7150308, "lon": -122.9650542, "country": "USA", "state": "OR", "place": "Portland", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KDIX", "lat": 39.9470885, "lon": -74.4108027, "country": "USA", "state": "PA", "place": "Philadelphia", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KPBZ", "lat": 40.5316842, "lon": -80.2179515, "country": "USA", "state": "PA", "place": "Pittsburgh", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KCCX", "lat": 40.9228521, "lon": -78.0038738, "country": "USA", "state": "PA", "place": "State College", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "TJUA", "lat": 18.1155998, "lon": -66.0780644, "country": "USA", "state": "PR", "place": "San Juan", "tz": "America/Puerto_Rico" },
{ "type": "wsr88d", "id": "KCLX", "lat": 32.6554866, "lon": -81.0423124, "country": "USA", "state": "SC", "place": "Charleston", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KCAE", "lat": 33.9487579, "lon": -81.1184281, "country": "USA", "state": "SC", "place": "Columbia", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KGSP", "lat": 34.8833435, "lon": -82.2200757, "country": "USA", "state": "SC", "place": "Greer", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KABR", "lat": 45.4558185, "lon": -98.4132046, "country": "USA", "state": "SD", "place": "Aberdeen", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KUDX", "lat": 44.1248485, "lon": -102.8298157, "country": "USA", "state": "SD", "place": "Rapid City", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KFSD", "lat": 43.5877467, "lon": -96.7293674, "country": "USA", "state": "SD", "place": "Sioux Falls", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMRX", "lat": 36.168538, "lon": -83.401779, "country": "USA", "state": "TN", "place": "Knoxville/Tri Cities", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KNQA", "lat": 35.3447802, "lon": -89.8734534, "country": "USA", "state": "TN", "place": "Memphis", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KOHX", "lat": 36.2472389, "lon": -86.5625185, "country": "USA", "state": "TN", "place": "Nashville", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KAMA", "lat": 35.2334827, "lon": -101.7092478, "country": "USA", "state": "TX", "place": "Amarillo", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KEWX", "lat": 29.7039802, "lon": -98.028506, "country": "USA", "state": "TX", "place": "Austin/San Antonio", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KBRO", "lat": 25.9159979, "lon": -97.4189526, "country": "USA", "state": "TX", "place": "Brownsville", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KCRP", "lat": 27.7840203, "lon": -97.511234, "country": "USA", "state": "TX", "place": "Corpus Christi", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KFWS", "lat": 32.5730186, "lon": -97.3031911, "country": "USA", "state": "TX", "place": "Dallas/Ft. Worth", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KDYX", "lat": 32.5386009, "lon": -99.2542863, "country": "USA", "state": "TX", "place": "Dyess AFB", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KEPZ", "lat": 31.8731115, "lon": -106.697942, "country": "USA", "state": "TX", "place": "El Paso", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KGRK", "lat": 30.7217637, "lon": -97.3829627, "country": "USA", "state": "TX", "place": "Fort Hood", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KHGX", "lat": 29.4718835, "lon": -95.0788593, "country": "USA", "state": "TX", "place": "Houston/Galveston", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KDFX", "lat": 29.2730823, "lon": -100.2802312, "country": "USA", "state": "TX", "place": "Laughlin AFB", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KLBB", "lat": 33.6541242, "lon": -101.814149, "country": "USA", "state": "TX", "place": "Lubbock", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMAF", "lat": 31.9433953, "lon": -102.1894383, "country": "USA", "state": "TX", "place": "Midland/Odessa", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KSJT", "lat": 31.3712815, "lon": -100.4925227, "country": "USA", "state": "TX", "place": "San Angelo", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KICX", "lat": 37.59083, "lon": -112.86222, "country": "USA", "state": "UT", "place": "Cedar City", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KMTX", "lat": 41.2627795, "lon": -112.4480081, "country": "USA", "state": "UT", "place": "Salt Lake City", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KAKQ", "lat": 36.9840475, "lon": -77.007342, "country": "USA", "state": "VA", "place": "Norfolk/Richmond", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KFCX", "lat": 37.0242098, "lon": -80.2736664, "country": "USA", "state": "VA", "place": "Roanoke", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KLWX", "lat": 38.9753957, "lon": -77.4778444, "country": "USA", "state": "VA", "place": "Sterling", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KCXX", "lat": 44.5109941, "lon": -73.166424, "country": "USA", "state": "VT", "place": "Burlington", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KLGX", "lat": 47.116806, "lon": -124.10625, "country": "USA", "state": "WA", "place": "Langley Hill", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KATX", "lat": 48.1945614, "lon": -122.4957508, "country": "USA", "state": "WA", "place": "Seattle/Tacoma", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KOTX", "lat": 47.6803744, "lon": -117.6267797, "country": "USA", "state": "WA", "place": "Spokane", "tz": "America/Los_Angeles" },
{ "type": "wsr88d", "id": "KGRB", "lat": 44.4984644, "lon": -88.111124, "country": "USA", "state": "WI", "place": "Green Bay", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KARX", "lat": 43.822766, "lon": -91.1915767, "country": "USA", "state": "WI", "place": "La Crosse", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KMKX", "lat": 42.9678286, "lon": -88.5506335, "country": "USA", "state": "WI", "place": "Milwaukee", "tz": "America/Chicago" },
{ "type": "wsr88d", "id": "KRLX", "lat": 38.3110763, "lon": -81.7229015, "country": "USA", "state": "WV", "place": "Charleston", "tz": "America/New_York" },
{ "type": "wsr88d", "id": "KCYS", "lat": 41.1519308, "lon": -104.8060325, "country": "USA", "state": "WY", "place": "Cheyenne", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "KRIW", "lat": 43.0660779, "lon": -108.4773731, "country": "USA", "state": "WY", "place": "Riverton", "tz": "America/Denver" },
{ "type": "wsr88d", "id": "RODN", "lat": 26.3078, "lon": 127.903469, "country": "JPN", "state": "OKI", "place": "Kadena Air Base", "tz": "Asia/Tokyo", "elevation": 412.0 },
{ "type": "wsr88d", "id": "RKSG", "lat": 37.207569, "lon": 127.285561, "country": "KOR", "state": "41", "place": "Camp Humphreys", "tz": "Asia/Seoul", "elevation": 1521.0 },
{ "type": "wsr88d", "id": "RKJK", "lat": 35.924167, "lon": 126.622222, "country": "KOR", "state": "45", "place": "Kunsan Air Base", "tz": "Asia/Seoul", "elevation": 192.0 },
{ "type": "wsr88d", "id": "PABC", "lat": 60.791944, "lon": -161.876389, "country": "USA", "state": "AK", "place": "Bethel", "tz": "America/Anchorage", "elevation": 193.0 },
{ "type": "wsr88d", "id": "PAPD", "lat": 65.035114, "lon": -147.501431, "country": "USA", "state": "AK", "place": "Fairbanks/Pedro Dome", "tz": "America/Anchorage", "elevation": 2707.0 },
{ "type": "wsr88d", "id": "PAHG", "lat": 60.725914, "lon": -151.351467, "country": "USA", "state": "AK", "place": "Kenai", "tz": "America/Anchorage", "elevation": 356.0 },
{ "type": "wsr88d", "id": "PAKC", "lat": 58.679444, "lon": -156.629444, "country": "USA", "state": "AK", "place": "King Salmon", "tz": "America/Anchorage", "elevation": 144.0 },
{ "type": "wsr88d", "id": "PAIH", "lat": 59.460767, "lon": -146.303447, "country": "USA", "state": "AK", "place": "Middleton Island", "tz": "America/Anchorage", "elevation": 132.0 },
{ "type": "wsr88d", "id": "PAEC", "lat": 64.511389, "lon": -165.295, "country": "USA", "state": "AK", "place": "Nome", "tz": "America/Nome", "elevation": 90.0 },
{ "type": "wsr88d", "id": "PACG", "lat": 56.852778, "lon": -135.529167, "country": "USA", "state": "AK", "place": "Sitka/Biorka Island", "tz": "America/Sitka", "elevation": 272.0 },
{ "type": "wsr88d", "id": "KBMX", "lat": 33.1722806, "lon": -86.7698425, "country": "USA", "state": "AL", "place": "Birmingham", "tz": "America/Chicago", "elevation": 759.0 },
{ "type": "wsr88d", "id": "KEOX", "lat": 31.460556, "lon": -85.459389, "country": "USA", "state": "AL", "place": "Fort Rucker", "tz": "America/Chicago", "elevation": 537.0 },
{ "type": "wsr88d", "id": "KHTX", "lat": 34.930556, "lon": -86.083611, "country": "USA", "state": "AL", "place": "Huntsville", "tz": "America/Chicago", "elevation": 1859.0 },
{ "type": "wsr88d", "id": "KMXX", "lat": 32.53665, "lon": -85.78975, "country": "USA", "state": "AL", "place": "Maxwell AFB", "tz": "America/Chicago", "elevation": 560.0 },
{ "type": "wsr88d", "id": "KMOB", "lat": 30.6795378, "lon": -88.2397816, "country": "USA", "state": "AL", "place": "Mobile", "tz": "America/Chicago", "elevation": 289.0 },
{ "type": "wsr88d", "id": "KSRX", "lat": 35.290417, "lon": -94.361889, "country": "USA", "state": "AR", "place": "Fort Smith", "tz": "America/Chicago", "elevation": 737.0 },
{ "type": "wsr88d", "id": "KLZK", "lat": 34.8365, "lon": -92.262194, "country": "USA", "state": "AR", "place": "Little Rock", "tz": "America/Chicago", "elevation": 649.0 },
{ "type": "wsr88d", "id": "KFSX", "lat": 34.574333, "lon": -111.198444, "country": "USA", "state": "AZ", "place": "Flagstaff", "tz": "America/Phoenix", "elevation": 7514.0 },
{ "type": "wsr88d", "id": "KIWA", "lat": 33.289233, "lon": -111.669917, "country": "USA", "state": "AZ", "place": "Phoenix", "tz": "America/Phoenix", "elevation": 1426.0 },
{ "type": "wsr88d", "id": "KEMX", "lat": 31.89365, "lon": -110.63025, "country": "USA", "state": "AZ", "place": "Tucson", "tz": "America/Phoenix", "elevation": 5319.0 },
{ "type": "wsr88d", "id": "KYUX", "lat": 32.495281, "lon": -114.656711, "country": "USA", "state": "AZ", "place": "Yuma", "tz": "America/Phoenix", "elevation": 239.0 },
{ "type": "wsr88d", "id": "KBBX", "lat": 39.495639, "lon": -121.631611, "country": "USA", "state": "CA", "place": "Beale AFB", "tz": "America/Los_Angeles", "elevation": 221.0 },
{ "type": "wsr88d", "id": "KEYX", "lat": 35.09785, "lon": -117.56075, "country": "USA", "state": "CA", "place": "Edwards AFB", "tz": "America/Los_Angeles", "elevation": 2873.0 },
{ "type": "wsr88d", "id": "KBHX", "lat": 40.498583, "lon": -124.292167, "country": "USA", "state": "CA", "place": "Eureka", "tz": "America/Los_Angeles", "elevation": 2516.0 },
{ "type": "wsr88d", "id": "KVTX", "lat": 34.4116386, "lon": -119.1795641, "country": "USA", "state": "CA", "place": "Los Angeles", "tz": "America/Los_Angeles", "elevation": 2807.0 },
{ "type": "wsr88d", "id": "KDAX", "lat": 38.5011529, "lon": -121.6778487, "country": "USA", "state": "CA", "place": "Sacramento", "tz": "America/Los_Angeles", "elevation": 144.0 },
{ "type": "wsr88d", "id": "KNKX", "lat": 32.919017, "lon": -117.0418, "country": "USA", "state": "CA", "place": "San Diego", "tz": "America/Los_Angeles", "elevation": 1052.0 },
{ "type": "wsr88d", "id": "KMUX", "lat": 37.155222, "lon": -121.898444, "country": "USA", "state": "CA", "place": "San Francisco", "tz": "America/Los_Angeles", "elevation": 3550.0 },
{ "type": "wsr88d", "id": "KHNX", "lat": 36.314181, "lon": -119.632139, "country": "USA", "state": "CA", "place": "San Joaquin Valley", "tz": "America/Los_Angeles", "elevation": 340.0 },
{ "type": "wsr88d", "id": "KSOX", "lat": 33.817733, "lon": -117.636, "country": "USA", "state": "CA", "place": "Santa Ana Mountains", "tz": "America/Los_Angeles", "elevation": 3106.0 },
{ "type": "wsr88d", "id": "KVBX", "lat": 34.83855, "lon": -120.397917, "country": "USA", "state": "CA", "place": "Vandenberg AFB", "tz": "America/Los_Angeles", "elevation": 1354.0 },
{ "type": "wsr88d", "id": "KFTG", "lat": 39.786639, "lon": -104.545806, "country": "USA", "state": "CO", "place": "Denver", "tz": "America/Denver", "elevation": 5611.0 },
{ "type": "wsr88d", "id": "KGJX", "lat": 39.062169, "lon": -108.213761, "country": "USA", "state": "CO", "place": "Grand Junction", "tz": "America/Denver", "elevation": 10101.0 },
{ "type": "wsr88d", "id": "KPUX", "lat": 38.45955, "lon": -104.18135, "country": "USA", "state": "CO", "place": "Pueblo", "tz": "America/Denver", "elevation": 5363.0 },
{ "type": "wsr88d", "id": "KDOX", "lat": 38.825767, "lon": -75.440117, "country": "USA", "state": "DE", "place": "Dover AFB", "tz": "America/New_York", "elevation": 164.0 },
{ "type": "wsr88d", "id": "KEVX", "lat": 30.565033, "lon": -85.921667, "country": "USA", "state": "FL", "place": "Eglin AFB", "tz": "America/Chicago", "elevation": 221.0 },
{ "type": "wsr88d", "id": "KJAX", "lat": 30.484633, "lon": -81.7019, "country": "USA", "state": "FL", "place": "Jacksonville", "tz": "America/New_York", "elevation": 160.0 },
{ "type": "wsr88d", "id": "KBYX", "lat": 24.5975, "lon": -81.703167, "country": "USA", "state": "FL", "place": "Key West", "tz": "America/New_York", "elevation": 89.0 },
{ "type": "wsr88d", "id": "KMLB", "lat": 28.113194, "lon": -80.654083, "country": "USA", "state": "FL", "place": "Melbourne", "tz": "America/New_York", "elevation": 149.0 },
{ "type": "wsr88d", "id": "KAMX", "lat": 25.611083, "lon": -80.412667, "country": "USA", "state": "FL", "place": "Miami", "tz": "America/New_York", "elevation": 111.0 },
{ "type": "wsr88d", "id": "KTLH", "lat": 30.397583, "lon": -84.328944, "country": "USA", "state": "FL", "place": "Tallahassee", "tz": "America/New_York", "elevation": 177.0 },
{ "type": "wsr88d", "id": "KTBW", "lat": 27.7055, "lon": -82.401778, "country": "USA", "state": "FL", "place": "Tampa", "tz": "America/New_York", "elevation": 122.0 },
{ "type": "wsr88d", "id": "KFFC", "lat": 33.36355, "lon": -84.56595, "country": "USA", "state": "GA", "place": "Atlanta", "tz": "America/New_York", "elevation": 972.0 },
{ "type": "wsr88d", "id": "KVAX", "lat": 30.890278, "lon": -83.001806, "country": "USA", "state": "GA", "place": "Moody AFB", "tz": "America/New_York", "elevation": 330.0 },
{ "type": "wsr88d", "id": "KJGX", "lat": 32.675683, "lon": -83.350833, "country": "USA", "state": "GA", "place": "Robins AFB", "tz": "America/New_York", "elevation": 618.0 },
{ "type": "wsr88d", "id": "PGUA", "lat": 13.455833, "lon": 144.811111, "country": "USA", "state": "GU", "place": "Andersen AFB", "tz": "Pacific/Guam", "elevation": 386.0 },
{ "type": "wsr88d", "id": "PHKI", "lat": 21.893889, "lon": -159.5525, "country": "USA", "state": "HI", "place": "Kauai", "tz": "Pacific/Honolulu", "elevation": 340.0 },
{ "type": "wsr88d", "id": "PHKM", "lat": 20.125278, "lon": -155.777778, "country": "USA", "state": "HI", "place": "Kohala", "tz": "Pacific/Honolulu", "elevation": 3966.0 },
{ "type": "wsr88d", "id": "PHMO", "lat": 21.132778, "lon": -157.180278, "country": "USA", "state": "HI", "place": "Molokai", "tz": "Pacific/Honolulu", "elevation": 1444.0 },
{ "type": "wsr88d", "id": "PHWA", "lat": 19.095, "lon": -155.568889, "country": "USA", "state": "HI", "place": "South Shore", "tz": "Pacific/Honolulu", "elevation": 1461.0 },
{ "type": "wsr88d", "id": "KDVN", "lat": 41.611556, "lon": -90.5809987, "country": "USA", "state": "IA", "place": "Davenport", "tz": "America/Chicago", "elevation": 851.0 },
{ "type": "wsr88d", "id": "KDMX", "lat": 41.7312, "lon": -93.722869, "country": "USA", "state": "IA", "place": "Des Moines", "tz": "America/Chicago", "elevation": 1095.0 },
{ "type": "wsr88d", "id": "KCBX", "lat": 43.490217, "lon": -116.236033, "country": "USA", "state": "ID", "place": "Boise", "tz": "America/Boise", "elevation": 3172.0 },
{ "type": "wsr88d", "id": "KSFX", "lat": 43.1056, "lon": -112.686133, "country": "USA", "state": "ID", "place": "Pocatello/Idaho Falls", "tz": "America/Boise", "elevation": 4539.0 },
{ "type": "wsr88d", "id": "KLOT", "lat": 41.604444, "lon": -88.084444, "country": "USA", "state": "IL", "place": "Chicago", "tz": "America/Chicago", "elevation": 760.0 },
{ "type": "wsr88d", "id": "KILX", "lat": 40.150544, "lon": -89.336842, "country": "USA", "state": "IL", "place": "Lincoln", "tz": "America/Chicago", "elevation": 731.0 },
{ "type": "wsr88d", "id": "KIND", "lat": 39.7074962, "lon": -86.2803675, "country": "USA", "state": "IN", "place": "Indianapolis", "tz": "America/Indiana/Indianapolis", "elevation": 887.0 },
{ "type": "wsr88d", "id": "KIWX", "lat": 41.358611, "lon": -85.7, "country": "USA", "state": "IN", "place": "North Webster", "tz": "America/Indiana/Indianapolis", "elevation": 1056.0 },
{ "type": "wsr88d", "id": "KVWX", "lat": 38.2603901, "lon": -87.7246553, "country": "USA", "state": "IN", "place": "Owensville (Evansville)", "tz": "America/Chicago", "elevation": 625.0 },
{ "type": "wsr88d", "id": "KDDC", "lat": 37.7608043, "lon": -99.9688053, "country": "USA", "state": "KS", "place": "Dodge City", "tz": "America/Chicago", "elevation": 2671.0 },
{ "type": "wsr88d", "id": "KGLD", "lat": 39.3667737, "lon": -101.7004341, "country": "USA", "state": "KS", "place": "Goodland", "tz": "America/Denver", "elevation": 3716.0 },
{ "type": "wsr88d", "id": "KTWX", "lat": 38.99695, "lon": -96.23255, "country": "USA", "state": "KS", "place": "Topeka", "tz": "America/Chicago", "elevation": 1415.0 },
{ "type": "wsr88d", "id": "KICT", "lat": 37.6545724, "lon": -97.4431461, "country": "USA", "state": "KS", "place": "Wichita", "tz": "America/Chicago", "elevation": 1400.0 },
{ "type": "wsr88d", "id": "KHPX", "lat": 36.736972, "lon": -87.285583, "country": "USA", "state": "KY", "place": "Fort Campbell", "tz": "America/Chicago", "elevation": 613.0 },
{ "type": "wsr88d", "id": "KJKL", "lat": 37.590833, "lon": -83.313056, "country": "USA", "state": "KY", "place": "Jackson", "tz": "America/New_York", "elevation": 1461.0 },
{ "type": "wsr88d", "id": "KLVX", "lat": 37.9753058, "lon": -85.9438455, "country": "USA", "state": "KY", "place": "Louisville", "tz": "America/New_York", "elevation": 833.0 },
{ "type": "wsr88d", "id": "KPAH", "lat": 37.068333, "lon": -88.771944, "country": "USA", "state": "KY", "place": "Paducah", "tz": "America/Chicago", "elevation": 506.0 },
{ "type": "wsr88d", "id": "KPOE", "lat": 31.1556923, "lon": -92.9762596, "country": "USA", "state": "LA", "place": "Fort Polk", "tz": "America/Chicago", "elevation": 473.0 },
{ "type": "wsr88d", "id": "KHDC", "lat": 30.519306, "lon": -90.424028, "country": "USA", "state": "LA", "place": "New Orleans (Hammond)", "tz": "America/Chicago", "elevation": 43.0 },
{ "type": "wsr88d", "id": "KLCH", "lat": 30.125306, "lon": -93.215889, "country": "USA", "state": "LA", "place": "Lake Charles", "tz": "America/Chicago", "elevation": 137.0 },
{ "type": "wsr88d", "id": "KSHV", "lat": 32.450833, "lon": -93.84125, "country": "USA", "state": "LA", "place": "Shreveport", "tz": "America/Chicago", "elevation": 387.0 },
{ "type": "wsr88d", "id": "KLIX", "lat": 30.3367133, "lon": -89.8256618, "country": "USA", "state": "LA", "place": "New Orleans (Slidell)", "tz": "America/Chicago", "elevation": 179.0 },
{ "type": "wsr88d", "id": "KBOX", "lat": 41.9558919, "lon": -71.1369681, "country": "USA", "state": "MA", "place": "Boston", "tz": "America/New_York", "elevation": 232.0 },
{ "type": "wsr88d", "id": "KGYX", "lat": 43.8913555, "lon": -70.2565545, "country": "USA", "state": "ME", "place": "Gray/Portland", "tz": "America/New_York", "elevation": 474.0 },
{ "type": "wsr88d", "id": "KCBW", "lat": 46.03925, "lon": -67.806431, "country": "USA", "state": "ME", "place": "Houlton", "tz": "America/New_York", "elevation": 860.0 },
{ "type": "wsr88d", "id": "KDTX", "lat": 42.6999677, "lon": -83.471809, "country": "USA", "state": "MI", "place": "Detroit/Pontiac", "tz": "America/Detroit", "elevation": 1216.0 },
{ "type": "wsr88d", "id": "KAPX", "lat": 44.907106, "lon": -84.719817, "country": "USA", "state": "MI", "place": "Gaylord", "tz": "America/Detroit", "elevation": 1561.0 },
{ "type": "wsr88d", "id": "KGRR", "lat": 42.893889, "lon": -85.544889, "country": "USA", "state": "MI", "place": "Grand Rapids", "tz": "America/Detroit", "elevation": 875.0 },
{ "type": "wsr88d", "id": "KMQT", "lat": 46.531111, "lon": -87.548333, "country": "USA", "state": "MI", "place": "Marquette", "tz": "America/Detroit", "elevation": 1525.0 },
{ "type": "wsr88d", "id": "KDLH", "lat": 46.8368569, "lon": -92.2097433, "country": "USA", "state": "MN", "place": "Duluth", "tz": "America/Chicago", "elevation": 1542.0 },
{ "type": "wsr88d", "id": "KMPX", "lat": 44.8488029, "lon": -93.5654873, "country": "USA", "state": "MN", "place": "Minneapolis/St. Paul", "tz": "America/Chicago", "elevation": 1101.0 },
{ "type": "wsr88d", "id": "KEAX", "lat": 38.81025, "lon": -94.264472, "country": "USA", "state": "MO", "place": "Kansas City", "tz": "America/Chicago", "elevation": 1092.0 },
{ "type": "wsr88d", "id": "KSGF", "lat": 37.235239, "lon": -93.400419, "country": "USA", "state": "MO", "place": "Springfield", "tz": "America/Chicago", "elevation": 1375.0 },
{ "type": "wsr88d", "id": "KLSX", "lat": 38.6986863, "lon": -90.682877, "country": "USA", "state": "MO", "place": "St. Louis", "tz": "America/Chicago", "elevation": 722.0 },
{ "type": "wsr88d", "id": "KDGX", "lat": 32.279944, "lon": -89.984444, "country": "USA", "state": "MS", "place": "Brandon/Jackson", "tz": "America/Chicago", "elevation": 609.0 },
{ "type": "wsr88d", "id": "KGWX", "lat": 33.896917, "lon": -88.329194, "country": "USA", "state": "MS", "place": "Columbus AFB", "tz": "America/Chicago", "elevation": 590.0 },
{ "type": "wsr88d", "id": "KBLX", "lat": 45.853778, "lon": -108.606806, "country": "USA", "state": "MT", "place": "Billings", "tz": "America/Denver", "elevation": 3703.0 },
{ "type": "wsr88d", "id": "KGGW", "lat": 48.206361, "lon": -106.624694, "country": "USA", "state": "MT", "place": "Glasgow", "tz": "America/Denver", "elevation": 2384.0 },
{ "type": "wsr88d", "id": "KTFX", "lat": 47.459583, "lon": -111.385333, "country": "USA", "state": "MT", "place": "Great Falls", "tz": "America/Denver", "elevation": 3805.0 },
{ "type": "wsr88d", "id": "KMSX", "lat": 47.041, "lon": -113.986222, "country": "USA", "state": "MT", "place": "Missoula", "tz": "America/Denver", "elevation": 7978.0 },
{ "type": "wsr88d", "id": "KMHX", "lat": 34.775908, "lon": -76.876189, "country": "USA", "state": "NC", "place": "Morehead City", "tz": "America/New_York", "elevation": 145.0 },
{ "type": "wsr88d", "id": "KRAX", "lat": 35.665519, "lon": -78.48975, "country": "USA", "state": "NC", "place": "Raleigh/Durham", "tz": "America/New_York", "elevation": 462.0 },
{ "type": "wsr88d", "id": "KLTX", "lat": 33.98915, "lon": -78.429108, "country": "USA", "state": "NC", "place": "Wilmington", "tz": "America/New_York", "elevation": 145.0 },
{ "type": "wsr88d", "id": "KBIS", "lat": 46.770833, "lon": -100.760556, "country": "USA", "state": "ND", "place": "Bismarck", "tz": "America/Chicago", "elevation": 1755.0 },
{ "type": "wsr88d", "id": "KMVX", "lat": 47.527778, "lon": -97.325556, "country": "USA", "state": "ND", "place": "Grand Forks (Mayville)", "tz": "America/Chicago", "elevation": 1083.0 },
{ "type": "wsr88d", "id": "KMBX", "lat": 48.393056, "lon": -100.864444, "country": "USA", "state": "ND", "place": "Minot AFB", "tz": "America/Chicago", "elevation": 1590.0 },
{ "type": "wsr88d", "id": "KUEX", "lat": 40.320833, "lon": -98.441944, "country": "USA", "state": "NE", "place": "Grand Island/Hastings", "tz": "America/Chicago", "elevation": 2057.0 },
{ "type": "wsr88d", "id": "KLNX", "lat": 41.957944, "lon": -100.576222, "country": "USA", "state": "NE", "place": "North Platte", "tz": "America/Chicago", "elevation": 3113.0 },
{ "type": "wsr88d", "id": "KOAX", "lat": 41.3202803, "lon": -96.3667971, "country": "USA", "state": "NE", "place": "Omaha", "tz": "America/Chicago", "elevation": 1262.0 },
{ "type": "wsr88d", "id": "KABX", "lat": 35.1497579, "lon": -106.8239576, "country": "USA", "state": "NM", "place": "Albuquerque", "tz": "America/Denver", "elevation": 5951.0 },
{ "type": "wsr88d", "id": "KFDX", "lat": 34.634167, "lon": -103.618889, "country": "USA", "state": "NM", "place": "Cannon AFB", "tz": "America/Denver", "elevation": 4698.0 },
{ "type": "wsr88d", "id": "KHDX", "lat": 33.077, "lon": -106.120033, "country": "USA", "state": "NM", "place": "Holloman AFB", "tz": "America/Denver", "elevation": 4270.0 },
{ "type": "wsr88d", "id": "KLRX", "lat": 40.7396933, "lon": -116.8025529, "country": "USA", "state": "NV", "place": "Elko", "tz": "America/Los_Angeles", "elevation": 6895.0 },
{ "type": "wsr88d", "id": "KESX", "lat": 35.70135, "lon": -114.89165, "country": "USA", "state": "NV", "place": "Las Vegas", "tz": "America/Los_Angeles", "elevation": 4948.0 },
{ "type": "wsr88d", "id": "KRGX", "lat": 39.754056, "lon": -119.462028, "country": "USA", "state": "NV", "place": "Reno", "tz": "America/Los_Angeles", "elevation": 8396.0 },
{ "type": "wsr88d", "id": "KENX", "lat": 42.5865699, "lon": -74.0639877, "country": "USA", "state": "NY", "place": "Albany", "tz": "America/New_York", "elevation": 1935.0 },
{ "type": "wsr88d", "id": "KBGM", "lat": 42.199694, "lon": -75.984722, "country": "USA", "state": "NY", "place": "Binghamton", "tz": "America/New_York", "elevation": 1703.0 },
{ "type": "wsr88d", "id": "KBUF", "lat": 42.948789, "lon": -78.736781, "country": "USA", "state": "NY", "place": "Buffalo", "tz": "America/New_York", "elevation": 790.0 },
{ "type": "wsr88d", "id": "KTYX", "lat": 43.7556319, "lon": -75.6799918, "country": "USA", "state": "NY", "place": "Montague", "tz": "America/New_York", "elevation": 1960.0 },
{ "type": "wsr88d", "id": "KOKX", "lat": 40.865528, "lon": -72.863917, "country": "USA", "state": "NY", "place": "New York City", "tz": "America/New_York", "elevation": 199.0 },
{ "type": "wsr88d", "id": "KCLE", "lat": 41.4131875, "lon": -81.8597451, "country": "USA", "state": "OH", "place": "Cleveland", "tz": "America/New_York", "elevation": 860.0 },
{ "type": "wsr88d", "id": "KILN", "lat": 39.42028, "lon": -83.82167, "country": "USA", "state": "OH", "place": "Wilmington", "tz": "America/New_York", "elevation": 1170.0 },
{ "type": "wsr88d", "id": "KFDR", "lat": 34.362194, "lon": -98.976667, "country": "USA", "state": "OK", "place": "Frederick", "tz": "America/Chicago", "elevation": 1315.0 },
{ "type": "wsr88d", "id": "KTLX", "lat": 35.333361, "lon": -97.277761, "country": "USA", "state": "OK", "place": "Oklahoma City", "tz": "America/Chicago", "elevation": 1278.0 },
{ "type": "wsr88d", "id": "KINX", "lat": 36.175131, "lon": -95.564161, "country": "USA", "state": "OK", "place": "Tulsa", "tz": "America/Chicago", "elevation": 749.0 },
{ "type": "wsr88d", "id": "KVNX", "lat": 36.740617, "lon": -98.127717, "country": "USA", "state": "OK", "place": "Vance AFB", "tz": "America/Chicago", "elevation": 1258.0 },
{ "type": "wsr88d", "id": "KMAX", "lat": 42.0810766, "lon": -122.7173334, "country": "USA", "state": "OR", "place": "Medford", "tz": "America/Los_Angeles", "elevation": 7561.0 },
{ "type": "wsr88d", "id": "KPDT", "lat": 45.69065, "lon": -118.852931, "country": "USA", "state": "OR", "place": "Pendleton", "tz": "America/Los_Angeles", "elevation": 1580.0 },
{ "type": "wsr88d", "id": "KRTX", "lat": 45.715039, "lon": -122.965, "country": "USA", "state": "OR", "place": "Portland", "tz": "America/Los_Angeles", "elevation": 1728.0 },
{ "type": "wsr88d", "id": "KDIX", "lat": 39.947089, "lon": -74.410731, "country": "USA", "state": "PA", "place": "Philadelphia", "tz": "America/New_York", "elevation": 230.0 },
{ "type": "wsr88d", "id": "KPBZ", "lat": 40.531717, "lon": -80.217967, "country": "USA", "state": "PA", "place": "Pittsburgh", "tz": "America/New_York", "elevation": 1266.0 },
{ "type": "wsr88d", "id": "KCCX", "lat": 40.923167, "lon": -78.003722, "country": "USA", "state": "PA", "place": "State College", "tz": "America/New_York", "elevation": 2486.0 },
{ "type": "wsr88d", "id": "TJUA", "lat": 18.115667, "lon": -66.078167, "country": "USA", "state": "PR", "place": "San Juan", "tz": "America/Puerto_Rico", "elevation": 2958.0 },
{ "type": "wsr88d", "id": "KCLX", "lat": 32.6554866, "lon": -81.0423124, "country": "USA", "state": "SC", "place": "Charleston", "tz": "America/New_York", "elevation": 229.0 },
{ "type": "wsr88d", "id": "KCAE", "lat": 33.948722, "lon": -81.118278, "country": "USA", "state": "SC", "place": "Columbia", "tz": "America/New_York", "elevation": 345.0 },
{ "type": "wsr88d", "id": "KGSP", "lat": 34.883306, "lon": -82.219833, "country": "USA", "state": "SC", "place": "Greer", "tz": "America/New_York", "elevation": 1069.0 },
{ "type": "wsr88d", "id": "KABR", "lat": 45.455833, "lon": -98.413333, "country": "USA", "state": "SD", "place": "Aberdeen", "tz": "America/Chicago", "elevation": 1383.0 },
{ "type": "wsr88d", "id": "KUDX", "lat": 44.1248485, "lon": -102.8298157, "country": "USA", "state": "SD", "place": "Rapid City", "tz": "America/Denver", "elevation": 3195.0 },
{ "type": "wsr88d", "id": "KFSD", "lat": 43.587778, "lon": -96.729444, "country": "USA", "state": "SD", "place": "Sioux Falls", "tz": "America/Chicago", "elevation": 1495.0 },
{ "type": "wsr88d", "id": "KMRX", "lat": 36.168538, "lon": -83.401779, "country": "USA", "state": "TN", "place": "Knoxville/Tri Cities", "tz": "America/New_York", "elevation": 1434.0 },
{ "type": "wsr88d", "id": "KNQA", "lat": 35.344722, "lon": -89.873333, "country": "USA", "state": "TN", "place": "Memphis", "tz": "America/Chicago", "elevation": 435.0 },
{ "type": "wsr88d", "id": "KOHX", "lat": 36.247222, "lon": -86.5625, "country": "USA", "state": "TN", "place": "Nashville", "tz": "America/Chicago", "elevation": 676.0 },
{ "type": "wsr88d", "id": "KAMA", "lat": 35.233333, "lon": -101.709278, "country": "USA", "state": "TX", "place": "Amarillo", "tz": "America/Chicago", "elevation": 3703.0 },
{ "type": "wsr88d", "id": "KEWX", "lat": 29.7039802, "lon": -98.028506, "country": "USA", "state": "TX", "place": "Austin/San Antonio", "tz": "America/Chicago", "elevation": 767.0 },
{ "type": "wsr88d", "id": "KBRO", "lat": 25.916, "lon": -97.418967, "country": "USA", "state": "TX", "place": "Brownsville", "tz": "America/Chicago", "elevation": 88.0 },
{ "type": "wsr88d", "id": "KCRP", "lat": 27.784017, "lon": -97.51125, "country": "USA", "state": "TX", "place": "Corpus Christi", "tz": "America/Chicago", "elevation": 142.0 },
{ "type": "wsr88d", "id": "KFWS", "lat": 32.573, "lon": -97.30315, "country": "USA", "state": "TX", "place": "Dallas/Ft. Worth", "tz": "America/Chicago", "elevation": 777.0 },
{ "type": "wsr88d", "id": "KDYX", "lat": 32.5385, "lon": -99.254333, "country": "USA", "state": "TX", "place": "Dyess AFB", "tz": "America/Chicago", "elevation": 1582.0 },
{ "type": "wsr88d", "id": "KEPZ", "lat": 31.873056, "lon": -106.698, "country": "USA", "state": "TX", "place": "El Paso", "tz": "America/Denver", "elevation": 4218.0 },
{ "type": "wsr88d", "id": "KGRK", "lat": 30.7217637, "lon": -97.3829627, "country": "USA", "state": "TX", "place": "Fort Hood", "tz": "America/Chicago", "elevation": 603.0 },
{ "type": "wsr88d", "id": "KHGX", "lat": 29.4719, "lon": -95.078733, "country": "USA", "state": "TX", "place": "Houston/Galveston", "tz": "America/Chicago", "elevation": 115.0 },
{ "type": "wsr88d", "id": "KDFX", "lat": 29.273139, "lon": -100.280333, "country": "USA", "state": "TX", "place": "Laughlin AFB", "tz": "America/Chicago", "elevation": 1196.0 },
{ "type": "wsr88d", "id": "KLBB", "lat": 33.654139, "lon": -101.814167, "country": "USA", "state": "TX", "place": "Lubbock", "tz": "America/Chicago", "elevation": 3378.0 },
{ "type": "wsr88d", "id": "KMAF", "lat": 31.943461, "lon": -102.18925, "country": "USA", "state": "TX", "place": "Midland/Odessa", "tz": "America/Chicago", "elevation": 2962.0 },
{ "type": "wsr88d", "id": "KSJT", "lat": 31.371278, "lon": -100.4925, "country": "USA", "state": "TX", "place": "San Angelo", "tz": "America/Chicago", "elevation": 2004.0 },
{ "type": "wsr88d", "id": "KICX", "lat": 37.59105, "lon": -112.862183, "country": "USA", "state": "UT", "place": "Cedar City", "tz": "America/Denver", "elevation": 10757.0 },
{ "type": "wsr88d", "id": "KMTX", "lat": 41.262778, "lon": -112.447778, "country": "USA", "state": "UT", "place": "Salt Lake City", "tz": "America/Denver", "elevation": 6594.0 },
{ "type": "wsr88d", "id": "KAKQ", "lat": 36.98405, "lon": -77.007361, "country": "USA", "state": "VA", "place": "Norfolk/Richmond", "tz": "America/New_York", "elevation": 255.0 },
{ "type": "wsr88d", "id": "KFCX", "lat": 37.0244, "lon": -80.273969, "country": "USA", "state": "VA", "place": "Roanoke", "tz": "America/New_York", "elevation": 2965.0 },
{ "type": "wsr88d", "id": "KLWX", "lat": 38.976111, "lon": -77.4875, "country": "USA", "state": "VA", "place": "Sterling", "tz": "America/New_York", "elevation": 404.0 },
{ "type": "wsr88d", "id": "KCXX", "lat": 44.511, "lon": -73.166431, "country": "USA", "state": "VT", "place": "Burlington", "tz": "America/New_York", "elevation": 431.0 },
{ "type": "wsr88d", "id": "KLGX", "lat": 47.116944, "lon": -124.106667, "country": "USA", "state": "WA", "place": "Langley Hill", "tz": "America/Los_Angeles", "elevation": 366.0 },
{ "type": "wsr88d", "id": "KATX", "lat": 48.194611, "lon": -122.495694, "country": "USA", "state": "WA", "place": "Seattle/Tacoma", "tz": "America/Los_Angeles", "elevation": 642.0 },
{ "type": "wsr88d", "id": "KOTX", "lat": 47.680417, "lon": -117.626778, "country": "USA", "state": "WA", "place": "Spokane", "tz": "America/Los_Angeles", "elevation": 2449.0 },
{ "type": "wsr88d", "id": "KGRB", "lat": 44.498633, "lon": -88.111111, "country": "USA", "state": "WI", "place": "Green Bay", "tz": "America/Chicago", "elevation": 823.0 },
{ "type": "wsr88d", "id": "KARX", "lat": 43.822778, "lon": -91.191111, "country": "USA", "state": "WI", "place": "La Crosse", "tz": "America/Chicago", "elevation": 1357.0 },
{ "type": "wsr88d", "id": "KMKX", "lat": 42.9678286, "lon": -88.5506335, "country": "USA", "state": "WI", "place": "Milwaukee", "tz": "America/Chicago", "elevation": 1023.0 },
{ "type": "wsr88d", "id": "KRLX", "lat": 38.3110763, "lon": -81.7229015, "country": "USA", "state": "WV", "place": "Charleston", "tz": "America/New_York", "elevation": 1213.0 },
{ "type": "wsr88d", "id": "KCYS", "lat": 41.151919, "lon": -104.806031, "country": "USA", "state": "WY", "place": "Cheyenne", "tz": "America/Denver", "elevation": 6193.0 },
{ "type": "wsr88d", "id": "KRIW", "lat": 43.066089, "lon": -108.4773, "country": "USA", "state": "WY", "place": "Riverton", "tz": "America/Denver", "elevation": 5633.0 },
{ "type": "tdwr", "id": "TADW", "lat": 38.695, "lon": -76.845, "country": "USA", "state": "MD", "place": "Andrews Air Force Base", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TATL", "lat": 33.647, "lon": -84.262, "country": "USA", "state": "GA", "place": "Atlanta", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TBNA", "lat": 35.98, "lon": -86.662, "country": "USA", "state": "TN", "place": "Nashville", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TBOS", "lat": 42.158, "lon": -70.933, "country": "USA", "state": "MA", "place": "Boston", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TBWI", "lat": 39.09, "lon": -76.63, "country": "USA", "state": "MD", "place": "Baltimore/Wash", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TCLT", "lat": 35.337, "lon": -80.885, "country": "USA", "state": "NC", "place": "Charlotte", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TCMH", "lat": 40.006, "lon": -82.715, "country": "USA", "state": "OH", "place": "Columbus", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TCVG", "lat": 38.898, "lon": -84.58, "country": "USA", "state": "OH", "place": "Cincinnati", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TDAL", "lat": 32.926, "lon": -96.968, "country": "USA", "state": "TX", "place": "Dallas Love Field", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TDAY", "lat": 40.022, "lon": -84.123, "country": "USA", "state": "OH", "place": "Dayton", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TDCA", "lat": 38.759, "lon": -76.962, "country": "USA", "state": "MD", "place": "Washington National", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TDEN", "lat": 39.728, "lon": -104.526, "country": "USA", "state": "CO", "place": "Denver", "tz": "America/Denver" },
{ "type": "tdwr", "id": "TDFW", "lat": 33.065, "lon": -96.918, "country": "USA", "state": "TX", "place": "Dallas/Ft. Worth", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TDTW", "lat": 42.111, "lon": -83.515, "country": "USA", "state": "MI", "place": "Detroit", "tz": "America/Detroit" },
{ "type": "tdwr", "id": "TEWR", "lat": 40.593, "lon": -74.27, "country": "USA", "state": "NJ", "place": "Newark", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TFLL", "lat": 26.143, "lon": -80.344, "country": "USA", "state": "FL", "place": "Fort Lauderdale", "tz": "America/New_York" },
{ "type": "tdwr", "id": "THOU", "lat": 29.516, "lon": -95.242, "country": "USA", "state": "TX", "place": "Houston Hobby", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TIAD", "lat": 39.084, "lon": -77.529, "country": "USA", "state": "VA", "place": "Dulles", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TIAH", "lat": 30.065, "lon": -95.567, "country": "USA", "state": "TX", "place": "Houston International", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TICH", "lat": 37.507, "lon": -97.437, "country": "USA", "state": "KS", "place": "Wichita", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TIDS", "lat": 39.637, "lon": -86.436, "country": "USA", "state": "IN", "place": "Indianapolis", "tz": "America/Indiana/Indianapolis" },
{ "type": "tdwr", "id": "TJFK", "lat": 40.589, "lon": -73.881, "country": "USA", "state": "NY", "place": "New York City", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TLAS", "lat": 36.144, "lon": -115.007, "country": "USA", "state": "NV", "place": "Las Vegas", "tz": "America/Los_Angeles" },
{ "type": "tdwr", "id": "TLVE", "lat": 41.29, "lon": -82.008, "country": "USA", "state": "OH", "place": "Cleveland", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TMCI", "lat": 39.498, "lon": -94.742, "country": "USA", "state": "MO", "place": "Kansas City", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TMCO", "lat": 28.344, "lon": -81.326, "country": "USA", "state": "FL", "place": "Orlando International", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TMDW", "lat": 41.651, "lon": -87.73, "country": "USA", "state": "IL", "place": "Chicago Midway", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TMEM", "lat": 34.896, "lon": -89.993, "country": "USA", "state": "TN", "place": "Memphis", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TMIA", "lat": 25.758, "lon": -80.491, "country": "USA", "state": "FL", "place": "Miami", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TMKE", "lat": 42.819, "lon": -88.046, "country": "USA", "state": "WI", "place": "Milwaukee", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TMSP", "lat": 44.871, "lon": -92.933, "country": "USA", "state": "MN", "place": "Minneapolis", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TMSY", "lat": 30.022, "lon": -90.403, "country": "USA", "state": "LA", "place": "New Orleans", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TOKC", "lat": 35.276, "lon": -97.51, "country": "USA", "state": "OK", "place": "Oklahoma City", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TORD", "lat": 41.797, "lon": -87.858, "country": "USA", "state": "IL", "place": "Chicago O'Hare", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TPBI", "lat": 26.688, "lon": -80.273, "country": "USA", "state": "FL", "place": "West Palm Beach", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TPHL", "lat": 39.949, "lon": -75.069, "country": "USA", "state": "PA", "place": "Philadelphia", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TPHX", "lat": 33.421, "lon": -112.163, "country": "USA", "state": "AZ", "place": "Phoenix", "tz": "America/Phoenix" },
{ "type": "tdwr", "id": "TPIT", "lat": 40.501, "lon": -80.486, "country": "USA", "state": "PA", "place": "Pittsburgh", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TRDU", "lat": 36.002, "lon": -78.697, "country": "USA", "state": "NC", "place": "Raleigh Durham", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TSDF", "lat": 38.046, "lon": -85.61, "country": "USA", "state": "KY", "place": "Louisville", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TSJU", "lat": 18.474, "lon": -66.179, "country": "USA", "state": "PR", "place": "San Juan", "tz": "America/Puerto_Rico" },
{ "type": "tdwr", "id": "TSLC", "lat": 40.967, "lon": -111.93, "country": "USA", "state": "UT", "place": "Salt Lake City", "tz": "America/Denver" },
{ "type": "tdwr", "id": "TSTL", "lat": 38.805, "lon": -90.489, "country": "USA", "state": "MO", "place": "St. Louis", "tz": "America/Chicago" },
{ "type": "tdwr", "id": "TTPA", "lat": 27.86, "lon": -82.518, "country": "USA", "state": "FL", "place": "Tampa Bay", "tz": "America/New_York" },
{ "type": "tdwr", "id": "TTUL", "lat": 36.071, "lon": -95.827, "country": "USA", "state": "OK", "place": "Tulsa", "tz": "America/Chicago" }
{ "type": "tdwr", "id": "TADW", "lat": 38.695, "lon": -76.845, "country": "USA", "state": "MD", "place": "Andrews Air Force Base", "tz": "America/New_York", "elevation": 344.0 },
{ "type": "tdwr", "id": "TATL", "lat": 33.646944, "lon": -84.261944, "country": "USA", "state": "GA", "place": "Atlanta", "tz": "America/New_York", "elevation": 1076.0 },
{ "type": "tdwr", "id": "TBNA", "lat": 35.98, "lon": -86.661944, "country": "USA", "state": "TN", "place": "Nashville", "tz": "America/Chicago", "elevation": 817.0 },
{ "type": "tdwr", "id": "TBOS", "lat": 42.158056, "lon": -70.933056, "country": "USA", "state": "MA", "place": "Boston", "tz": "America/New_York", "elevation": 262.0 },
{ "type": "tdwr", "id": "TBWI", "lat": 39.09, "lon": -76.63, "country": "USA", "state": "MD", "place": "Baltimore/Wash", "tz": "America/New_York", "elevation": 299.0 },
{ "type": "tdwr", "id": "TCLT", "lat": 35.337, "lon": -80.885, "country": "USA", "state": "NC", "place": "Charlotte", "tz": "America/New_York", "elevation": 869.0 },
{ "type": "tdwr", "id": "TCMH", "lat": 40.006, "lon": -82.715, "country": "USA", "state": "OH", "place": "Columbus", "tz": "America/New_York", "elevation": 1148.0 },
{ "type": "tdwr", "id": "TCVG", "lat": 38.898056, "lon": -84.58, "country": "USA", "state": "OH", "place": "Cincinnati", "tz": "America/New_York", "elevation": 1053.0 },
{ "type": "tdwr", "id": "TDAL", "lat": 32.926, "lon": -96.968, "country": "USA", "state": "TX", "place": "Dallas Love Field", "tz": "America/Chicago", "elevation": 623.0 },
{ "type": "tdwr", "id": "TDAY", "lat": 40.022, "lon": -84.123, "country": "USA", "state": "OH", "place": "Dayton", "tz": "America/New_York", "elevation": 1020.0 },
{ "type": "tdwr", "id": "TDCA", "lat": 38.758889, "lon": -76.961944, "country": "USA", "state": "MD", "place": "Washington National", "tz": "America/New_York", "elevation": 344.0 },
{ "type": "tdwr", "id": "TDEN", "lat": 39.728056, "lon": -104.52611, "country": "USA", "state": "CO", "place": "Denver", "tz": "America/Denver", "elevation": 5702.0 },
{ "type": "tdwr", "id": "TDFW", "lat": 33.065, "lon": -96.918056, "country": "USA", "state": "TX", "place": "Dallas/Ft. Worth", "tz": "America/Chicago", "elevation": 584.0 },
{ "type": "tdwr", "id": "TDTW", "lat": 42.111111, "lon": -83.515, "country": "USA", "state": "MI", "place": "Detroit", "tz": "America/Detroit", "elevation": 771.0 },
{ "type": "tdwr", "id": "TEWR", "lat": 40.593056, "lon": -74.27, "country": "USA", "state": "NJ", "place": "Newark", "tz": "America/New_York", "elevation": 135.0 },
{ "type": "tdwr", "id": "TFLL", "lat": 26.143056, "lon": -80.343889, "country": "USA", "state": "FL", "place": "Fort Lauderdale", "tz": "America/New_York", "elevation": 121.0 },
{ "type": "tdwr", "id": "THOU", "lat": 29.516111, "lon": -95.241944, "country": "USA", "state": "TX", "place": "Houston Hobby", "tz": "America/Chicago", "elevation": 118.0 },
{ "type": "tdwr", "id": "TIAD", "lat": 39.083889, "lon": -77.528889, "country": "USA", "state": "VA", "place": "Dulles", "tz": "America/New_York", "elevation": 472.0 },
{ "type": "tdwr", "id": "TIAH", "lat": 30.065, "lon": -95.566944, "country": "USA", "state": "TX", "place": "Houston International", "tz": "America/Chicago", "elevation": 253.0 },
{ "type": "tdwr", "id": "TICH", "lat": 37.507, "lon": -97.437, "country": "USA", "state": "KS", "place": "Wichita", "tz": "America/Chicago", "elevation": 1352.0 },
{ "type": "tdwr", "id": "TIDS", "lat": 39.637, "lon": -86.436, "country": "USA", "state": "IN", "place": "Indianapolis", "tz": "America/Indiana/Indianapolis", "elevation": 846.0 },
{ "type": "tdwr", "id": "TJFK", "lat": 40.589, "lon": -73.881, "country": "USA", "state": "NY", "place": "New York City", "tz": "America/New_York", "elevation": 112.0 },
{ "type": "tdwr", "id": "TLAS", "lat": 36.143889, "lon": -115.00694, "country": "USA", "state": "NV", "place": "Las Vegas", "tz": "America/Los_Angeles", "elevation": 2057.0 },
{ "type": "tdwr", "id": "TLVE", "lat": 41.29, "lon": -82.008, "country": "USA", "state": "OH", "place": "Cleveland", "tz": "America/New_York", "elevation": 932.0 },
{ "type": "tdwr", "id": "TMCI", "lat": 39.498056, "lon": -94.741944, "country": "USA", "state": "MO", "place": "Kansas City", "tz": "America/Chicago", "elevation": 1089.0 },
{ "type": "tdwr", "id": "TMCO", "lat": 28.343889, "lon": -81.326111, "country": "USA", "state": "FL", "place": "Orlando International", "tz": "America/New_York", "elevation": 171.0 },
{ "type": "tdwr", "id": "TMDW", "lat": 41.651111, "lon": -87.73, "country": "USA", "state": "IL", "place": "Chicago Midway", "tz": "America/Chicago", "elevation": 764.0 },
{ "type": "tdwr", "id": "TMEM", "lat": 34.896, "lon": -89.993, "country": "USA", "state": "TN", "place": "Memphis", "tz": "America/Chicago", "elevation": 482.0 },
{ "type": "tdwr", "id": "TMIA", "lat": 25.758056, "lon": -80.491111, "country": "USA", "state": "FL", "place": "Miami", "tz": "America/New_York", "elevation": 125.0 },
{ "type": "tdwr", "id": "TMKE", "lat": 42.819, "lon": -88.046, "country": "USA", "state": "WI", "place": "Milwaukee", "tz": "America/Chicago", "elevation": 932.0 },
{ "type": "tdwr", "id": "TMSP", "lat": 44.871111, "lon": -92.933056, "country": "USA", "state": "MN", "place": "Minneapolis", "tz": "America/Chicago", "elevation": 1122.0 },
{ "type": "tdwr", "id": "TMSY", "lat": 30.021944, "lon": -90.403056, "country": "USA", "state": "LA", "place": "New Orleans", "tz": "America/Chicago", "elevation": 98.0 },
{ "type": "tdwr", "id": "TOKC", "lat": 35.276111, "lon": -97.51, "country": "USA", "state": "OK", "place": "Oklahoma City", "tz": "America/Chicago", "elevation": 1309.0 },
{ "type": "tdwr", "id": "TORD", "lat": 41.796944, "lon": -87.858056, "country": "USA", "state": "IL", "place": "Chicago O'Hare", "tz": "America/Chicago", "elevation": 745.0 },
{ "type": "tdwr", "id": "TPBI", "lat": 26.688056, "lon": -80.273056, "country": "USA", "state": "FL", "place": "West Palm Beach", "tz": "America/New_York", "elevation": 135.0 },
{ "type": "tdwr", "id": "TPHL", "lat": 39.949, "lon": -75.069, "country": "USA", "state": "PA", "place": "Philadelphia", "tz": "America/New_York", "elevation": 154.0 },
{ "type": "tdwr", "id": "TPHX", "lat": 33.421, "lon": -112.163, "country": "USA", "state": "AZ", "place": "Phoenix", "tz": "America/Phoenix", "elevation": 1089.0 },
{ "type": "tdwr", "id": "TPIT", "lat": 40.501111, "lon": -80.486111, "country": "USA", "state": "PA", "place": "Pittsburgh", "tz": "America/New_York", "elevation": 1385.0 },
{ "type": "tdwr", "id": "TRDU", "lat": 36.002, "lon": -78.697, "country": "USA", "state": "NC", "place": "Raleigh Durham", "tz": "America/New_York", "elevation": 515.0 },
{ "type": "tdwr", "id": "TSDF", "lat": 38.046, "lon": -85.61, "country": "USA", "state": "KY", "place": "Louisville", "tz": "America/New_York", "elevation": 732.0 },
{ "type": "tdwr", "id": "TSJU", "lat": 18.474, "lon": -66.179, "country": "USA", "state": "PR", "place": "San Juan", "tz": "America/Puerto_Rico", "elevation": 157.0 },
{ "type": "tdwr", "id": "TSLC", "lat": 40.967, "lon": -111.93, "country": "USA", "state": "UT", "place": "Salt Lake City", "tz": "America/Denver", "elevation": 4295.0 },
{ "type": "tdwr", "id": "TSTL", "lat": 38.805, "lon": -90.489, "country": "USA", "state": "MO", "place": "St. Louis", "tz": "America/Chicago", "elevation": 646.0 },
{ "type": "tdwr", "id": "TTPA", "lat": 27.86, "lon": -82.518, "country": "USA", "state": "FL", "place": "Tampa Bay", "tz": "America/New_York", "elevation": 92.0 },
{ "type": "tdwr", "id": "TTUL", "lat": 36.071111, "lon": -95.826944, "country": "USA", "state": "OK", "place": "Tulsa", "tz": "America/Chicago", "elevation": 823.0 }
]

View file

@ -380,6 +380,7 @@ set(JSON_FILES res/config/radar_sites.json)
set(TS_FILES ts/scwx_en_US.ts)
set(RADAR_SITES_FILE ${scwx-qt_SOURCE_DIR}/res/config/radar_sites.json)
set(COUNTY_DBF_FILES ${SCWX_DIR}/data/db/c_05mr24.dbf)
set(ZONE_DBF_FILES ${SCWX_DIR}/data/db/fz05mr24.dbf
${SCWX_DIR}/data/db/mz05mr24.dbf
@ -504,6 +505,12 @@ add_custom_target(scwx-qt_generate_versions ALL
add_dependencies(scwx-qt scwx-qt_generate_versions)
add_custom_target(scwx-qt_update_radar_sites
COMMAND ${Python_EXECUTABLE}
${scwx-qt_SOURCE_DIR}/tools/update_radar_sites.py
-u ${RADAR_SITES_FILE}
-t -w)
qt_add_resources(scwx-qt "generated"
PREFIX "/"
BASE ${scwx-qt_BINARY_DIR}
@ -531,6 +538,7 @@ endif()
set_target_properties(scwx-qt_generate_counties_db PROPERTIES FOLDER generate)
set_target_properties(scwx-qt_generate_versions PROPERTIES FOLDER generate)
set_target_properties(scwx-qt_update_radar_sites PROPERTIES FOLDER generate)
if (WIN32)
set(APP_ICON_RESOURCE_WINDOWS "${scwx-qt_SOURCE_DIR}/res/scwx-qt.rc")

View file

@ -0,0 +1,312 @@
#!/usr/bin/env python3
import requests
import json
import argparse
import csv
NOAA_BASE = "https://www.ncdc.noaa.gov/homr/services/station"
WARNING = "\033[93mWARNING: Updating radar sites may break tests in \
'test/source/scwx/qt/config/radar_site.test.cpp'\033[39m"
# Get the noaa station data.
# platform is what platform should be searched for
# current (should) filter to only current stations (always is filtered)
# icao is a ICAO identifier. Without it we search for all.
def get_noaa_stations(platform, current, icao = None):
params = {
"definitions": "false",
"phrData": "false",
}
if platform is not None:
params["platform"] = platform
if current:
params["current"] = "true"
if icao is not None:
params["qid"] = f"ICAO:{icao}"
res = requests.get(NOAA_BASE + "/search", params = params)
if res.ok:
return res.json()["stationCollection"]["stations"]
else:
print("NETWORK ERROR: Could not get resources from NOAA HOMR")
print(res.text)
exit(5)
# dictionary to convert NOAA types to Supercell_wx types
NOAA_TYPE_DICT = {
"TDWR": "tdwr",
"NEXRAD": "wsr88d"
}
# Given an list of objects, find the object with the best value for key.
# The values that appear earlier in values are better.
# subKey will take return the value under that key, not the full object.
# parser (needs subKey) is a function that will have the value found by
# subKey and return a parsed version of it (often 'float' because HOMR
# data uses strings for floats)
def extract_best(items, key, values, subKey = None, parser = None):
valuesPart = enumerate(reversed(values))
valueDict = dict([(k,v) for v,k in valuesPart])
best = None
bestInd = -1
for item in items:
index = valueDict.get(item[key], -1)
if bestInd is None or bestInd < index:
bestInd = index
best = item
if subKey is None or best is None:
return best
if parser is not None:
return parser(best[subKey])
return best[subKey]
# Turn the noaa stations into a dictionary that can be used to update the locations and elevations.
def make_noaa_stations_dict(noaaStations):
output = {}
for station in noaaStations:
stationId = extract_best(station["identifiers"], "idType", ["NEXRAD", "ICAO"], "id")
if stationId in output: # some stations are repeaded in non NEXRAD/TDWR locations.
continue
stationDict = {}
stationDict["lat"] = float(station["header"]["latitude_dec"])
stationDict["lon"] = float(station["header"]["longitude_dec"])
stationDict["elevation"] = extract_best(station["location"].get("elevations", []),
"elevationType",
["GROUND"],
"elevationFeet",
float)
# These are some things that could be updated from the NOAA HOMR data,
# but are not necessary in the same format, so they are disabled.
"""
stationDict["id"] = stationId
stationDict["country"] = station["location"]["geoInfo"]["countries"][0]["country"]
if "stateProvinces" in station["location"]["geoInfo"]:
stationDict["state"] = station["location"]["geoInfo"]["stateProvinces"][0]["stateProvince"]
else:
stationDict["state"] = None
stationDict["place"] = extract_best(station["names"], "nameType", ["PRINCIPAL"], "name")
stationDict["type"] = NOAA_TYPE_DICT[station["platforms"][0]["platform"]]
#stationDict["tz"] = station["location"]["geoInfo"]["utcOffsets"][0]["utcOffset"] # This is UTC offset, not timezone
"""
output[stationId] = stationDict
return output
# Get the list of updated stations (not in place), using the noaaStationsDict
# from make_noaa_stations_dict
def update_stations(noaaStationsDict, previousStations, toUpdate = None):
newStations = []
for station in previousStations:
newStation = station.copy()
if not station["id"] in noaaStationsDict:
# may be good idea to add fallback to a ICAO search for non active
# stations.
print(f"WARNING: Station '{station['id']}' not found in noaa data")
if "elevation" not in station:
newStation["elevation"] = None
elif toUpdate is None or station["id"] in toUpdate:
newStation.update(noaaStationsDict[station["id"]])
else:
newStation["elevation"] = noaaStationsDict[station["id"]]["elevation"]
newStations.append(newStation)
return newStations
# Read in csv file describing which locations to update.
# Elevation data is always updated.
def get_to_update_file(filename):
with open(filename) as file:
r = csv.reader(file)
next(r)
toUpdate = set()
for row in r:
if len(row) == 2 and row[1] == "HOMR":
toUpdate.add(row[0])
return toUpdate
# Customized dump routine. Formats it as one station per row, aligning items.
def custom_dump(stations, file):
file.write("[\n")
lengths = {}
lastKey = None
keys = None
# Find length for each value, and ensure all stations have the same keys.
for station in stations:
for key, value in station.items():
length = len(json.dumps(value))
if key in lengths:
lengths[key] = max(length, lengths[key])
else:
lengths[key] = length
lastKey = key
newKeys = list(station.keys())
if keys is None:
keys = newKeys
elif keys != newKeys:
print("DUMP ERROR: Stations did not have the same keys.")
exit(3)
# Write out each station with the correct format.
lastType = None
for station in stations:
# put an empty line between NEXRAD and TDWR.
if lastType is not None and lastType != station["type"]:
file.write("\n")
file.write("\t{ ")
for key, value in station.items():
value = json.dumps(value)
file.write(f'"{key}": {value}')
if key != lastKey:
file.write(", ")
file.write(" " * (lengths[key] - len(value)))
if station == stations[-1]:
file.write(" }\n")
else:
file.write(" },\n")
lastType = station["type"]
file.write("]\n")
# Write coordinates out to a file. Useful for checking against map program.
def make_coords(stations, file):
for station in stations:
lat = str(abs(station["lat"]))
lat += "N" if station["lat"] > 0 else "S"
lon = str(abs(station["lon"]))
lon += "E" if station["lon"] > 0 else "W"
file.write(f"{lat} {lon}\n")
def main():
parser = argparse.ArgumentParser(
description="""Update supercell-wx's location data for towers form NOAA's HOMR database.\n
Recommended Arguments: -u ../res/config/radar_sites.json -t -w""")
parser.add_argument("--current_file", "-u", type = str, default = None, required = False,
help = "The 'radar_sites.json' file to update. Without this option, this will generate a new file")
parser.add_argument("--test_updated", "-t", default = False, action = "store_true",
help = "Read in the updated file to ensure it is valid JSON. Should be used.")
parser.add_argument("--to_update_csv", "-U", type = str, default = None, required = False,
help = "Choose a CSV describing which stations to update. \
First column is station ID, Second is HOMR if it should be updated. First row is a header.")
parser.add_argument("--updated_file", "-o", type = str, default = None, required = False,
help = "The updated 'radar_sites.json' file. The default is to overwrite the current one.")
parser.add_argument("--coord_file", "-c", type = str, default = None, required = False,
help = "Output an additional file with the coordinates of each site.")
parser.add_argument("--resp_file", "-r", type = str, default = None, required = False,
help = "Output most of the JSON from the responses.")
parser.add_argument("--input_json", "-i", type = str, default = None, required = False,
help = "Instead of querying NOAA, just read in a JSON file made by \"-r\".")
parser.add_argument("--json_dump", "-j", default = False, action = "store_true",
help = "Uses 'json.dump' instead of the custom dump function. Has worse formatting.")
parser.add_argument("--more_radars", "-m", default = False, action = "store_true",
help = "Get AWOS and UPPERAIR stations as well. Should NOT be used.")
parser.add_argument("--current_only", "-C", default = False, action = "store_true",
help = "Get only currently active stations. Does not seem to change anything.")
parser.add_argument("--warn", "-w", default = False, action = "store_true",
help = "Display a warning about breaking a test by updating the radar sites.")
args = parser.parse_args()
# default to updating the same file as input
if args.updated_file is None:
if args.current_file is None:
parser.error("Needs 'current_file' or 'updated_file'")
args.updated_file = args.current_file
previousStations = None
if args.current_file is not None:
print(f"Reading Current Sites from '{args.current_file}'")
with open(args.current_file, "r") as file:
previousStations = json.load(file)
toUpdate = None
if args.to_update_csv is not None:
toUpdate = get_to_update_file(args.to_update_csv)
if args.input_json is None:
print("Getting NEXRAD stations")
noaaStations = get_noaa_stations("NEXRAD", args.current_only)
print("Getting TDWR stations")
noaaStations += get_noaa_stations("TDWR", args.current_only)
if args.more_radars: # Should not be used
print("Getting AWOS stations")
noaaStations += get_noaa_stations("AWOS", args.current_only)
print("Getting UPPERAIR stations")
noaaStations += get_noaa_stations("UPPERAIR", args.current_only)
else:
with open(args.input_json, "r") as file:
noaaStations = json.load(file)
if args.resp_file is not None:
with open(args.resp_file, "w") as file:
json.dump(noaaStations, file, indent=4)
print("Processing Data")
noaaStationsDict = make_noaa_stations_dict(noaaStations)
if args.current_file is None:
newStations = list(noaaStationsDict.values())
else:
newStations = update_stations(noaaStationsDict, previousStations, toUpdate)
print(f"Saving Updated Sites to '{args.updated_file}'")
with open(args.updated_file, "w") as file:
if args.json_dump:
json.dump(newStation, file)
else:
custom_dump(newStations, file)
if args.coord_file is not None:
print(f"Saving Coordinates to '{args.coord_file}'")
with open(args.coord_file, "w") as file:
make_coords(newStations, file)
if args.test_updated:
failed = False
with open(args.updated_file, "r") as file:
try:
data = json.load(file)
if len(data) < len(newStations):
print(f"TEST ERROR: Only read in {len(data)} out of {len(newStations)} items.")
failed = True
if json.dumps(data) != json.dumps(newStations):
print(f"TEST ERROR: Dumps are not equal")
failed = True
except Exception as e:
print(e)
failed = True
if failed:
exit(4)
if args.warn:
print(WARNING)
if __name__ == "__main__":
main()