import dataclasses import math NOT_ALLOCATED = "#fff" AERONAUTICAL_MOBILE = "#00aee1" AERONAUTICAL_MOBILE_SATELLITE = "#97c9ec" AERONAUTICAL_RADIONAVIGATION = "#c15018" AMATEUR = "#009470" AMATEUR_SATELLITE = "#d3e9dd" BROADCASTING = "#3198b9" BROADCASTING_SATELLITE = "#62bb47" EARTH_EXPLORATION_SATELLITE = "#f89339" FIXED = "#df018c" FIXED_SATELLITE = "#c283ba" INTER_SATELLITE = "#ffe376" LAND_MOBILE = "#01a2b4" LAND_MOBILE_SATELLITE = "#74cdd5" MARITIME_MOBILE = "#e9e5c2" MARITIME_MOBILE_SATELLITE = "#99c9bd" MARITIME_RADIONAVIGATION = "#4c8d75" METEOROLOGICAL_AIDS = "#f0d7c1" METEOROLIGICAL_SATELLITE = "#965c08" MOBILE = "#ead3e7" MOBILE_SATELLITE = "#995ba6" RADIO_ASTRONOMY = "#fff300" RADIODETERMINATION_SATELLITE = "#fbab54" RADIOLOCATION = "#f4cf1c" RADIOLOCATION_SATELLITE = "#c4a001" RADIONAVIGATION = "#aabd26" RADIONAVIGATION_SATELLITE = "#e9eb7d" SPACE_OPERATION = "#a34136" SPACE_RESEARCH = "#e78d96" STANDARD_FREQUENCY_AND_TIME_SIGNAL = "#8f989d" STANDARD_FREQUENCY_AND_TIME_SIGNAL_SATELLITE = "#b4b5b9" # Activity codes EXCLUSIVE = "#ef324e" # Red NON_EXCLUSIVE = "#00b185" # Green SHARED = "#231f20" # Black KHZ = 1000 MHZ = KHZ * KHZ GHZ = MHZ * KHZ @dataclasses.dataclass class Band: start: float end: float usages: list[tuple[str, str | None]] band_3khz_300khz = [ Band(3 * KHZ, 9 * KHZ, [(NOT_ALLOCATED, NOT_ALLOCATED)]), Band(9 * KHZ, 14 * KHZ, [(RADIONAVIGATION, SHARED)]), Band( 14 * KHZ, 19.95 * KHZ, [ (FIXED, NON_EXCLUSIVE), (FIXED, None), (MARITIME_MOBILE, EXCLUSIVE), ], ), Band(19.95 * KHZ, 20.05 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 20.05 * KHZ, 30 * KHZ, [ (MARITIME_MOBILE, EXCLUSIVE), (FIXED, SHARED), ], ), # There's a line at 30khz on the chart, so I figure splitting this up is a good idea Band( 30 * KHZ, 59 * KHZ, [ (MARITIME_MOBILE, EXCLUSIVE), (FIXED, SHARED), ], ), Band(59 * KHZ, 61 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 61 * KHZ, 70 * KHZ, [ (MARITIME_MOBILE, EXCLUSIVE), (FIXED, SHARED), ], ), Band( 70 * KHZ, 90 * KHZ, [ (MARITIME_MOBILE, EXCLUSIVE), (RADIOLOCATION, None), (FIXED, SHARED), ], ), Band(90 * KHZ, 110 * KHZ, [(RADIONAVIGATION, SHARED)]), Band( 110 * KHZ, 130 * KHZ, [ (FIXED, None), (RADIOLOCATION, None), (MARITIME_MOBILE, SHARED), ], ), Band( 130 * KHZ, 160 * KHZ, [ (FIXED, None), (MARITIME_MOBILE, SHARED), ], ), Band( 160 * KHZ, 190 * KHZ, [ (MARITIME_MOBILE, EXCLUSIVE), (FIXED, SHARED), ], ), Band(190 * KHZ, 200 * KHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band( 200 * KHZ, 275 * KHZ, [ (AERONAUTICAL_MOBILE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED), ], ), Band( 275 * KHZ, 285 * KHZ, [ (MARITIME_RADIONAVIGATION, None), (AERONAUTICAL_MOBILE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED), ], ), Band( 285 * KHZ, 300 * KHZ, [ (AERONAUTICAL_RADIONAVIGATION, None), (MARITIME_RADIONAVIGATION, SHARED), ], ), ] band_300khz_3mhz = [ Band( 300 * KHZ, 325 * KHZ, [ (AERONAUTICAL_RADIONAVIGATION, None), (MARITIME_RADIONAVIGATION, SHARED), ], ), Band( 325 * KHZ, 335 * KHZ, [ (AERONAUTICAL_RADIONAVIGATION, None), (AERONAUTICAL_MOBILE, None), (MARITIME_RADIONAVIGATION, SHARED), ], ), Band( 335 * KHZ, 405 * KHZ, [ (AERONAUTICAL_RADIONAVIGATION, None), (AERONAUTICAL_MOBILE, SHARED), ], ), Band( 405 * KHZ, 415 * KHZ, [ (RADIONAVIGATION, None), (AERONAUTICAL_MOBILE, SHARED), ], ), Band( 415 * KHZ, 435 * KHZ, [(MARITIME_MOBILE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], ), Band( 435 * KHZ, 495 * KHZ, [ (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), (MARITIME_MOBILE, SHARED), ], ), Band(495 * KHZ, 505 * KHZ, [(MOBILE, SHARED)]), Band(505 * KHZ, 510 * KHZ, [(MARITIME_MOBILE, SHARED)]), Band( 510 * KHZ, 525 * KHZ, [(AERONAUTICAL_RADIONAVIGATION, None), (MARITIME_MOBILE, SHARED)], ), Band( 525 * KHZ, 535 * KHZ, [(AERONAUTICAL_RADIONAVIGATION, None), (MOBILE, SHARED)] ), Band(535 * KHZ, 1605 * KHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band(1605 * KHZ, 1615 * KHZ, [(BROADCASTING, NON_EXCLUSIVE), (MOBILE, EXCLUSIVE)]), Band(1615 * KHZ, 1705 * KHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band( 1705 * KHZ, 1800 * KHZ, [ (FIXED, None), (MOBILE, None), (RADIOLOCATION, SHARED), ], ), Band(1800 * KHZ, 1900 * KHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band(1900 * KHZ, 2000 * KHZ, [(RADIOLOCATION, SHARED)]), Band( 2000 * KHZ, 2065 * KHZ, [(MARITIME_MOBILE, NON_EXCLUSIVE), (FIXED, None), (MOBILE, EXCLUSIVE)], ), Band(2065 * KHZ, 2107 * KHZ, [(MARITIME_MOBILE, SHARED)]), Band( 2107 * KHZ, 2170 * KHZ, [ (MARITIME_MOBILE, None), (LAND_MOBILE, NON_EXCLUSIVE), (MOBILE, EXCLUSIVE), (FIXED, SHARED), ], ), Band(2170 * KHZ, 2173.5 * KHZ, [(MARITIME_MOBILE, SHARED)]), Band(2173.5 * KHZ, 2190.5 * KHZ, [(MOBILE, SHARED)]), Band(2190.5 * KHZ, 2194 * KHZ, [(MARITIME_MOBILE, SHARED)]), Band( 2194 * KHZ, 2495 * KHZ, [ (MARITIME_MOBILE, None), (LAND_MOBILE, NON_EXCLUSIVE), (MOBILE, EXCLUSIVE), (FIXED, SHARED), ], ), Band(2495 * KHZ, 2501 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 2501 * KHZ, 2502 * KHZ, [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], ), Band(2502 * KHZ, 2505 * KHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 2505 * KHZ, 2850 * KHZ, [ (MARITIME_MOBILE, None), (LAND_MOBILE, NON_EXCLUSIVE), (MOBILE, EXCLUSIVE), (FIXED, SHARED), ], ), Band( 2850 * KHZ, 3000 * KHZ, [ (AERONAUTICAL_MOBILE, SHARED), ], ), ] band_3mhz_30mhz = [ Band(3 * MHZ, 3.025 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(3.025 * MHZ, 3.155 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(3.155 * MHZ, 3.230 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band( 3.230 * MHZ, 3.4 * MHZ, [(FIXED, None), (MOBILE, None), (RADIOLOCATION, SHARED)] ), Band(3.4 * MHZ, 3.5 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(3.5 * MHZ, 4.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band(4.0 * MHZ, 4.063 * MHZ, [(MARITIME_MOBILE, None), (FIXED, SHARED)]), Band(4.063 * MHZ, 4.438 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(4.438 * MHZ, 4.65 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band(4.65 * MHZ, 4.7 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(4.7 * MHZ, 4.75 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(4.75 * MHZ, 4.85 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band(4.85 * MHZ, 4.995 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), Band(4.995 * MHZ, 5.003 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 5.003 * MHZ, 5.005 * MHZ, [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], ), Band(5.005 * MHZ, 5.060 * MHZ, [(FIXED, SHARED)]), Band(5.060 * MHZ, 5.45 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band(5.45 * MHZ, 5.68 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(5.68 * MHZ, 5.73 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(5.73 * MHZ, 5.90 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band( 5.90 * MHZ, 5.95 * MHZ, [(BROADCASTING, None), (FIXED, None), (MOBILE, SHARED)] ), Band(5.95 * MHZ, 6.2 * MHZ, [(BROADCASTING, SHARED)]), Band(6.2 * MHZ, 6.525 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(6.525 * MHZ, 6.685 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(6.685 * MHZ, 6.765 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(6.765 * MHZ, 7.0 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band(7.0 * MHZ, 7.1 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)]), Band(7.1 * MHZ, 7.3 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band( 7.3 * MHZ, 7.35 * MHZ, [(BROADCASTING, None), (FIXED, None), (MOBILE, SHARED)] ), Band(7.35 * MHZ, 8.1 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band(8.1 * MHZ, 8.195 * MHZ, [(MARITIME_MOBILE, None), (FIXED, SHARED)]), Band(8.195 * MHZ, 8.815 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(8.815 * MHZ, 8.965 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(8.965 * MHZ, 9.040 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(9.040 * MHZ, 9.4 * MHZ, [(FIXED, SHARED)]), Band(9.4 * MHZ, 9.5 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), Band(9.5 * MHZ, 9.9 * MHZ, [(BROADCASTING, SHARED)]), Band(9.9 * MHZ, 9.995 * MHZ, [(FIXED, SHARED)]), Band(9.995 * MHZ, 10.003 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 10.003 * MHZ, 10.005 * MHZ, [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], ), Band(10.005 * MHZ, 10.1 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(10.1 * MHZ, 10.15 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band(10.15 * MHZ, 11.175 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band(11.175 * MHZ, 11.275 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(11.275 * MHZ, 11.4 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(11.4 * MHZ, 11.6 * MHZ, [(FIXED, SHARED)]), Band(11.6 * MHZ, 11.65 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), Band(11.65 * MHZ, 12.05 * MHZ, [(BROADCASTING, SHARED)]), Band(12.05 * MHZ, 12.10 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), Band(12.10 * MHZ, 12.23 * MHZ, [(FIXED, SHARED)]), Band(12.23 * MHZ, 13.2 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(13.2 * MHZ, 13.26 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(13.26 * MHZ, 13.36 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(13.36 * MHZ, 13.41 * MHZ, [(RADIO_ASTRONOMY, SHARED)]), Band(13.41 * MHZ, 13.57 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), Band( 13.57 * MHZ, 13.6 * MHZ, [(MOBILE, EXCLUSIVE), (BROADCASTING, None), (FIXED, SHARED)], ), Band(13.6 * MHZ, 13.8 * MHZ, [(BROADCASTING, FIXED)]), Band( 13.8 * MHZ, 13.87 * MHZ, [(MOBILE, EXCLUSIVE), (BROADCASTING, None), (FIXED, SHARED)], ), Band(13.87 * MHZ, 14.0 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), Band( 14.0 * MHZ, 14.25 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] ), Band(14.25 * MHZ, 14.35 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band(14.35 * MHZ, 14.99 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), Band(14.99 * MHZ, 15.005 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 15.005 * MHZ, 15.010 * MHZ, [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], ), Band(15.010 * MHZ, 15.10 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(15.10 * MHZ, 15.6 * MHZ, [(BROADCASTING, SHARED)]), Band(15.6 * MHZ, 15.8 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), Band(15.8 * MHZ, 16.36 * MHZ, [(FIXED, SHARED)]), Band(16.36 * MHZ, 17.41 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(17.41 * MHZ, 17.48 * MHZ, [(FIXED, SHARED)]), Band(17.48 * MHZ, 17.55 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), Band(17.55 * MHZ, 17.9 * MHZ, [(BROADCASTING, SHARED)]), Band(17.9 * MHZ, 17.97 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(17.97 * MHZ, 18.03 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(18.03 * MHZ, 18.068 * MHZ, [(FIXED, SHARED)]), Band( 18.068 * MHZ, 18.168 * MHZ, [(AMATEUR, None), (AMATEUR_SATELLITE, NON_EXCLUSIVE)], ), Band(18.168 * MHZ, 18.78 * MHZ, [(FIXED, None), (MOBILE, SHARED)]), Band(18.78 * MHZ, 18.9 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(18.9 * MHZ, 19.02 * MHZ, [(BROADCASTING, None), (FIXED, SHARED)]), Band(19.02 * MHZ, 19.68 * MHZ, [(FIXED, SHARED)]), Band(19.68 * MHZ, 19.80 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(19.80 * MHZ, 19.99 * MHZ, [(FIXED, SHARED)]), Band( 19.99 * MHZ, 19.995 * MHZ, [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], ), Band(19.995 * MHZ, 20.005 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 20.005 * MHZ, 20.010 * MHZ, [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], ), Band(20.010 * MHZ, 21.0 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), Band( 21.0 * MHZ, 21.45 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] ), Band(21.45 * MHZ, 21.85 * MHZ, [(BROADCASTING, SHARED)]), Band(21.85 * MHZ, 21.924 * MHZ, [(FIXED, SHARED)]), Band(21.924 * MHZ, 22.0 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(22.0 * MHZ, 22.855 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(22.855 * MHZ, 23.0 * MHZ, [(FIXED, SHARED)]), Band(23.0 * MHZ, 23.2 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), Band(23.2 * MHZ, 23.35 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(23.35 * MHZ, 24.89 * MHZ, [(MOBILE, EXCLUSIVE), (FIXED, SHARED)]), Band( 24.89 * MHZ, 24.99 * MHZ, [(AMATEUR, None), (AMATEUR_SATELLITE, NON_EXCLUSIVE)] ), Band(24.99 * MHZ, 25.005 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 25.005 * MHZ, 25.01 * MHZ, [(SPACE_RESEARCH, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)], ), Band(25.01 * MHZ, 25.07 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(25.07 * MHZ, 25.21 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(25.21 * MHZ, 25.33 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(25.33 * MHZ, 25.55 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(25.55 * MHZ, 25.67 * MHZ, [(RADIO_ASTRONOMY, SHARED)]), Band(25.67 * MHZ, 26.1 * MHZ, [(BROADCASTING, SHARED)]), Band(26.1 * MHZ, 26.175 * MHZ, [(MARITIME_MOBILE, SHARED)]), Band(26.175 * MHZ, 26.48 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(26.48 * MHZ, 26.95 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(26.95 * MHZ, 26.96 * MHZ, [(FIXED, NON_EXCLUSIVE)]), Band(26.96 * MHZ, 27.23 * MHZ, [(MOBILE, NON_EXCLUSIVE)]), Band(27.23 * MHZ, 27.41 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(27.41 * MHZ, 27.54 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(27.54 * MHZ, 28.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(28.0 * MHZ, 29.7 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)]), Band(29.7 * MHZ, 29.8 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(29.8 * MHZ, 29.89 * MHZ, [(FIXED, NON_EXCLUSIVE)]), Band(29.89 * MHZ, 29.91 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(29.91 * MHZ, 30.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), ] band_30mhz_300mhz = [ Band(30.0 * MHZ, 30.56 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(30.56 * MHZ, 32.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(32.0 * MHZ, 33.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(33.0 * MHZ, 34.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(34.0 * MHZ, 35.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(35.0 * MHZ, 36.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(36.0 * MHZ, 37.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(37.0 * MHZ, 37.5 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band( 37.5 * MHZ, 38.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE), (RADIO_ASTRONOMY, SHARED)], ), Band( 38.0 * MHZ, 38.25 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE), (RADIO_ASTRONOMY, SHARED)], ), Band(38.25 * MHZ, 39.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(39.0 * MHZ, 40.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(40.0 * MHZ, 42.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(42.0 * MHZ, 43.69 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(43.69 * MHZ, 46.6 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(46.6 * MHZ, 47.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(47.0 * MHZ, 49.6 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(49.6 * MHZ, 50.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(50.0 * MHZ, 54.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band(54.0 * MHZ, 72.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band(72.0 * MHZ, 73.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(73.0 * MHZ, 74.6 * MHZ, [(RADIO_ASTRONOMY, SHARED)]), Band(74.6 * MHZ, 74.8 * MHZ, [(MOBILE, None), (FIXED, SHARED)]), Band(74.8 * MHZ, 75.2 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band(75.2 * MHZ, 75.4 * MHZ, [(MOBILE, None), (FIXED, SHARED)]), Band(75.4 * MHZ, 76.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(76.0 * MHZ, 88.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band(88.0 * MHZ, 108.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band(108.0 * MHZ, 117.975 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band(117.975 * MHZ, 121.9375 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(121.9375 * MHZ, 123.0875 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), Band(123.0875 * MHZ, 128.8125 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(128.8125 * MHZ, 132.0125 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), Band(132.0125 * MHZ, 136.0 * MHZ, [(AERONAUTICAL_MOBILE, SHARED)]), Band(136.0 * MHZ, 137.0 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), Band( 137.0 * MHZ, 137.025 * MHZ, [ (METEOROLIGICAL_SATELLITE, None), (SPACE_OPERATION, None), (SPACE_RESEARCH, None), (MOBILE_SATELLITE, SHARED), ], ), Band( 137.025 * MHZ, 137.175 * MHZ, [ (METEOROLIGICAL_SATELLITE, None), (SPACE_OPERATION, None), (SPACE_RESEARCH, None), (MOBILE_SATELLITE, SHARED), ], ), Band( 137.175 * MHZ, 137.825 * MHZ, [ (METEOROLIGICAL_SATELLITE, None), (SPACE_OPERATION, None), (SPACE_RESEARCH, None), (MOBILE_SATELLITE, SHARED), ], ), Band( 137.825 * MHZ, 138.0 * MHZ, [ (METEOROLIGICAL_SATELLITE, None), (SPACE_OPERATION, None), (SPACE_RESEARCH, None), (MOBILE_SATELLITE, SHARED), ], ), Band(138.0 * MHZ, 144.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band( 144.0 * MHZ, 146.0 * MHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] ), Band(146.0 * MHZ, 148.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band( 148.0 * MHZ, 149.9 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE), (MOBILE_SATELLITE, SHARED)], ), Band( 149.9 * MHZ, 150.05 * MHZ, [(MOBILE_SATELLITE, None), (RADIONAVIGATION_SATELLITE, SHARED)], ), Band(150.05 * MHZ, 150.8 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(150.8 * MHZ, 152.855 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(152.855 * MHZ, 154.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(154.0 * MHZ, 156.2475 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(156.2475 * MHZ, 157.0375 * MHZ, [(MARITIME_MOBILE, NON_EXCLUSIVE)]), Band(157.0375 * MHZ, 157.1875 * MHZ, [(MARITIME_MOBILE, EXCLUSIVE)]), Band( 157.1875 * MHZ, 157.45 * MHZ, [(LAND_MOBILE, None), (MARITIME_MOBILE, NON_EXCLUSIVE)], ), Band(157.45 * MHZ, 161.575 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(161.575 * MHZ, 161.625 * MHZ, [(MARITIME_MOBILE, NON_EXCLUSIVE)]), Band(161.625 * MHZ, 161.775 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band( 161.775 * MHZ, 162.0125 * MHZ, [(LAND_MOBILE, None), (MARITIME_MOBILE, NON_EXCLUSIVE)], ), Band(162.0125 * MHZ, 173.2 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(173.2 * MHZ, 173.4 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(173.4 * MHZ, 174.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(174.0 * MHZ, 216.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band( 216.0 * MHZ, 220.0 * MHZ, [ (AMATEUR, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE), (RADIOLOCATION, None), (MOBILE, None), (FIXED, EXCLUSIVE), ], ), Band( 220.0 * MHZ, 222.0 * MHZ, [(RADIOLOCATION, EXCLUSIVE), (FIXED, None), (LAND_MOBILE, SHARED)], ), Band( 222.0 * MHZ, 225.0 * MHZ, [(RADIOLOCATION, EXCLUSIVE), (AMATEUR, NON_EXCLUSIVE)] ), Band(225.0 * MHZ, 235.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band( 235.0 * MHZ, 300.0 * MHZ, [(MOBILE, None), (MOBILE_SATELLITE, None), (FIXED, EXCLUSIVE)], ), ] band_300mhz_3ghz = [ Band( 300.0 * MHZ, 322.0 * MHZ, [(MOBILE, None), (MOBILE_SATELLITE, None), (FIXED, EXCLUSIVE)], ), Band(322.0 * MHZ, 328.6 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(328.6 * MHZ, 335.4 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band( 335.4 * MHZ, 399.9 * MHZ, [(MOBILE, None), (MOBILE_SATELLITE, None), (FIXED, EXCLUSIVE)], ), Band( 399.9 * MHZ, 400.05 * MHZ, [(MOBILE_SATELLITE, None), (RADIODETERMINATION_SATELLITE, SHARED)], ), Band(400.05 * MHZ, 400.15 * MHZ, [(STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED)]), Band( 400.15 * MHZ, 401.0 * MHZ, [ (METEOROLIGICAL_SATELLITE, EXCLUSIVE), (SPACE_OPERATION, None), (SPACE_RESEARCH, None), (MOBILE_SATELLITE, None), (METEOROLOGICAL_AIDS, SHARED), ], ), Band( 401.0 * MHZ, 402.0 * MHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (METEOROLIGICAL_SATELLITE, NON_EXCLUSIVE), (EARTH_EXPLORATION_SATELLITE, None), (METEOROLIGICAL_SATELLITE, EXCLUSIVE), (SPACE_OPERATION, None), (METEOROLOGICAL_AIDS, SHARED), ], ), Band( 402.0 * MHZ, 403.0 * MHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (METEOROLIGICAL_SATELLITE, NON_EXCLUSIVE), (EARTH_EXPLORATION_SATELLITE, None), (METEOROLIGICAL_SATELLITE, EXCLUSIVE), (METEOROLOGICAL_AIDS, SHARED), ], ), Band(403.0 * MHZ, 406.0 * MHZ, [(METEOROLOGICAL_AIDS, SHARED)]), Band(406.0 * MHZ, 406.1 * MHZ, [(MOBILE_SATELLITE, SHARED)]), Band( 406.1 * MHZ, 410.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE), (RADIO_ASTRONOMY, SHARED)], ), Band( 410.0 * MHZ, 420.0 * MHZ, [(SPACE_RESEARCH, None), (MOBILE, None), (FIXED, EXCLUSIVE)], ), Band( 420.0 * MHZ, 450.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)] ), Band(450.0 * MHZ, 454.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(454.0 * MHZ, 455.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(455.0 * MHZ, 456.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(456.0 * MHZ, 460.0 * MHZ, [(LAND_MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band( 460.0 * MHZ, 462.5375 * MHZ, [ (METEOROLIGICAL_SATELLITE, EXCLUSIVE), (FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE), ], ), Band( 462.5375 * MHZ, 462.7375 * MHZ, [(METEOROLIGICAL_SATELLITE, EXCLUSIVE), (LAND_MOBILE, NON_EXCLUSIVE)], ), Band( 462.7375 * MHZ, 467.5375 * MHZ, [ (METEOROLIGICAL_SATELLITE, EXCLUSIVE), (FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE), ], ), Band( 467.5375 * MHZ, 467.7375 * MHZ, [(METEOROLIGICAL_SATELLITE, EXCLUSIVE), (LAND_MOBILE, NON_EXCLUSIVE)], ), Band( 467.7375 * MHZ, 470.0 * MHZ, [ (METEOROLIGICAL_SATELLITE, EXCLUSIVE), (FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE), ], ), Band( 470.0 * MHZ, 512.0 * MHZ, [(BROADCASTING, None), (FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)], ), Band(512.0 * MHZ, 608.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band(608.0 * MHZ, 614.0 * MHZ, [(RADIO_ASTRONOMY, None), (LAND_MOBILE, SHARED)]), Band(614.0 * MHZ, 698.0 * MHZ, [(BROADCASTING, NON_EXCLUSIVE)]), Band( 698.0 * MHZ, 746.0 * MHZ, [(BROADCASTING, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], ), Band( 746.0 * MHZ, 764.0 * MHZ, [(BROADCASTING, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], ), Band(764.0 * MHZ, 776.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band( 776.0 * MHZ, 794.0 * MHZ, [(BROADCASTING, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], ), Band(794.0 * MHZ, 806.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(806.0 * MHZ, 821.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(821.0 * MHZ, 824.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(824.0 * MHZ, 849.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(849.0 * MHZ, 851.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(851.0 * MHZ, 866.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(866.0 * MHZ, 869.0 * MHZ, [(LAND_MOBILE, NON_EXCLUSIVE)]), Band(869.0 * MHZ, 894.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(894.0 * MHZ, 896.0 * MHZ, [(AERONAUTICAL_MOBILE, NON_EXCLUSIVE)]), Band(896.0 * MHZ, 901.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(901.0 * MHZ, 902.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), Band( 902.0 * MHZ, 928.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)] ), Band(928.0 * MHZ, 929.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), Band(929.0 * MHZ, 930.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(930.0 * MHZ, 931.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), Band(931.0 * MHZ, 932.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(932.0 * MHZ, 935.0 * MHZ, [(FIXED, SHARED)]), Band(935.0 * MHZ, 940.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(940.0 * MHZ, 941.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band(941.0 * MHZ, 944.0 * MHZ, [(FIXED, SHARED)]), Band(944.0 * MHZ, 960.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), Band(960.0 * MHZ, 1215.0 * MHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band( 1215.0 * MHZ, 1240.0 * MHZ, [(RADIOLOCATION, None), (RADIONAVIGATION_SATELLITE, EXCLUSIVE)], ), Band( 1240.0 * MHZ, 1300.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 1300.0 * MHZ, 1350.0 * MHZ, [(RADIOLOCATION, EXCLUSIVE), (AERONAUTICAL_RADIONAVIGATION, SHARED)], ), Band( 1350.0 * MHZ, 1390.0 * MHZ, [(RADIOLOCATION, None), (MOBILE, None), (FIXED, EXCLUSIVE)], ), Band( 1390.0 * MHZ, 1392.0 * MHZ, [(FIXED_SATELLITE, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], ), Band(1392.0 * MHZ, 1395.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), Band(1395.0 * MHZ, 1400.0 * MHZ, [(LAND_MOBILE, SHARED)]), Band( 1400.0 * MHZ, 1427.0 * MHZ, [ (SPACE_RESEARCH, None), (EARTH_EXPLORATION_SATELLITE, None), (RADIO_ASTRONOMY, SHARED), ], ), Band(1427.0 * MHZ, 1429.5 * MHZ, [(FIXED, NON_EXCLUSIVE), (LAND_MOBILE, SHARED)]), Band(1429.5 * MHZ, 1430.0 * MHZ, [(FIXED, None), (LAND_MOBILE, NON_EXCLUSIVE)]), Band( 1430.0 * MHZ, 1432.0 * MHZ, [(LAND_MOBILE, None), (FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], ), Band(1432.0 * MHZ, 1435.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(1435.0 * MHZ, 1525.0 * MHZ, [(MOBILE, SHARED)]), Band(1525.0 * MHZ, 1530.0 * MHZ, [(MOBILE_SATELLITE, None), (MOBILE, SHARED)]), Band( 1530.0 * MHZ, 1535.0 * MHZ, [(MOBILE, None), (MOBILE_SATELLITE, None), (MARITIME_MOBILE_SATELLITE, SHARED)], ), Band( 1535.0 * MHZ, 1544.0 * MHZ, [(MOBILE_SATELLITE, None), (MARITIME_MOBILE_SATELLITE, SHARED)], ), Band(1544.0 * MHZ, 1545.0 * MHZ, [(MOBILE_SATELLITE, SHARED)]), Band( 1545.0 * MHZ, 1549.5 * MHZ, [(MOBILE_SATELLITE, None), (AERONAUTICAL_MOBILE_SATELLITE, SHARED)], ), Band( 1549.5 * MHZ, 1558.5 * MHZ, [(MOBILE_SATELLITE, None), (AERONAUTICAL_MOBILE_SATELLITE, SHARED)], ), Band(1558.5 * MHZ, 1559.0 * MHZ, [(AERONAUTICAL_MOBILE_SATELLITE, SHARED)]), Band( 1559.0 * MHZ, 1610.0 * MHZ, [(RADIONAVIGATION_SATELLITE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], ), Band( 1610.0 * MHZ, 1610.6 * MHZ, [ (MOBILE_SATELLITE, None), (RADIODETERMINATION_SATELLITE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED), ], ), Band( 1610.6 * MHZ, 1613.8 * MHZ, [ (RADIO_ASTRONOMY, None), (MOBILE_SATELLITE, None), (RADIODETERMINATION_SATELLITE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED), ], ), Band( 1613.8 * MHZ, 1626.5 * MHZ, [ (MOBILE_SATELLITE, None), (MOBILE_SATELLITE, None), (RADIODETERMINATION_SATELLITE, None), (AERONAUTICAL_RADIONAVIGATION, SHARED), ], ), Band(1626.5 * MHZ, 1660.0 * MHZ, [(MOBILE_SATELLITE, SHARED)]), Band( 1660.0 * MHZ, 1660.5 * MHZ, [(MOBILE_SATELLITE, None), (RADIO_ASTRONOMY, SHARED)], ), Band( 1660.5 * MHZ, 1668.4 * MHZ, [(SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED)] ), Band( 1668.4 * MHZ, 1670.0 * MHZ, [(METEOROLOGICAL_AIDS, None), (RADIO_ASTRONOMY, SHARED)], ), Band(1670.0 * MHZ, 1675.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), Band( 1675.0 * MHZ, 1700.0 * MHZ, [(METEOROLOGICAL_AIDS, None), (METEOROLIGICAL_SATELLITE, SHARED)], ), Band( 1700.0 * MHZ, 1710.0 * MHZ, [ (FIXED, NON_EXCLUSIVE), (FIXED, EXCLUSIVE), (METEOROLIGICAL_SATELLITE, SHARED), ], ), Band(1710.0 * MHZ, 1755.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(1755.0 * MHZ, 1850.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(1850.0 * MHZ, 2000.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(2000.0 * MHZ, 2020.0 * MHZ, [(MOBILE_SATELLITE, NON_EXCLUSIVE)]), Band(2020.0 * MHZ, 2025.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band( 2025.0 * MHZ, 2110.0 * MHZ, [ (FIXED, None), (MOBILE, NON_EXCLUSIVE), (SPACE_OPERATION, None), (EARTH_EXPLORATION_SATELLITE, None), (SPACE_RESEARCH, EXCLUSIVE), ], ), Band(2110.0 * MHZ, 2155.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(2155.0 * MHZ, 2160.0 * MHZ, [(FIXED, NON_EXCLUSIVE)]), Band(2160.0 * MHZ, 2180.0 * MHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(2180.0 * MHZ, 2200.0 * MHZ, [(MOBILE_SATELLITE, NON_EXCLUSIVE)]), Band( 2200.0 * MHZ, 2290.0 * MHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (SPACE_OPERATION, None), (SPACE_RESEARCH, None), (MOBILE, None), (FIXED, EXCLUSIVE), ], ), Band( 2290.0 * MHZ, 2300.0 * MHZ, [(MOBILE, None), (FIXED, EXCLUSIVE), (SPACE_RESEARCH, SHARED)], ), Band(2300.0 * MHZ, 2305.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band( 2305.0 * MHZ, 2310.0 * MHZ, [ (FIXED, None), (MOBILE, None), (RADIOLOCATION, None), (AMATEUR, NON_EXCLUSIVE), ], ), Band( 2310.0 * MHZ, 2320.0 * MHZ, [ (BROADCASTING_SATELLITE, None), (RADIOLOCATION, None), (FIXED, None), (MOBILE, NON_EXCLUSIVE), (FIXED, None), (MOBILE, None), (RADIOLOCATION, EXCLUSIVE), ], ), Band( 2320.0 * MHZ, 2345.0 * MHZ, [ (BROADCASTING_SATELLITE, NON_EXCLUSIVE), (FIXED, None), (RADIOLOCATION, None), (MOBILE, EXCLUSIVE), ], ), Band( 2345.0 * MHZ, 2360.0 * MHZ, [ (BROADCASTING_SATELLITE, None), (RADIOLOCATION, None), (FIXED, None), (MOBILE, NON_EXCLUSIVE), (FIXED, None), (MOBILE, None), (RADIOLOCATION, EXCLUSIVE), ], ), Band( 2360.0 * MHZ, 2385.0 * MHZ, [(FIXED, None), (RADIOLOCATION, EXCLUSIVE), (MOBILE, SHARED)], ), Band(2385.0 * MHZ, 2390.0 * MHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), Band(2390.0 * MHZ, 2400.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band(2400.0 * MHZ, 2417.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE)]), Band( 2417.0 * MHZ, 2450.0 * MHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 2450.0 * MHZ, 2483.5 * MHZ, [(RADIOLOCATION, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], ), Band( 2483.5 * MHZ, 2500.0 * MHZ, [(MOBILE_SATELLITE, None), (RADIODETERMINATION_SATELLITE, SHARED)], ), Band( 2500.0 * MHZ, 2655.0 * MHZ, [ (FIXED, None), (FIXED_SATELLITE, None), (MOBILE, None), (BROADCASTING_SATELLITE, NON_EXCLUSIVE), ], ), Band( 2655.0 * MHZ, 2690.0 * MHZ, [ (FIXED_SATELLITE, None), (FIXED, None), (BROADCASTING_SATELLITE, None), (MOBILE, NON_EXCLUSIVE), (SPACE_RESEARCH, None), (RADIO_ASTRONOMY, None), (EARTH_EXPLORATION_SATELLITE, SHARED), ], ), Band( 2690.0 * MHZ, 2700.0 * MHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED), ], ), Band( 2700.0 * MHZ, 2900.0 * MHZ, [ (RADIOLOCATION, None), (METEOROLOGICAL_AIDS, None), (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), ], ), Band( 2900.0 * MHZ, 3000.0 * MHZ, [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], ), ] band_3ghz_30ghz = [ Band( 3.0 * GHZ, 3.1 * GHZ, [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], ), Band( 3.1 * GHZ, 3.3 * GHZ, [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 3.3 * GHZ, 3.5 * GHZ, [(AMATEUR, None), (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 3.5 * GHZ, 3.6 * GHZ, [ (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, None), (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), ], ), Band( 3.6 * GHZ, 3.65 * GHZ, [ (RADIOLOCATION, None), (FIXED_SATELLITE, NON_EXCLUSIVE), (RADIOLOCATION, None), (AERONAUTICAL_RADIONAVIGATION, EXCLUSIVE), ], ), Band( 3.65 * GHZ, 3.7 * GHZ, [(FIXED, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], ), Band(3.7 * GHZ, 4.2 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), Band(4.2 * GHZ, 4.4 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band(4.4 * GHZ, 4.5 * GHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band( 4.5 * GHZ, 4.8 * GHZ, [(FIXED, None), (MOBILE, EXCLUSIVE), (FIXED_SATELLITE, NON_EXCLUSIVE)], ), Band(4.8 * GHZ, 4.94 * GHZ, [(MOBILE, None), (FIXED, EXCLUSIVE)]), Band(4.94 * GHZ, 4.99 * GHZ, [(MOBILE, None), (FIXED, NON_EXCLUSIVE)]), Band(4.99 * GHZ, 5.0 * GHZ, [(SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED)]), Band(5.0 * GHZ, 5.15 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band( 5.15 * GHZ, 5.25 * GHZ, [(FIXED_SATELLITE, NON_EXCLUSIVE), (AERONAUTICAL_RADIONAVIGATION, SHARED)], ), Band( 5.25 * GHZ, 5.35 * GHZ, [ (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), ], ), Band( 5.35 * GHZ, 5.46 * GHZ, [ (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), (AERONAUTICAL_RADIONAVIGATION, SHARED), ], ), Band(5.46 * GHZ, 5.47 * GHZ, [(RADIOLOCATION, None), (RADIONAVIGATION, SHARED)]), Band( 5.47 * GHZ, 5.6 * GHZ, [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], ), Band( 5.6 * GHZ, 5.65 * GHZ, [ (RADIOLOCATION, None), (METEOROLOGICAL_AIDS, None), (MARITIME_RADIONAVIGATION, SHARED), ], ), Band( 5.65 * GHZ, 5.83 * GHZ, [(AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)] ), Band( 5.83 * GHZ, 5.85 * GHZ, [ (AMATEUR, None), (AMATEUR_SATELLITE, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), ], ), Band( 5.85 * GHZ, 5.925 * GHZ, [(AMATEUR, None), (FIXED_SATELLITE, None), (RADIOLOCATION, EXCLUSIVE)], ), Band(5.925 * GHZ, 6.425 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), Band(6.425 * GHZ, 6.525 * GHZ, [(MOBILE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), Band(6.525 * GHZ, 6.70 * GHZ, [(FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), Band(6.70 * GHZ, 6.875 * GHZ, [(FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), Band( 6.875 * GHZ, 7.025 * GHZ, [(FIXED, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], ), Band( 7.025 * GHZ, 7.075 * GHZ, [(FIXED, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], ), Band(7.075 * GHZ, 7.125 * GHZ, [(FIXED, None), (MOBILE, NON_EXCLUSIVE)]), Band(7.125 * GHZ, 7.19 * GHZ, [(FIXED, EXCLUSIVE)]), Band(7.19 * GHZ, 7.235 * GHZ, [(SPACE_RESEARCH, None), (FIXED, EXCLUSIVE)]), Band(7.235 * GHZ, 7.25 * GHZ, [(FIXED, EXCLUSIVE)]), Band( 7.25 * GHZ, 7.3 * GHZ, [(FIXED, None), (MOBILE_SATELLITE, None), (FIXED_SATELLITE, EXCLUSIVE)], ), Band( 7.3 * GHZ, 7.45 * GHZ, [(MOBILE_SATELLITE, None), (FIXED, None), (FIXED_SATELLITE, EXCLUSIVE)], ), Band( 7.45 * GHZ, 7.55 * GHZ, [ (MOBILE_SATELLITE, None), (FIXED, None), (METEOROLIGICAL_SATELLITE, None), (FIXED_SATELLITE, EXCLUSIVE), ], ), Band( 7.55 * GHZ, 7.75 * GHZ, [(MOBILE_SATELLITE, None), (FIXED, None), (FIXED_SATELLITE, EXCLUSIVE)], ), Band(7.75 * GHZ, 7.90 * GHZ, [(FIXED, EXCLUSIVE)]), Band( 7.90 * GHZ, 8.025 * GHZ, [(FIXED, None), (MOBILE_SATELLITE, None), (FIXED_SATELLITE, EXCLUSIVE)], ), Band( 8.025 * GHZ, 8.175 * GHZ, [ (MOBILE_SATELLITE, None), (FIXED, None), (EARTH_EXPLORATION_SATELLITE, None), (FIXED_SATELLITE, EXCLUSIVE), ], ), Band( 8.175 * GHZ, 8.215 * GHZ, [ (MOBILE_SATELLITE, None), (METEOROLIGICAL_SATELLITE, None), (FIXED, None), (FIXED_SATELLITE, None), (EARTH_EXPLORATION_SATELLITE, EXCLUSIVE), ], ), Band( 8.215 * GHZ, 8.4 * GHZ, [ (MOBILE_SATELLITE, None), (FIXED, None), (FIXED_SATELLITE, None), (EARTH_EXPLORATION_SATELLITE, EXCLUSIVE), ], ), Band(8.4 * GHZ, 8.45 * GHZ, [(SPACE_RESEARCH, None), (FIXED, EXCLUSIVE)]), Band(8.45 * GHZ, 8.5 * GHZ, [(FIXED, EXCLUSIVE), (SPACE_RESEARCH, SHARED)]), Band( 8.5 * GHZ, 9.0 * GHZ, [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 9.0 * GHZ, 9.2 * GHZ, [(RADIOLOCATION, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], ), Band( 9.2 * GHZ, 9.3 * GHZ, [(RADIOLOCATION, None), (MARITIME_RADIONAVIGATION, SHARED)], ), Band( 9.3 * GHZ, 9.5 * GHZ, [(RADIOLOCATION, None), (METEOROLOGICAL_AIDS, None), (RADIONAVIGATION, SHARED)], ), Band( 9.5 * GHZ, 10.0 * GHZ, [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 10.0 * GHZ, 10.45 * GHZ, [(AMATEUR, None), (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 10.45 * GHZ, 10.5 * GHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, SHARED)], ), Band(10.5 * GHZ, 10.55 * GHZ, [(RADIOLOCATION, SHARED)]), Band(10.55 * GHZ, 10.6 * GHZ, [(FIXED, NON_EXCLUSIVE)]), Band( 10.6 * GHZ, 10.68 * GHZ, [ (FIXED, NON_EXCLUSIVE), (RADIO_ASTRONOMY, None), (EARTH_EXPLORATION_SATELLITE, None), (SPACE_RESEARCH, SHARED), ], ), Band( 10.68 * GHZ, 10.7 * GHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED), ], ), Band(10.7 * GHZ, 11.7 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), Band(11.7 * GHZ, 12.2 * GHZ, [(FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)]), Band( 12.2 * GHZ, 12.7 * GHZ, [(FIXED, None), (BROADCASTING_SATELLITE, NON_EXCLUSIVE)] ), Band( 12.7 * GHZ, 12.75 * GHZ, [(FIXED, None), (MOBILE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], ), Band( 12.75 * GHZ, 13.25 * GHZ, [ (FIXED, None), (MOBILE, None), (FIXED_SATELLITE, NON_EXCLUSIVE), (SPACE_RESEARCH, SHARED), ], ), Band( 13.25 * GHZ, 13.4 * GHZ, [(SPACE_RESEARCH, None), (AERONAUTICAL_RADIONAVIGATION, SHARED)], ), Band( 13.4 * GHZ, 13.75 * GHZ, [ (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, None), (SPACE_RESEARCH, SHARED), ], ), Band( 13.75 * GHZ, 14.0 * GHZ, [ (RADIOLOCATION, None), (FIXED_SATELLITE, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, None), (SPACE_RESEARCH, SHARED), ], ), Band( 14.0 * GHZ, 14.2 * GHZ, [ (LAND_MOBILE_SATELLITE, None), (FIXED_SATELLITE, NON_EXCLUSIVE), (RADIONAVIGATION, None), (SPACE_RESEARCH, SHARED), ], ), Band( 14.2 * GHZ, 14.4 * GHZ, [(LAND_MOBILE, None), (FIXED_SATELLITE, None), (MOBILE, NON_EXCLUSIVE)], ), Band( 14.4 * GHZ, 14.47 * GHZ, [ (LAND_MOBILE_SATELLITE, None), (FIXED_SATELLITE, NON_EXCLUSIVE), (MOBILE, None), (FIXED, EXCLUSIVE), ], ), Band( 14.47 * GHZ, 14.5 * GHZ, [ (LAND_MOBILE_SATELLITE, None), (FIXED_SATELLITE, NON_EXCLUSIVE), (MOBILE, None), (FIXED, EXCLUSIVE), ], ), Band( 14.5 * GHZ, 14.7145 * GHZ, [(SPACE_RESEARCH, None), (MOBILE, None), (FIXED, EXCLUSIVE)], ), Band( 14.7145 * GHZ, 15.1365 * GHZ, [(SPACE_RESEARCH, None), (FIXED, None), (MOBILE, EXCLUSIVE)], ), Band( 15.1365 * GHZ, 15.35 * GHZ, [(SPACE_RESEARCH, None), (MOBILE, None), (FIXED, EXCLUSIVE)], ), Band( 15.35 * GHZ, 15.4 * GHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED), ], ), Band(15.4 * GHZ, 15.43 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, None)]), Band( 15.43 * GHZ, 15.63 * GHZ, [(FIXED_SATELLITE, NON_EXCLUSIVE), (AERONAUTICAL_RADIONAVIGATION, SHARED)], ), Band(15.63 * GHZ, 15.7 * GHZ, [(AERONAUTICAL_RADIONAVIGATION, SHARED)]), Band( 15.7 * GHZ, 16.6 * GHZ, [(RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE)], ), Band( 16.6 * GHZ, 17.1 * GHZ, [ (RADIOLOCATION, NON_EXCLUSIVE), (SPACE_RESEARCH, None), (RADIOLOCATION, EXCLUSIVE), ], ), Band( 17.1 * GHZ, 17.2 * GHZ, [ (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), ], ), Band( 17.2 * GHZ, 17.3 * GHZ, [ (RADIOLOCATION, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), (SPACE_RESEARCH, None), (EARTH_EXPLORATION_SATELLITE, SHARED), ], ), Band( 17.3 * GHZ, 17.7 * GHZ, [ (RADIOLOCATION, EXCLUSIVE), (FIXED_SATELLITE, None), (BROADCASTING_SATELLITE, NON_EXCLUSIVE), ], ), Band(17.7 * GHZ, 17.8 * GHZ, [(FIXED, None), (FIXED_SATELLITE, NON_EXCLUSIVE)]), Band( 17.8 * GHZ, 18.3 * GHZ, [(FIXED, NON_EXCLUSIVE), (FIXED_SATELLITE, EXCLUSIVE)] ), Band(18.3 * GHZ, 18.6 * GHZ, [(FIXED_SATELLITE, SHARED)]), Band( 18.6 * GHZ, 18.8 * GHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (FIXED_SATELLITE, None), (SPACE_RESEARCH, SHARED), ], ), Band(18.8 * GHZ, 19.3 * GHZ, [(FIXED_SATELLITE, SHARED)]), Band(19.3 * GHZ, 19.7 * GHZ, [(FIXED, NON_EXCLUSIVE), (FIXED_SATELLITE, SHARED)]), Band( 19.7 * GHZ, 20.1 * GHZ, [(MOBILE_SATELLITE, NON_EXCLUSIVE), (FIXED_SATELLITE, SHARED)], ), Band( 20.1 * GHZ, 20.2 * GHZ, [(MOBILE_SATELLITE, NON_EXCLUSIVE), (FIXED_SATELLITE, SHARED)], ), Band( 20.2 * GHZ, 21.2 * GHZ, [ (MOBILE_SATELLITE, None), (FIXED_SATELLITE, EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED), ], ), Band( 21.2 * GHZ, 21.4 * GHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (MOBILE, None), (FIXED, None), (SPACE_RESEARCH, SHARED), ], ), Band(21.4 * GHZ, 22.0 * GHZ, [(MOBILE, None), (FIXED, SHARED)]), Band(22.0 * GHZ, 22.21 * GHZ, [(MOBILE, None), (FIXED, SHARED)]), Band( 22.21 * GHZ, 22.5 * GHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (FIXED, None), (MOBILE, None), (RADIO_ASTRONOMY, None), (SPACE_RESEARCH, SHARED), ], ), Band(22.5 * GHZ, 22.55 * GHZ, [(FIXED, None), (MOBILE, SHARED)]), Band( 22.55 * GHZ, 23.55 * GHZ, [(INTER_SATELLITE, None), (MOBILE, None), (FIXED, SHARED)], ), Band(23.55 * GHZ, 23.6 * GHZ, [(MOBILE, None), (FIXED, SHARED)]), Band( 23.6 * GHZ, 24.0 * GHZ, [ (EARTH_EXPLORATION_SATELLITE, None), (SPACE_RESEARCH, None), (RADIO_ASTRONOMY, SHARED), ], ), Band( 24.0 * GHZ, 24.05 * GHZ, [(AMATEUR_SATELLITE, None), (AMATEUR, NON_EXCLUSIVE)] ), Band( 24.05 * GHZ, 24.25 * GHZ, [ (RADIOLOCATION, None), (AMATEUR, NON_EXCLUSIVE), (RADIOLOCATION, EXCLUSIVE), (EARTH_EXPLORATION_SATELLITE, SHARED), ], ), Band(24.25 * GHZ, 24.45 * GHZ, [(FIXED, NON_EXCLUSIVE)]), Band( 24.45 * GHZ, 24.65 * GHZ, [(INTER_SATELLITE, None), (RADIONAVIGATION, SHARED)] ), Band( 24.65 * GHZ, 24.75 * GHZ, [(RADIOLOCATION_SATELLITE, None), (INTER_SATELLITE, SHARED)], ), Band( 24.75 * GHZ, 25.05 * GHZ, [(FIXED_SATELLITE, NON_EXCLUSIVE), (RADIONAVIGATION, SHARED)], ), Band(25.05 * GHZ, 25.25 * GHZ, [(FIXED_SATELLITE, None), (FIXED, NON_EXCLUSIVE)]), Band( 25.25 * GHZ, 25.5 * GHZ, [ (MOBILE, None), (INTER_SATELLITE, None), (FIXED, EXCLUSIVE), (EARTH_EXPLORATION_SATELLITE, NON_EXCLUSIVE), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED), ], ), Band( 25.5 * GHZ, 27.0 * GHZ, [ (MOBILE, None), (INTER_SATELLITE, None), (FIXED, EXCLUSIVE), (EARTH_EXPLORATION_SATELLITE, None), (STANDARD_FREQUENCY_AND_TIME_SIGNAL, SHARED), ], ), Band( 27.0 * GHZ, 27.5 * GHZ, [ (MOBILE, None), (INTER_SATELLITE, None), (FIXED, EXCLUSIVE), (EARTH_EXPLORATION_SATELLITE, NON_EXCLUSIVE), ], ), Band( 27.5 * GHZ, 29.5 * GHZ, [(FIXED_SATELLITE, None), (MOBILE, None), (FIXED, NON_EXCLUSIVE)], ), Band( 29.5 * GHZ, 29.9 * GHZ, [(MOBILE_SATELLITE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], ), Band( 29.9 * GHZ, 30.0 * GHZ, [(MOBILE_SATELLITE, None), (FIXED_SATELLITE, NON_EXCLUSIVE)], ), ] band_30ghz_300ghz = [ ] def hz(amount: float) -> str: if amount < KHZ: return f"{amount} hz" elif amount < MHZ: return f"{amount / KHZ} khz" elif amount < GHZ: return f"{amount / MHZ} mhz" else: return f"{amount / GHZ} ghz" def to_svg( bands: list[Band], width: int, height: int, activity_code_height: int, y_offset: int ) -> str: start = bands[0].start end = bands[-1].end scale = end / start svg = "" for band in bands: pos_start = int((math.log(band.start / start) / math.log(scale)) * width) pos_end = int((math.log(band.end / start) / math.log(scale)) * width) shape_width = pos_end - pos_start usage_len = len(band.usages) shape_height = height / usage_len for i, (color_fill, color_bottom) in enumerate(band.usages): y = i * shape_height + y_offset # print(y) svg += ( f' \n' ) # Add mini-rectangle below it, if it's part of this band usage if color_bottom: bottom_y = y + shape_height - activity_code_height svg += ( f' \n' ) return svg ACTIVITY_CODE_HEIGHT = 6 ROW_WIDTH = 2048 ROW_HEIGHT = 192 ALL_BANDS = [ band_3khz_300khz, band_300khz_3mhz, band_3mhz_30mhz, band_30mhz_300mhz, band_300mhz_3ghz, band_3ghz_30ghz, band_30ghz_300ghz, ] width = ROW_WIDTH height = ROW_HEIGHT * len(ALL_BANDS) svg = f'\n' for i, bands in enumerate(ALL_BANDS): svg += to_svg(bands, ROW_WIDTH, ROW_HEIGHT, ACTIVITY_CODE_HEIGHT, i * ROW_HEIGHT) svg += "" print(svg)