|
| 1 | +import pytest |
| 2 | + |
| 3 | +from coordinate_projector.projector import Projector |
| 4 | + |
| 5 | + |
| 6 | +# Assumption that the SWEREF99 is the same as WGS84 |
| 7 | +WGS84 = 4326 |
| 8 | +SWEREF99TM = 3006 |
| 9 | +SWEREF99_12_00 = 3007 |
| 10 | +SWEREF99_13_30 = 3008 |
| 11 | +SWEREF99_15_00 = 3009 |
| 12 | +SWEREF99_16_30 = 3010 |
| 13 | +SWEREF99_18_00 = 3011 |
| 14 | +SWEREF99_14_15 = 3012 |
| 15 | +SWEREF99_15_45 = 3013 |
| 16 | +SWEREF99_17_15 = 3014 |
| 17 | +SWEREF99_18_45 = 3015 |
| 18 | +SWEREF99_20_15 = 3016 |
| 19 | +SWEREF99_21_45 = 3017 |
| 20 | +SWEREF99_23_15 = 3018 |
| 21 | + |
| 22 | + |
| 23 | +@pytest.mark.parametrize( |
| 24 | + "latitude, longitude, to_srid, expected_northing, expected_easting", |
| 25 | + ( |
| 26 | + (55, 12.75, SWEREF99TM, 6097106.672, 356083.438), |
| 27 | + (55, 14.25, SWEREF99TM, 6095048.642, 452024.069), |
| 28 | + (57, 12.75, SWEREF99TM, 6319636.937, 363331.554), |
| 29 | + (57, 19.5, SWEREF99TM, 6326392.707, 773251.054), |
| 30 | + (59, 11.25, SWEREF99TM, 6546096.724, 284626.066), |
| 31 | + (59, 19.5, SWEREF99TM, 6548757.206, 758410.519), |
| 32 | + (61, 12.75, SWEREF99TM, 6764877.311, 378323.440), |
| 33 | + (61, 18.75, SWEREF99TM, 6768593.345, 702745.127), |
| 34 | + (63, 12, SWEREF99TM, 6989134.048, 348083.148), |
| 35 | + (63, 19.5, SWEREF99TM, 6993565.630, 727798.671), |
| 36 | + (65, 13.5, SWEREF99TM, 7209293.753, 429270.201), |
| 37 | + (65, 21.75, SWEREF99TM, 7225449.115, 817833.405), |
| 38 | + (67, 16.5, SWEREF99TM, 7432168.174, 565398.458), |
| 39 | + (67, 24, SWEREF99TM, 7459745.672, 891298.142), |
| 40 | + (69, 21, SWEREF99TM, 7666089.698, 739639.195), |
| 41 | + (57, 11.25, SWEREF99_12_00, 6320164.077, 104421.390), |
| 42 | + (59, 11.25, SWEREF99_12_00, 6542910.921, 106894.103), |
| 43 | + (57, 12.75, SWEREF99_12_00, 6320164.077, 195578.610), |
| 44 | + (59, 12.75, SWEREF99_12_00, 6542910.921, 193105.897), |
| 45 | + (55, 12.75, SWEREF99_13_30, 6097487.637, 102004.871), |
| 46 | + (57, 12.75, SWEREF99_13_30, 6320164.077, 104421.390), |
| 47 | + (59, 12.75, SWEREF99_13_30, 6542910.921, 106894.103), |
| 48 | + (61, 12.75, SWEREF99_13_30, 6765725.847, 109420.005), |
| 49 | + (63, 12.75, SWEREF99_13_30, 6988606.198, 111996.020), |
| 50 | + (55, 14.25, SWEREF99_13_30, 6097487.637, 197995.129), |
| 51 | + (57, 14.25, SWEREF99_13_30, 6320164.077, 195578.610), |
| 52 | + (59, 14.25, SWEREF99_13_30, 6542910.921, 193105.897), |
| 53 | + (61, 14.25, SWEREF99_13_30, 6765725.847, 190579.995), |
| 54 | + (63, 12, SWEREF99_14_15, 6990379.288, 36003.367), |
| 55 | + (65, 13.5, SWEREF99_14_15, 7211548.993, 114619.001), |
| 56 | + (63, 15, SWEREF99_14_15, 6988606.198, 188003.980), |
| 57 | + (65, 15, SWEREF99_14_15, 7211548.993, 185380.999), |
| 58 | + # SWEREF 99 SWEREF 99 15 00 |
| 59 | + (55, 14.25, SWEREF99_15_00, 6097487.637, 102004.871), |
| 60 | + (57, 14.25, SWEREF99_15_00, 6320164.077, 104421.390), |
| 61 | + (59, 14.25, SWEREF99_15_00, 6542910.921, 106894.103), |
| 62 | + (61, 14.25, SWEREF99_15_00, 6765725.847, 109420.005), |
| 63 | + (57, 15.75, SWEREF99_15_00, 6320164.077, 195578.610), |
| 64 | + (59, 15.75, SWEREF99_15_00, 6542910.921, 193105.897), |
| 65 | + (61, 15.75, SWEREF99_15_00, 6765725.847, 190579.995), |
| 66 | + # SWEREF 99 SWEREF 99 15 45 |
| 67 | + (63, 15.00, SWEREF99_15_45, 6988606.198, 111996.020), |
| 68 | + (65, 15.00, SWEREF99_15_45, 7211548.993, 114619.001), |
| 69 | + (67, 15.00, SWEREF99_15_45, 7434550.943, 117285.739), |
| 70 | + (63, 16.50, SWEREF99_15_45, 6988606.198, 188003.980), |
| 71 | + (65, 16.50, SWEREF99_15_45, 7211548.993, 185380.999), |
| 72 | + (67, 16.50, SWEREF99_15_45, 7434550.943, 182714.261), |
| 73 | + # SWEREF 99 SWEREF 99 16 30 |
| 74 | + (57, 15.75, SWEREF99_16_30, 6320164.077, 104421.390), |
| 75 | + (59, 15.75, SWEREF99_16_30, 6542910.921, 106894.103), |
| 76 | + (61, 15.75, SWEREF99_16_30, 6765725.847, 109420.005), |
| 77 | + (63, 15.75, SWEREF99_16_30, 6988606.198, 111996.020), |
| 78 | + (57, 17.25, SWEREF99_16_30, 6320164.077, 195578.610), |
| 79 | + (59, 17.25, SWEREF99_16_30, 6542910.921, 193105.897), |
| 80 | + (61, 17.25, SWEREF99_16_30, 6765725.847, 190579.995), |
| 81 | + (63, 17.25, SWEREF99_16_30, 6988606.198, 188003.980), |
| 82 | + # SWEREF 99 SWEREF 99 17 15 |
| 83 | + (63, 16.50, SWEREF99_17_15, 6988606.198, 111996.020), |
| 84 | + (65, 16.50, SWEREF99_17_15, 7211548.993, 114619.001), |
| 85 | + (67, 16.50, SWEREF99_17_15, 7434550.943, 117285.739), |
| 86 | + (63, 18.00, SWEREF99_17_15, 6988606.198, 188003.980), |
| 87 | + (65, 18.00, SWEREF99_17_15, 7211548.993, 185380.999), |
| 88 | + (67, 18.00, SWEREF99_17_15, 7434550.943, 182714.261), |
| 89 | + # SWEREF 99 SWEREF 99 18 00 |
| 90 | + (59, 17.25, SWEREF99_18_00, 6542910.921, 106894.103), |
| 91 | + (61, 17.25, SWEREF99_18_00, 6765725.847, 109420.005), |
| 92 | + (59, 18.75, SWEREF99_18_00, 6542910.921, 193105.897), |
| 93 | + (61, 18.75, SWEREF99_18_00, 6765725.847, 190579.995), |
| 94 | + # SWEREF 99 SWEREF 99 18 45 |
| 95 | + (57, 18, SWEREF99_18_45, 6320164.077, 104421.390), |
| 96 | + (59, 18, SWEREF99_18_45, 6542910.921, 106894.103), |
| 97 | + (63, 18, SWEREF99_18_45, 6988606.198, 111996.020), |
| 98 | + (65, 18, SWEREF99_18_45, 7211548.993, 114619.001), |
| 99 | + (67, 18, SWEREF99_18_45, 7434550.943, 117285.739), |
| 100 | + (57, 19.5, SWEREF99_18_45, 6320164.077, 195578.610), |
| 101 | + (59, 19.5, SWEREF99_18_45, 6542910.921, 193105.897), |
| 102 | + (63, 19.5, SWEREF99_18_45, 6988606.198, 188003.980), |
| 103 | + (65, 19.5, SWEREF99_18_45, 7211548.993, 185380.999), |
| 104 | + (67, 19.5, SWEREF99_18_45, 7434550.943, 182714.261), |
| 105 | + # SWEREF 99 SWEREF 99 20 15 |
| 106 | + (63, 19.5, SWEREF99_20_15, 6988606.198, 111996.020), |
| 107 | + (65, 19.5, SWEREF99_20_15, 7211548.993, 114619.001), |
| 108 | + (67, 19.5, SWEREF99_20_15, 7434550.943, 117285.739), |
| 109 | + (69, 19.5, SWEREF99_20_15, 7657608.465, 119992.964), |
| 110 | + (65, 21, SWEREF99_20_15, 7211548.993, 185380.999), |
| 111 | + (67, 21, SWEREF99_20_15, 7434550.943, 182714.261), |
| 112 | + (69, 21, SWEREF99_20_15, 7657608.465, 180007.036), |
| 113 | + # SWEREF 99 SWEREF 99 21 45 |
| 114 | + (65, 21, SWEREF99_21_45, 7211548.993, 114619.001), |
| 115 | + (67, 21, SWEREF99_21_45, 7434550.943, 117285.739), |
| 116 | + (65, 22.5, SWEREF99_21_45, 7211548.993, 185380.999), |
| 117 | + (67, 22.5, SWEREF99_21_45, 7434550.943, 182714.261), |
| 118 | + # SWEREF 99 SWEREF 99 23 15 |
| 119 | + (65, 22.5, SWEREF99_23_15, 7211548.993, 114619.001), |
| 120 | + (67, 22.5, SWEREF99_23_15, 7434550.943, 117285.739), |
| 121 | + (65, 24, SWEREF99_23_15, 7211548.993, 185380.999), |
| 122 | + (67, 24, SWEREF99_23_15, 7434550.943, 182714.261), |
| 123 | + ), |
| 124 | +) |
| 125 | +def test_sweref99(latitude, longitude, to_srid, expected_northing, expected_easting): |
| 126 | + """ |
| 127 | + Test data above taken from: |
| 128 | + https://www.lantmateriet.se/contentassets/a7ddfc3b7821498da8b55cd3f71b5150/kontrollpunkter_sweref99tm.pdf |
| 129 | + https://www.lantmateriet.se/contentassets/a7ddfc3b7821498da8b55cd3f71b5150/kontrollpunkter_sweref99proj.pdf |
| 130 | + """ |
| 131 | + projector = Projector() |
| 132 | + easting, northing = projector.transform(from_srid=WGS84, to_srid=to_srid, east=longitude, north=latitude) |
| 133 | + assert easting == pytest.approx(expected_easting) |
| 134 | + assert northing == pytest.approx(expected_northing) |
0 commit comments