[2253] | 1 | |
---|
| 2 | #Test of redfearns formula. Tests can be verified at |
---|
| 3 | # |
---|
| 4 | #http://www.cellspark.com/UTM.html |
---|
| 5 | #http://www.ga.gov.au/nmd/geodesy/datums/redfearn_geo_to_grid.jsp |
---|
| 6 | |
---|
| 7 | |
---|
| 8 | import unittest |
---|
| 9 | from redfearn import * |
---|
| 10 | from Numeric import allclose |
---|
| 11 | |
---|
| 12 | |
---|
| 13 | #------------------------------------------------------------- |
---|
| 14 | |
---|
| 15 | class TestCase(unittest.TestCase): |
---|
| 16 | |
---|
| 17 | def test_decimal_degrees_conversion(Self): |
---|
| 18 | lat = degminsec2decimal_degrees(-37,39,10.15610) |
---|
| 19 | lon = degminsec2decimal_degrees(143,55,35.38390) |
---|
| 20 | assert allclose(lat, -37.65282114) |
---|
| 21 | assert allclose(lon, 143.9264955) |
---|
| 22 | |
---|
| 23 | dd,mm,ss = decimal_degrees2degminsec(-37.65282114) |
---|
| 24 | assert dd==-37 |
---|
| 25 | assert mm==39 |
---|
| 26 | assert allclose(ss, 10.15610) |
---|
| 27 | |
---|
| 28 | dd,mm,ss = decimal_degrees2degminsec(143.9264955) |
---|
| 29 | assert dd==143 |
---|
| 30 | assert mm==55 |
---|
| 31 | assert allclose(ss, 35.38390) |
---|
| 32 | |
---|
| 33 | |
---|
| 34 | def test_UTM_1(self): |
---|
| 35 | #latitude: -37 39' 10.15610" |
---|
| 36 | #Longitude: 143 55' 35.38390" |
---|
| 37 | #Site Name: GDA-MGA: (UTM with GRS80 ellipsoid) |
---|
| 38 | #Zone: 54 |
---|
| 39 | #Easting: 758173.797 Northing: 5828674.340 |
---|
| 40 | #Latitude: -37 39 ' 10.15610 '' Longitude: 143 55 ' 35.38390 '' |
---|
| 41 | #Grid Convergence: 1 47 ' 19.36 '' Point Scale: 1.00042107 |
---|
| 42 | |
---|
| 43 | lat = degminsec2decimal_degrees(-37,39,10.15610) |
---|
| 44 | lon = degminsec2decimal_degrees(143,55,35.38390) |
---|
| 45 | assert allclose(lat, -37.65282114) |
---|
| 46 | assert allclose(lon, 143.9264955) |
---|
| 47 | |
---|
| 48 | |
---|
| 49 | zone, easting, northing = redfearn(lat,lon) |
---|
| 50 | |
---|
| 51 | assert zone == 54 |
---|
| 52 | assert allclose(easting, 758173.797) |
---|
| 53 | assert allclose(northing, 5828674.340) |
---|
| 54 | |
---|
| 55 | |
---|
| 56 | def test_UTM_2(self): |
---|
| 57 | #TEST 2 |
---|
| 58 | |
---|
| 59 | #Latitude: -37 57 03.7203 |
---|
| 60 | #Longitude: 144 25 29.5244 |
---|
| 61 | #Zone: 55 |
---|
| 62 | #Easting: 273741.297 Northing: 5796489.777 |
---|
| 63 | #Latitude: -37 57 ' 3.72030 '' Longitude: 144 25 ' 29.52440 '' |
---|
| 64 | #Grid Convergence: -1 35 ' 3.65 '' Point Scale: 1.00023056 |
---|
| 65 | |
---|
| 66 | lat = degminsec2decimal_degrees(-37,57,03.7203) |
---|
| 67 | lon = degminsec2decimal_degrees(144,25,29.5244) |
---|
| 68 | #print lat, lon |
---|
| 69 | |
---|
| 70 | zone, easting, northing = redfearn(lat,lon) |
---|
| 71 | |
---|
| 72 | assert zone == 55 |
---|
| 73 | assert allclose(easting, 273741.297) |
---|
| 74 | assert allclose(northing, 5796489.777) |
---|
| 75 | |
---|
| 76 | |
---|
| 77 | def test_UTM_3(self): |
---|
| 78 | #Test 3 |
---|
| 79 | lat = degminsec2decimal_degrees(-60,0,0) |
---|
| 80 | lon = degminsec2decimal_degrees(130,0,0) |
---|
| 81 | |
---|
| 82 | zone, easting, northing = redfearn(lat,lon) |
---|
| 83 | #print zone, easting, northing |
---|
| 84 | |
---|
| 85 | assert zone == 52 |
---|
| 86 | assert allclose(easting, 555776.267) |
---|
| 87 | assert allclose(northing, 3348167.264) |
---|
| 88 | |
---|
| 89 | |
---|
| 90 | def test_UTM_4(self): |
---|
| 91 | #Test 4 (Kobenhavn, Northern hemisphere) |
---|
| 92 | lat = 55.70248 |
---|
| 93 | dd,mm,ss = decimal_degrees2degminsec(lat) |
---|
| 94 | |
---|
| 95 | lon = 12.58364 |
---|
| 96 | dd,mm,ss = decimal_degrees2degminsec(lon) |
---|
| 97 | |
---|
| 98 | zone, easting, northing = redfearn(lat,lon) |
---|
| 99 | |
---|
| 100 | |
---|
| 101 | assert zone == 33 |
---|
| 102 | assert allclose(easting, 348157.631) |
---|
| 103 | assert allclose(northing, 6175612.993) |
---|
| 104 | |
---|
| 105 | |
---|
| 106 | def test_UTM_5(self): |
---|
| 107 | #Test 5 (Wollongong) |
---|
| 108 | |
---|
| 109 | lat = degminsec2decimal_degrees(-34,30,0.) |
---|
| 110 | lon = degminsec2decimal_degrees(150,55,0.) |
---|
| 111 | |
---|
| 112 | zone, easting, northing = redfearn(lat,lon) |
---|
| 113 | |
---|
| 114 | #print zone, easting, northing |
---|
| 115 | |
---|
| 116 | assert zone == 56 |
---|
| 117 | assert allclose(easting, 308728.009) |
---|
| 118 | assert allclose(northing, 6180432.601) |
---|
| 119 | |
---|
| 120 | |
---|
| 121 | #def test_UTM_6(self): |
---|
| 122 | # """Test 6 (Don's Wollongong file's ref point) |
---|
| 123 | # """ |
---|
| 124 | # |
---|
| 125 | # lat = -34.490286785873 |
---|
| 126 | # lon = 150.79712139578 |
---|
| 127 | # |
---|
| 128 | # dd,mm,ss = decimal_degrees2degminsec(lat) |
---|
| 129 | # print dd,mm,ss |
---|
| 130 | # dd,mm,ss = decimal_degrees2degminsec(lon) |
---|
| 131 | # print dd,mm,ss |
---|
| 132 | # |
---|
| 133 | # zone, easting, northing = redfearn(lat,lon) |
---|
| 134 | # |
---|
| 135 | # print zone, easting, northing |
---|
| 136 | # |
---|
| 137 | # assert zone == 56 |
---|
| 138 | # #assert allclose(easting, 297717.36468927) #out by 10m |
---|
| 139 | # #assert allclose(northing, 6181725.1724276) |
---|
| 140 | |
---|
| 141 | |
---|
| 142 | |
---|
| 143 | #------------------------------------------------------------- |
---|
| 144 | if __name__ == "__main__": |
---|
| 145 | |
---|
| 146 | mysuite = unittest.makeSuite(TestCase,'test') |
---|
| 147 | runner = unittest.TextTestRunner() |
---|
| 148 | runner.run(mysuite) |
---|