diff --git a/static/js/modes/sstv.js b/static/js/modes/sstv.js index 7a1b9ed..eed66a0 100644 --- a/static/js/modes/sstv.js +++ b/static/js/modes/sstv.js @@ -212,36 +212,174 @@ const SSTV = (function() { if (altEl) altEl.textContent = Math.round(issPosition.altitude); } - // Simplified world map continent outlines (lon, lat pairs) + // Accurate world map continent outlines (lon, lat pairs) const continents = { + // North America mainland northAmerica: [ - [-168, 65], [-168, 52], [-130, 42], [-117, 32], [-105, 25], [-97, 25], - [-82, 10], [-77, 8], [-82, 15], [-87, 21], [-90, 21], [-97, 26], - [-105, 30], [-117, 33], [-125, 40], [-125, 49], [-140, 60], [-168, 65] + [-168, 66], [-166, 62], [-164, 60], [-160, 59], [-152, 60], [-146, 61], + [-141, 60], [-139, 60], [-137, 59], [-135, 56], [-133, 55], [-130, 54], + [-127, 51], [-124, 48], [-124, 42], [-120, 39], [-117, 33], [-114, 31], + [-110, 31], [-108, 31], [-105, 29], [-101, 26], [-97, 26], [-97, 28], + [-94, 29], [-90, 29], [-89, 30], [-85, 29], [-83, 29], [-81, 25], + [-80, 25], [-81, 28], [-81, 31], [-77, 35], [-75, 36], [-75, 38], + [-73, 41], [-70, 42], [-70, 44], [-67, 45], [-66, 44], [-64, 46], + [-61, 47], [-64, 52], [-59, 48], [-55, 52], [-57, 58], [-62, 58], + [-68, 60], [-73, 62], [-77, 64], [-78, 69], [-85, 70], [-95, 70], + [-102, 72], [-115, 72], [-125, 72], [-135, 70], [-145, 70], [-155, 71], + [-165, 68], [-168, 66] ], + // Greenland + greenland: [ + [-45, 60], [-43, 60], [-40, 62], [-38, 65], [-30, 68], [-25, 72], + [-20, 76], [-22, 80], [-35, 83], [-50, 82], [-60, 78], [-68, 76], + [-72, 73], [-60, 70], [-52, 66], [-48, 62], [-45, 60] + ], + // Central America + centralAmerica: [ + [-97, 26], [-97, 22], [-95, 19], [-92, 18], [-90, 16], [-88, 16], + [-86, 14], [-84, 11], [-82, 9], [-79, 8], [-77, 9], [-80, 9], + [-83, 10], [-86, 12], [-88, 14], [-90, 15], [-92, 16], [-95, 17], + [-97, 20], [-97, 26] + ], + // South America southAmerica: [ - [-82, 10], [-77, 8], [-70, 12], [-60, 5], [-50, 0], [-35, -5], - [-35, -22], [-48, -28], [-58, -40], [-68, -55], [-75, -50], [-75, -40], - [-70, -18], [-80, 0], [-82, 10] + [-79, 8], [-77, 9], [-73, 11], [-72, 12], [-67, 11], [-63, 10], + [-60, 8], [-57, 6], [-52, 5], [-50, 2], [-50, 0], [-48, -2], + [-44, -3], [-39, -4], [-35, -7], [-35, -10], [-37, -13], [-39, -18], + [-41, -22], [-44, -23], [-47, -24], [-49, -29], [-52, -33], [-54, -34], + [-57, -38], [-62, -39], [-65, -41], [-66, -45], [-66, -52], [-68, -55], + [-72, -53], [-74, -50], [-75, -47], [-75, -41], [-73, -37], [-71, -33], + [-71, -29], [-70, -24], [-70, -18], [-75, -15], [-76, -12], [-81, -6], + [-81, -2], [-80, 1], [-79, 8] ], + // UK and Ireland + ukIreland: [ + [-10, 51], [-9, 52], [-10, 54], [-8, 55], [-6, 55], [-6, 58], + [-3, 59], [0, 58], [2, 53], [1, 51], [-2, 50], [-5, 50], [-6, 52], + [-10, 51] + ], + // Iceland + iceland: [ + [-24, 64], [-22, 66], [-18, 66], [-14, 65], [-14, 64], [-18, 63], + [-22, 64], [-24, 64] + ], + // Europe mainland europe: [ - [-10, 36], [0, 38], [5, 44], [-5, 48], [0, 52], [10, 55], [25, 55], - [30, 60], [28, 70], [10, 72], [-10, 65], [-25, 66], [-20, 55], [-10, 50], [-10, 36] + [-10, 36], [-9, 38], [-9, 43], [-2, 44], [3, 43], [4, 44], [1, 46], + [-2, 47], [-5, 48], [-3, 49], [2, 51], [4, 52], [7, 54], [8, 55], + [12, 55], [14, 54], [19, 55], [23, 55], [28, 56], [28, 60], [24, 60], + [23, 64], [26, 66], [25, 70], [21, 70], [18, 69], [15, 69], [11, 64], + [12, 58], [10, 58], [8, 58], [6, 58], [5, 62], [7, 65], [15, 69], + [25, 71], [30, 70], [28, 66], [31, 65], [29, 60], [32, 55], [40, 55], + [50, 55], [60, 55], [68, 56], [70, 66], [60, 70], [50, 68], [40, 67], + [32, 70], [28, 70], [25, 71], [21, 70], [17, 68], [10, 64], [12, 56], + [8, 54], [5, 54], [4, 52], [2, 51], [-3, 49], [-5, 48], [-2, 47], + [1, 46], [4, 44], [3, 43], [-2, 44], [-9, 43], [-9, 41], [-8, 40], + [-9, 38], [-7, 37], [-6, 37], [-5, 36], [-2, 36], [0, 38], [3, 42], + [6, 43], [8, 44], [13, 44], [14, 42], [16, 41], [14, 38], [12, 38], + [15, 37], [18, 40], [20, 40], [24, 38], [26, 39], [28, 41], [26, 42], + [29, 45], [22, 45], [20, 42], [16, 42], [14, 44], [10, 46], [7, 46], + [7, 48], [10, 48], [15, 47], [17, 49], [15, 51], [14, 53], [10, 54], + [7, 54], [4, 52] ], + // Scandinavia (simplified) + scandinavia: [ + [5, 58], [6, 62], [8, 64], [14, 66], [18, 68], [20, 70], [28, 71], + [31, 70], [30, 67], [27, 65], [24, 60], [18, 60], [16, 57], [11, 56], + [8, 56], [5, 58] + ], + // Africa africa: [ - [-18, 28], [-5, 36], [10, 37], [25, 32], [35, 30], [43, 12], [52, 12], - [42, 0], [40, -12], [35, -25], [20, -35], [18, -28], [12, -5], [-5, 5], - [-18, 15], [-18, 28] + [-17, 21], [-17, 15], [-16, 13], [-15, 11], [-8, 5], [-5, 5], + [0, 5], [2, 6], [10, 4], [10, 1], [9, -1], [12, -5], [14, -5], + [17, -12], [23, -18], [26, -23], [28, -28], [28, -33], [23, -35], + [18, -34], [16, -29], [14, -22], [12, -17], [14, -10], [20, -3], + [30, 5], [35, 5], [42, 11], [44, 11], [49, 12], [51, 11], [43, 5], + [41, -2], [40, -10], [36, -20], [33, -26], [28, -33], [23, -35], + [18, -34], [16, -29], [13, -25], [10, -18], [9, -6], [5, 4], + [-5, 5], [-10, 8], [-17, 15], [-17, 21], [-13, 24], [-8, 28], + [-2, 35], [3, 37], [10, 37], [11, 34], [9, 31], [10, 28], [17, 32], + [25, 32], [32, 31], [35, 32], [36, 30], [33, 27], [35, 22], [43, 13], + [42, 11], [35, 5], [33, 10], [31, 10], [30, 5], [20, -3], [14, -10], + [12, -17], [17, -12], [14, -5], [12, -5], [9, -1], [10, 1], [10, 4], + [2, 6], [0, 5], [-5, 5], [-8, 5], [-15, 11], [-16, 13], [-17, 15], + [-17, 21] ], + // Madagascar + madagascar: [ + [50, -12], [50, -16], [47, -24], [44, -25], [44, -20], [47, -15], + [49, -12], [50, -12] + ], + // Middle East / Arabian Peninsula + middleEast: [ + [35, 32], [36, 30], [40, 29], [48, 30], [52, 26], [56, 25], [57, 21], + [55, 17], [52, 13], [44, 13], [43, 13], [35, 22], [33, 27], [35, 32] + ], + // Asia mainland asia: [ - [25, 32], [35, 30], [43, 12], [52, 12], [60, 22], [70, 22], [75, 15], - [80, 8], [88, 22], [100, 22], [105, 10], [120, 22], [135, 35], [140, 45], - [145, 50], [160, 62], [170, 65], [180, 68], [180, 75], [100, 78], - [70, 75], [50, 70], [40, 65], [30, 60], [25, 55], [30, 45], [25, 32] + [60, 55], [70, 55], [80, 55], [90, 55], [100, 55], [110, 55], [120, 53], + [130, 48], [135, 45], [135, 42], [130, 43], [123, 40], [120, 35], + [117, 30], [118, 25], [118, 22], [110, 20], [108, 22], [107, 17], + [103, 10], [100, 14], [99, 7], [104, 2], [104, -2], [117, -8], + [120, -10], [115, -8], [107, -6], [105, -6], [106, -2], [103, 1], + [99, 7], [100, 14], [103, 10], [105, 12], [107, 17], [108, 22], + [105, 22], [102, 22], [98, 24], [90, 22], [89, 26], [92, 28], + [88, 28], [84, 28], [80, 30], [77, 35], [72, 37], [68, 37], + [60, 40], [52, 42], [50, 46], [55, 50], [60, 55] ], + // India + india: [ + [68, 24], [70, 22], [72, 21], [73, 17], [75, 12], [77, 8], [80, 10], + [80, 14], [83, 15], [86, 20], [90, 22], [89, 26], [88, 28], [84, 28], + [80, 30], [77, 30], [75, 25], [72, 25], [68, 24] + ], + // Southeast Asia + southeastAsia: [ + [100, 14], [103, 10], [105, 12], [107, 17], [108, 22], [105, 22], + [102, 22], [98, 24], [98, 19], [100, 14] + ], + // Japan + japan: [ + [130, 32], [131, 34], [135, 35], [137, 37], [140, 38], [141, 41], + [141, 43], [145, 44], [145, 42], [142, 39], [140, 36], [137, 35], + [135, 34], [130, 32] + ], + // Korea + korea: [ + [126, 34], [126, 38], [129, 38], [130, 43], [128, 42], [124, 40], + [125, 37], [126, 34] + ], + // Philippines + philippines: [ + [117, 7], [120, 10], [122, 13], [124, 17], [122, 19], [120, 16], + [118, 12], [117, 7] + ], + // Indonesia (simplified) + indonesia: [ + [95, 6], [98, 4], [103, 1], [106, -2], [106, -6], [110, -7], + [115, -8], [120, -10], [127, -8], [131, -2], [136, -2], [141, -5], + [141, -9], [131, -8], [120, -10], [115, -8], [110, -7], [106, -6], + [106, -2], [103, 1], [98, 4], [95, 6] + ], + // Australia australia: [ - [115, -20], [130, -12], [142, -12], [150, -22], [153, -28], [150, -38], - [140, -38], [130, -32], [115, -35], [115, -20] + [114, -22], [114, -26], [115, -32], [117, -35], [122, -34], [129, -32], + [132, -32], [134, -33], [137, -35], [140, -38], [144, -38], [147, -38], + [150, -37], [153, -29], [153, -25], [149, -21], [145, -15], [142, -11], + [136, -12], [130, -15], [129, -17], [123, -17], [119, -20], [114, -22] + ], + // New Zealand + newZealand: [ + [166, -46], [168, -45], [171, -41], [175, -37], [178, -37], [178, -42], + [174, -41], [170, -43], [167, -44], [166, -46] + ], + // Taiwan + taiwan: [ + [120, 22], [121, 23], [122, 25], [121, 25], [120, 24], [120, 22] + ], + // Sri Lanka + sriLanka: [ + [80, 6], [80, 8], [82, 10], [82, 7], [80, 6] ] };