Changeset 9112 in josm
Legend:
- Unmodified
- Added
- Removed
-
trunk/data_nodist/projection-regression-test-data.csv
r9111 r9112 3 3 EPSG:2017 4 4 ll 41.91261175251477 -74.89278047335935 5 en 189256.460243700 3 4642190.9847386646 ll2 41.91261175251 276 -74.892780473360055 en 189256.46024370025 4642190.984739115 6 ll2 41.912611752514195 -74.89278047336009 7 7 EPSG:2018 8 8 ll 59.44382107698691 -75.69994294027252 9 en 350186.8769538684 6591516.12376 352210 ll2 59.44382107698 858 -75.699942940272489 en 350186.8769538684 6591516.123766931 10 ll2 59.44382107698689 -75.6999429402725 11 11 EPSG:2019 12 12 ll 59.57974571574399 -77.62068644735783 13 en 410977.0432181668 6607886.35846 563414 ll2 59.57974571574 385 -77.6206864473573413 en 410977.0432181668 6607886.358469073 14 ll2 59.579745715740216 -77.62068644735744 15 15 EPSG:2020 16 16 ll 48.70994767392709 -80.98151833777705 17 en 416544.4938169358 5397725.73630814218 ll2 48.70994767392 482 -80.9815183377763517 en 416544.49381693586 5397725.73630937 18 ll2 48.70994767392592 -80.98151833777631 19 19 EPSG:2021 20 20 ll 44.32069045402543 -82.35101240098113 21 en 197033.1889038008 2 4909636.24529812422 ll2 44.32069045402 312 -82.3510124009816521 en 197033.18890380085 4909636.245298789 22 ll2 44.32069045402493 -82.3510124009817 23 23 EPSG:2022 24 24 ll 52.974406405116596 -82.60706276272059 25 en 398364.5940485396 5871875.6106 4928626 ll2 52.9744064051158 3 -82.6070627627202925 en 398364.5940485396 5871875.610651281 26 ll2 52.97440640511588 -82.60706276272028 27 27 EPSG:2023 28 28 ll 48.878498193945305 -87.13823590455254 29 en 294661.1404832435 5415364.1215 3974130 ll2 48.87849819394 364-87.1382359045525429 en 294661.1404832435 5415364.121540996 30 ll2 48.87849819394531 -87.13823590455254 31 31 EPSG:2024 32 32 ll 51.35687523407061 -90.17997605532246 33 en 292264.10025309975 5691016.3645 8930334 ll2 51.3568752340 6965-90.1799760553224633 en 292264.10025309975 5691016.364590984 34 ll2 51.35687523407062 -90.17997605532246 35 35 EPSG:2025 36 36 ll 43.959735984270985 -93.91753949513763 37 en 231163.02116838144 4869054.712592 31538 ll2 43.9597359842 6891 -93.9175394951376737 en 231163.02116838144 4869054.712592943 38 ll2 43.95973598427093 -93.91753949513772 39 39 EPSG:2026 40 40 ll 48.06438094907365 -94.45119612154907 41 en 420226.7693776111 5325995.33576 135142 ll2 48.06438094907 121 -94.4511961215482641 en 420226.7693776111 5325995.33576248 42 ll2 48.06438094907235 -94.45119612154821 43 43 EPSG:2154 44 44 ll 50.02689509732728 -4.49984483215602 … … 47 47 EPSG:2176 48 48 ll 49.64490220491846 16.279713636209475 49 en 5592415.690627584 5501713.997 39941550 ll2 49.64490220491 687 16.27971363620971749 en 5592415.690627584 5501713.997400717 50 ll2 49.64490220491803 16.279713636209753 51 51 EPSG:2177 52 52 ll 53.90237086111341 17.70353103400919 53 en 6480514.884490048 5974630.1600 6794954 ll2 53.902370861113 33 17.70353103400919553 en 6480514.884490048 5974630.160070014 54 ll2 53.90237086111341 17.703531034009192 55 55 EPSG:2178 56 56 ll 51.28025609515727 21.516295219859636 57 en 7536021.072707665 5682953.4958 5999158 ll2 51.28025609515 634 21.5162952198596357 en 7536021.072707665 5682953.495861567 58 ll2 51.28025609515728 21.51629521985964 59 59 EPSG:21781 60 60 ll 46.582471410091934 8.159223152110604 … … 63 63 EPSG:2179 64 64 ll 51.812974050704796 24.579389794413864 65 en 8539953.715775384 5742250.60742 215866 ll2 51.812974050704 014 24.5793897944138665 en 8539953.715775384 5742250.607423828 66 ll2 51.81297405070478 24.57938979441387 67 67 EPSG:2180 68 68 ll 49.52724731520737 18.27654136015328 69 en 447661.13055637287 184674.94547 02697770 ll2 49.52724731520 5926 18.27654136015328569 en 447661.13055637287 184674.94547155313 70 ll2 49.52724731520734 18.276541360153264 71 71 EPSG:23700 72 72 ll 46.46561041539386 21.520339346245464 … … 75 75 EPSG:25828 76 76 ll 47.117782320935554 -16.503525409604464 77 en 385946.0034092715 5219349.63545192178 ll2 47.11778232093 319 -16.503525409605277 en 385946.00340927154 5219349.635452863 78 ll2 47.1177823209345 -16.503525409605253 79 79 EPSG:25829 80 80 ll 65.82806470287636 -9.554928597345642 81 en 474644.50820229325 7300857.88781 078282 ll2 65.82806470287 812 -9.5549285973456881 en 474644.50820229325 7300857.887815192 82 ll2 65.82806470287636 -9.554928597345642 83 83 EPSG:25830 84 84 ll 37.25171140290211 -2.8211874597155333 85 en 515857.4448277882 4122811.106932 23286 ll2 37.25171140290 173 -2.82118745971553485 en 515857.4448277882 4122811.106932426 86 ll2 37.25171140290212 -2.8211874597155333 87 87 EPSG:25831 88 88 ll 15.703714685419541 1.9029805492944067 89 en 382450.593627364 7 1736467.008367173490 ll2 15.70371468541 8815 1.902980549294624689 en 382450.59362736467 1736467.0083671543 90 ll2 15.70371468541952 1.90298054929462 91 91 EPSG:25832 92 92 ll 43.42381791085779 9.690565246887022 93 en 555898.5039359011 4808112.36517 294694 ll2 43.42381791085 591 9.6905652468870293 en 555898.5039359011 4808112.36517349 94 ll2 43.42381791085778 9.690565246887042 95 95 EPSG:25833 96 96 ll 75.7892704557877 11.207180641450057 97 en 396131.7404880665 8415005.73787 364798 ll2 75.7892704557 614 11.20718064159461397 en 396131.7404880665 8415005.737878373 98 ll2 75.78927045573678 11.207180641594293 99 99 EPSG:25834 100 100 ll 46.44885204974395 22.405231854156536 101 en 607926.6287454234 5144879.31336 8673102 ll2 46.44885204974 1696 22.405231854157073101 en 607926.6287454234 5144879.313369531 102 ll2 46.44885204974325 22.405231854157122 103 103 EPSG:25835 104 104 ll 42.57574419494572 31.562543802846626 105 en 874467.6530367588 4723802.227199 246106 ll2 42.575744194 59534 31.562543803062233105 en 874467.6530367588 4723802.227199722 106 ll2 42.575744194251115 31.56254380306236 107 107 EPSG:25836 108 108 ll 28.15042601064217 29.551501695152517 109 en 161292.707454591 47 3118678.701691007110 ll2 28.150426010 621363 29.551501695058164109 en 161292.70745459135 3118678.7016910748 110 ll2 28.150426010596412 29.551501695058228 111 111 EPSG:25837 112 112 ll 36.3487499992021 40.79948792586663 113 en 661474.4463378746 4024134.254394 7804114 ll2 36.34874999920 129 40.799487925869784113 en 661474.4463378746 4024134.254394948 114 ll2 36.348749999200265 40.79948792586979 115 115 EPSG:25838 116 116 ll 31.188113573425966 46.337070725825676 117 en 627399.0197288111 3451219.822193 0494118 ll2 31.18811357342 744 46.33707072582629117 en 627399.0197288111 3451219.8221931364 118 ll2 31.18811357342576 46.33707072582627 119 119 EPSG:27561 120 120 ll 48.687023294540744 9.13470536591202 … … 139 139 EPSG:2969 140 140 ll 18.09195682909748 -62.90557198327498 141 en 509756.870848181 2000799.17240283 64141 en 509756.870848181 2000799.1724028382 142 142 ll2 18.0919568043076 -62.90557196864032 143 143 EPSG:2970 144 144 ll 16.041843969107557 -61.20853416213802 145 en 692080.803209198 5 1774695.5238623084146 ll2 16.041843952489 8 -61.20853418759283145 en 692080.8032091986 1774695.523862292 146 ll2 16.041843952489902 -61.20853418759284 147 147 EPSG:2972 148 148 ll 8.207268629853019 -50.21680809669106 149 en 586265.5532873704 907296.0057201 86150 ll2 8.20726862985 1077 -50.216808096691146149 en 586265.5532873704 907296.0057201401 150 ll2 8.207268629853017 -50.216808096691146 151 151 EPSG:2973 152 152 ll 14.407542336386097 -60.935843452421075 153 en 722168.21138949 8 1593628.3260067657154 ll2 14.407542351752 163 -60.93584343336168153 en 722168.2113894979 1593628.3260067375 154 ll2 14.407542351752355 -60.9358434333617 155 155 EPSG:2975 156 156 ll -16.18983230787581 40.123852994258414 157 en -1326413.3757486297 8133460.3924754 84158 ll2 -16.189831 743778907 40.12386116380699157 en -1326413.3757486297 8133460.392475499 158 ll2 -16.18983190766203 40.12386116380695 159 159 EPSG:3003 160 160 ll 38.09725651416973 7.4345625019044315 161 en 1362730.2218375676 4217833.14408 1871162 ll2 38.097256514168 67 7.434562501902945161 en 1362730.2218375676 4217833.144082101 162 ll2 38.09725651416882 7.434562501902931 163 163 EPSG:3004 164 164 ll 46.42503928302209 18.74399103983138 165 en 2807681.5235197735 5148186.20692 7572166 ll2 46.425039282 897764 18.743991039891302165 en 2807681.5235197735 5148186.206928445 166 ll2 46.42503928277661 18.74399103989143 167 167 EPSG:3008 168 168 ll 61.864054488897295 13.084399903079879 169 en 128126.42078859449 6861850.50212 4558170 ll2 61.86405448889 923 13.084399903079852169 en 128126.42078859449 6861850.502128279 170 ll2 61.86405448889729 13.084399903079879 171 171 EPSG:3059 172 172 ll 49.23525189671949 -54.40128360306443 173 en -4263130.034442673 2917092.55187 19126174 ll2 501 78.76820064746 246510.82413604847173 en -4263130.034442673 2917092.5518731494 174 ll2 50156.3548390288 246510.82413196223 175 175 EPSG:31370 176 176 ll 49.91513996934379 3.0892264075922404 … … 179 179 EPSG:31466 180 180 ll 7.0210401440287065 6.5142293675331056 181 en 2556811.486749014 776341.9609297 712182 ll2 7.02104014402 6878 6.5142293675330905181 en 2556811.486749014 776341.9609297286 182 ll2 7.021040144028706 6.514229367533092 183 183 EPSG:31467 184 184 ll 49.4988750014639 7.261117510799364 185 en 3374117.1277635116 5486123.24396 6412186 ll2 49.4988750014612 15 7.261117510798085185 en 3374117.1277635116 5486123.243967674 186 ll2 49.49887500146128 7.2611175107980355 187 187 EPSG:31468 188 188 ll 48.209523046432196 13.141810876019548 189 en 4584969.350196248 5341912.84458 4694190 ll2 48.20952304643 043 13.14181087601969189 en 4584969.350196248 5341912.844585768 190 ll2 48.20952304643198 13.141810876019727 191 191 EPSG:31469 192 192 ll 75.71474879775388 16.230800026412393 193 en 5533907.888998117 8406162.27195 2605194 ll2 75.71474879775 27 16.230800026412293193 en 5533907.888998117 8406162.27195727 194 ll2 75.71474879775381 16.23080002641239 195 195 EPSG:32601 196 196 ll 35.30468974675124 -181.75048187801644 197 en 67958.20646357589 3917197.812559 492198 ll2 35.304689746 452496 -181.75048187860767197 en 67958.20646357589 3917197.8125596363 198 ll2 35.30468974617765 -181.75048187860764 199 199 EPSG:32602 200 200 ll -0.35895685791257925 -175.75420623162898 201 en -29625.97257008 6014 -39813.425707889146202 ll2 -0.35895685790 93727 -175.75420623022703201 en -29625.972570085898 -39813.425707886265 202 ll2 -0.3589568579084667 -175.75420623022703 203 203 EPSG:32603 204 204 ll 69.06942592353653 -164.25619547568132 205 en 529653.423074742 7662283.25564 0146206 ll2 69.06942592353 752 -164.2561954756813205 en 529653.423074742 7662283.255644933 206 ll2 69.06942592353653 -164.25619547568132 207 207 EPSG:32604 208 208 ll 68.49291330851102 -162.96491579603722 209 en 337874.4125215008 4 7603043.066426898210 ll2 68.492913308 42262 -162.96491579584512209 en 337874.4125215008 7603043.066431634 210 ll2 68.49291330833023 -162.96491579584492 211 211 EPSG:32605 212 212 ll 70.45567827510386 -154.8711613318192 213 en 430146.7851750106 7817765.5236 85955214 ll2 70.45567827510 365 -154.87116133181905213 en 430146.7851750106 7817765.523690824 214 ll2 70.45567827510223 -154.871161331819 215 215 EPSG:32606 216 216 ll 45.0472445968384 -147.48643385071935 217 en 461693.09169689566 4988313.77696 1381218 ll2 45.04724459683 641-147.48643385071935217 en 461693.09169689566 4988313.776962079 218 ll2 45.04724459683838 -147.48643385071935 219 219 EPSG:32607 220 220 ll 17.160888392541953 -136.88735017825638 221 en 937701.0944171889 1901994.17830509 83222 ll2 17.160888392 5055 -136.88735017834057221 en 937701.0944171889 1901994.178305092 222 ll2 17.160888392484225 -136.88735017834057 223 223 EPSG:32608 224 224 ll 17.082700048931713 -138.83952009347482 225 en 91233.83062316518 1892731.36205429 9226 ll2 17.082700048 910105-138.8395200934112225 en 91233.83062316518 1892731.3620542919 226 ll2 17.08270004889456 -138.8395200934112 227 227 EPSG:32609 228 228 ll 32.88791124498886 -124.7743273825516 229 en 895391.21089672 02 3646786.763057612230 ll2 32.887911244 86649 -124.7743273822095229 en 895391.21089672 3646786.7630577153 230 ll2 32.88791124475305 -124.77432738220956 231 231 EPSG:32610 232 232 ll 15.621043862710906 -127.89205445312605 233 en -24932.886804628302 1733063.1626414 557234 ll2 15.6210438625 87436 -127.89205445274152233 en -24932.886804628302 1733063.162641437 234 ll2 15.621043862547943 -127.89205445274153 235 235 EPSG:32611 236 236 ll 10.73641510533119 -112.16478744764923 237 en 1029269.769924618 5 1191002.7127373696238 ll2 10.7364151052 4071 -112.16478744856084237 en 1029269.7699246187 1191002.7127373253 238 ll2 10.736415105215261 -112.16478744856082 239 239 EPSG:32612 240 240 ll 61.77560053459669 -114.5125390548194 241 en 314735.1980824949 6854188.16600 2769242 ll2 61.775600534 52742 -114.51253905477127241 en 314735.1980824949 6854188.16600647 242 ll2 61.77560053445347 -114.51253905477104 243 243 EPSG:32613 244 244 ll 4.7583779488046805 -107.92602632992818 245 en 175381.122583645 92 526643.9142125123246 ll2 4.758377948802 733 -107.92602632984342245 en 175381.1225836458 526643.9142124782 246 ll2 4.758377948802402 -107.92602632984344 247 247 EPSG:32614 248 248 ll 14.263757165950743 -100.80954124472483 249 en 304782.4591083076 1577656.5830076 581250 ll2 14.2637571659 4981 -100.80954124472157249 en 304782.4591083076 1577656.5830076297 250 ll2 14.26375716595045 -100.80954124472159 251 251 EPSG:32615 252 252 ll 84.67761930424092 -95.31735150114109 253 en 476007.39052546234 9404225.27289 0447254 ll2 84.6776193042 3927 -95.31735150113857253 en 476007.39052546234 9404225.272893205 254 ll2 84.67761930424076 -95.31735150113927 255 255 EPSG:32616 256 256 ll 72.583548496096 -84.95707014904738 257 en 568238.7416437431 8055185.317 495109258 ll2 72.58354849609 479 -84.95707014904791257 en 568238.7416437431 8055185.317500017 258 ll2 72.58354849609388 -84.9570701490479 259 259 EPSG:32617 260 260 ll 58.773416508274885 -79.23342848764487 261 en 602152.126425848 1 6516169.07728455262 ll2 58.77341650827 502 -79.23342848764443261 en 602152.126425848 6516169.077287629 262 ll2 58.77341650827223 -79.2334284876445 263 263 EPSG:32618 264 264 ll 0.8542824171250176 -70.60589399441409 265 en 989382.98486389 91 94704.1521896124266 ll2 0.8542824171 20703 -70.6058939952968265 en 989382.9848638988 94704.15218960555 266 ll2 0.8542824171192103 -70.6058939952968 267 267 EPSG:32619 268 268 ll 9.928164458825613 -66.53356619660251 269 en 770448.326274826 9 1098474.206981794270 ll2 9.92816445882 3826-66.533566196628269 en 770448.3262748267 1098474.2069817486 270 ll2 9.928164458824138 -66.533566196628 271 271 EPSG:32620 272 272 ll -2.6787491025025547 -66.88079230367741 273 en 68302.718105715 82 -296768.5025927464274 ll2 -2.67874910249 6994-66.88079230325388273 en 68302.71810571593 -296768.5025927257 274 ll2 -2.6787491024945553 -66.88079230325388 275 275 EPSG:32621 276 276 ll 69.83911306601517 -54.4569378254068 277 en 597795.3401803295 7749969.3563 78063278 ll2 69.8391130660 1044 -54.4569378254102277 en 597795.3401803295 7749969.356382903 278 ll2 69.83911306600419 -54.45693782541029 279 279 EPSG:32622 280 280 ll 14.524484069634685 -53.96374810803576 281 en 180556.3469154662 1607806.3026925 516282 ll2 14.5244840696 3183 -53.96374810799876281 en 180556.3469154662 1607806.302692525 282 ll2 14.524484069628397 -53.963748107998775 283 283 EPSG:32623 284 284 ll 16.394157590092313 -42.12374249522621 285 en 807234.007520253 2 1814713.5629615434286 ll2 16.3941575900 903 -42.123742495247065285 en 807234.0075202533 1814713.5629615306 286 ll2 16.394157590086483 -42.12374249524706 287 287 EPSG:32624 288 288 ll 5.131580338571972 -39.26307503457069 289 en 470842.78426743025 567215.003745 71290 ll2 5.13158033857 0435-39.26307503457069289 en 470842.78426743025 567215.0037456739 290 ll2 5.131580338571973 -39.26307503457069 291 291 EPSG:32625 292 292 ll -0.7883094164596285 -30.122300530621676 293 en 820321.3553729916 -87242.67464559 76294 ll2 -0.7883094164592 921-30.12230053070564293 en 820321.3553729916 -87242.67464559128 294 ll2 -0.7883094164592764 -30.12230053070564 295 295 EPSG:32626 296 296 ll 58.43458636013028 -29.168484112078048 297 en 373392.9302469797 5 6479137.419357916298 ll2 58.43458636012 712 -29.168484112078875297 en 373392.9302469797 6479137.4193609245 298 ll2 58.434586360121145 -29.168484112078794 299 299 EPSG:32627 300 300 ll 8.344532201175449 -23.182089463285656 301 en 259685.6891659215 923051.0956246062302 ll2 8.34453220117 3756 -23.182089463270486301 en 259685.68916592153 923051.0956245605 302 ll2 8.344532201174848 -23.182089463270497 303 303 EPSG:32628 304 304 ll 22.510955722354655 -11.39208694243174 305 en 871237.6024480207 2493863.4479682 63306 ll2 22.5109557223 3715 -11.392086942377526305 en 871237.6024480207 2493863.4479682995 306 ll2 22.510955722318098 -11.392086942377562 307 307 EPSG:32629 308 308 ll 21.147897974547682 -10.932715320979701 309 en 299305.3797185818 2339737.5836034 226310 ll2 21.14789797454 8883 -10.932715320979792309 en 299305.3797185818 2339737.5836034482 310 ll2 21.147897974546964 -10.93271532097978 311 311 EPSG:32630 312 312 ll 7.0485574964722595 -2.895336653090574 313 en 511558.9813362481 779118.029687 7392314 ll2 7.04855749647 0399 -2.8953366530905744313 en 511558.9813362481 779118.0296876958 314 ll2 7.0485574964722595 -2.895336653090574 315 315 EPSG:32631 316 316 ll 62.31144897764639 -1.7488227034434083 317 en 253972.6113974089 6917912.2269 69319318 ll2 62.31144897 723166 -1.7488227026127516317 en 253972.6113974089 6917912.226973126 318 ll2 62.31144897680178 -1.748822702612415 319 319 EPSG:32632 320 320 ll 11.834748738967427 11.598093592769366 321 en 783086.673635305 1309597.582045 318322 ll2 11.834748738965 645 11.598093592741604321 en 783086.673635305 1309597.582045277 322 ll2 11.834748738965084 11.59809359274162 323 323 EPSG:32633 324 324 ll 42.05539689126687 15.319058068358773 325 en 526400.7140049142 4655976.14728 0654326 ll2 42.05539689126 517 15.319058068358764325 en 526400.7140049142 4655976.147281091 326 ll2 42.05539689126688 15.319058068358773 327 327 EPSG:32634 328 328 ll 75.90951295643045 25.503495199048984 329 en 622276.0812525111 8429752.16628 064330 ll2 75.909512956 36204 25.503495198369787329 en 622276.0812525111 8429752.166285353 330 ll2 75.90951295629242 25.503495198370185 331 331 EPSG:32635 332 332 ll 47.49067536542698 25.527726208112252 333 en 389099.4234549984 5260743.89581 50195334 ll2 47.49067536542 474 25.527726208111613333 en 389099.4234549984 5260743.895816009 334 ll2 47.49067536542605 25.527726208111563 335 335 EPSG:32636 336 336 ll 2.3826611804187845 35.69036984079036 337 en 799224.052045565 263649.3963221862338 ll2 2.38266118041 7945635.69036984073283337 en 799224.0520455651 263649.3963221676 338 ll2 2.382661180418093 35.69036984073283 339 339 EPSG:32637 340 340 ll 52.14316359823634 35.33858849767755 341 en 249486.75996839185 5783285.07236 4062342 ll2 52.143163598 12051 35.33858849768192341 en 249486.75996839185 5783285.072365791 342 ll2 52.143163598004776 35.33858849768187 343 343 EPSG:32638 344 344 ll 53.91509364067411 42.2117397712837 345 en 316881.19957743154 5977677.04749 1307346 ll2 53.9150936406 5172642.21173977127907345 en 316881.19957743154 5977677.047493373 346 ll2 53.91509364062914 42.21173977127907 347 347 EPSG:32639 348 348 ll 78.6419869416514 46.228999725737076 349 en 395220.30455138447 8734297.00471 091350 ll2 78.6419869415 9873 46.22899972691323349 en 395220.30455138447 8734297.004715223 350 ll2 78.64198694154439 46.228999726912456 351 351 EPSG:32640 352 352 ll 53.864121366142705 57.44751774032813 353 en 529429.9386809022 5968496.73542 6065354 ll2 53.864121366142 6257.44751774032813353 en 529429.9386809022 5968496.735428121 354 ll2 53.8641213661427 57.44751774032813 355 355 EPSG:32641 356 356 ll 49.571868382578565 60.41766515903435 357 en 313303.34799034183 5494234.47121 1336358 ll2 49.5718683825 6323 60.41766515902558357 en 313303.34799034183 5494234.471212627 358 ll2 49.57186838255045 60.41766515902551 359 359 EPSG:32642 360 360 ll -1.9071382046033127 69.6619425586165 361 en 573618.7511049965 -210811.0083199 154362 ll2 -1.90713820460 26717 69.66194255861646361 en 573618.7511049965 -210811.00831990028 362 ll2 -1.9071382046033127 69.66194255861646 363 363 EPSG:32643 364 364 ll 1.4895490042363466 73.50410601478126 365 en 333581.31480363844 164696.774352 50996366 ll2 1.48954900423 5865773.50410601478401365 en 333581.31480363844 164696.77435249812 366 ll2 1.4895490042363353 73.50410601478401 367 367 EPSG:32644 368 368 ll 62.44367553939567 85.9750751673437 369 en 756598.954905078 6933493.14172 1524370 ll2 62.443675538 85303 85.97507516606653369 en 756598.954905078 6933493.141725358 370 ll2 62.44367553828925 85.97507516606618 371 371 EPSG:32645 372 372 ll 77.10426871059683 89.0221872636809 373 en 550370.2039676631 8559275.34448 2148374 ll2 77.10426871059 488 89.02218726368017373 en 550370.2039676631 8559275.344486712 374 ll2 77.10426871059592 89.0221872636804 375 375 EPSG:32646 376 376 ll 50.87569190579864 89.74835752271836 377 en 271249.3586776806 5641039.53564 0001378 ll2 50.875691905 74126 89.74835752270417377 en 271249.3586776806 5641039.535641504 378 ll2 50.87569190568538 89.7483575227041 379 379 EPSG:32647 380 380 ll 70.62231324887725 99.90770843411856 381 en 533612.0813866678 7835525.49074 2478382 ll2 70.622313248877 72 99.90770843411859381 en 533612.0813866678 7835525.490747357 382 ll2 70.6223132488772 99.90770843411856 383 383 EPSG:32648 384 384 ll 39.26637557561634 107.38423392284906 385 en 705690.5819331672 4349046.830078 62386 ll2 39.26637557560 961 107.38423392286235385 en 705690.5819331672 4349046.830078893 386 ll2 39.26637557560433 107.38423392286239 387 387 EPSG:32649 388 388 ll 11.255609425170523 111.88005555487531 389 en 596060.37945682 1244386.5306496 648390 ll2 11.2556094251 68716111.88005555487518389 en 596060.37945682 1244386.530649622 390 ll2 11.255609425170519 111.88005555487518 391 391 EPSG:32650 392 392 ll 9.877161924846341 119.53983649063838 393 en 778545.025409379 2 1092890.6707807586394 ll2 9.877161924844 472 119.53983649060855393 en 778545.0254093793 1092890.670780713 394 ll2 9.877161924844575 119.53983649060856 395 395 EPSG:32651 396 396 ll 29.894404052484198 123.73791699307937 397 en 571246.6122429472 3307313.233021 797398 ll2 29.89440405248 5946 123.73791699307941397 en 571246.6122429472 3307313.233021876 398 ll2 29.894404052484198 123.7379169930794 399 399 EPSG:32652 400 400 ll 51.483168367165725 131.7547299698076 401 en 691267.2942592341 5707156.07935 7853402 ll2 51.4831683671 4398 131.75472996981594401 en 691267.2942592341 5707156.0793594625 402 ll2 51.48316836712365 131.75472996981597 403 403 EPSG:32653 404 404 ll 3.9439937741275237 139.56906177178473 405 en 1007763.0974047978 437331.5026981 3027406 ll2 3.943993774 1018105139.5690617707412405 en 1007763.0974047978 437331.50269810087 406 ll2 3.9439937740936983 139.5690617707412 407 407 EPSG:32654 408 408 ll 0.16694081399375094 139.49272157099904 409 en 332258.8768147535 18458.40617151 3318410 ll2 0.166940813993 69648139.49272157100194409 en 332258.8768147535 18458.406171511975 410 ll2 0.16694081399374955 139.49272157100194 411 411 EPSG:32655 412 412 ll 15.325514479625792 147.8741788025552 413 en 593840.2220569488 1694519.0743215 398414 ll2 15.32551447962 4909147.87417880255512413 en 593840.2220569488 1694519.0743215194 414 ll2 15.325514479625788 147.87417880255512 415 415 EPSG:32656 416 416 ll 5.776293589970747 152.597733111241 417 en 455463.1790096139 638491.4093867 843418 ll2 5.7762935899 69082152.597733111241417 en 455463.1790096139 638491.4093867452 418 ll2 5.776293589970748 152.597733111241 419 419 EPSG:32657 420 420 ll 46.64079768923685 162.60478038581513 421 en 775876.514292158 3 5171562.354304005422 ll2 46.640797689 1373 162.60478038586604421 en 775876.5142921584 5171562.354304886 422 ll2 46.6407976890409 162.60478038586615 423 423 EPSG:32658 424 424 ll -0.9538168752974308 164.16373403116563 425 en 406954.01883056 597 -105436.825076515426 ll2 -0.953816875297 1059164.16373403116577425 en 406954.018830566 -105436.8250765074 426 ll2 -0.9538168752974306 164.16373403116577 427 427 EPSG:32659 428 428 ll 40.50129189541295 171.1151678182983 429 en 509758.4272200559 4483404.5016 49895430 ll2 40.50129189541 1576171.1151678182983429 en 509758.4272200559 4483404.501650231 430 ll2 40.501291895412955 171.1151678182983 431 431 EPSG:32660 432 432 ll 84.38466705329412 178.8187390897748 433 en 519865.443806882 5 9371350.999824923434 ll2 84.38466705329 245 178.81873908977406433 en 519865.4438068824 9371350.999827776 434 ll2 84.38466705329408 178.8187390897746 435 435 EPSG:32701 436 436 ll -29.00158099669585 -176.06257492764095 437 en 591305.923968974 7 6791477.062909814438 ll2 -29.00158099669 7747-176.06257492764087437 en 591305.9239689746 6791477.062909741 438 ll2 -29.001580996695832 -176.06257492764087 439 439 EPSG:32702 440 440 ll -83.61115414945169 -167.84722307361665 441 en 539148.6502865502 714244.73508 88532442 ll2 -83.611154149449 09 -167.84722307364663441 en 539148.6502865502 714244.735085763 442 ll2 -83.61115414944996 -167.84722307364575 443 443 EPSG:32703 444 444 ll -59.67977504854512 -165.75611289241155 445 en 457419.4744487591 3384008.1251 201406446 ll2 -59.67977504854 674 -165.75611289241158445 en 457419.4744487591 3384008.125116867 446 ll2 -59.67977504854512 -165.75611289241155 447 447 EPSG:32704 448 448 ll -44.74896637041389 -154.13571225132324 449 en 885055.000033729 5033414.62518 8409450 ll2 -44.748966369 85849 -154.13571225126154449 en 885055.000033729 5033414.6251877425 450 ll2 -44.74896636930496 -154.1357122512614 451 451 EPSG:32705 452 452 ll -4.570782032538887 -155.6804518141318 453 en 202567.2406829667 2 9494225.759775288454 ll2 -4.570782032537 401 -155.68045181407837453 en 202567.24068296677 9494225.75977532 454 ll2 -4.570782032537629 -155.6804518140784 455 455 EPSG:32706 456 456 ll -55.61672629832347 -144.3508810047789 457 en 666829.61029855 29 3833392.573244692458 ll2 -55.616726298 30789 -144.35088100477645457 en 666829.610298553 3833392.5732422806 458 ll2 -55.616726298291056 -144.35088100477648 459 459 EPSG:32707 460 460 ll -0.22277876804946573 -136.6505910806773 461 en 984445.3083006871 9975304.65194561 5462 ll2 -0.222778768048 41829-136.65059108151155461 en 984445.3083006871 9975304.651945617 462 ll2 -0.22277876804804692 -136.65059108151155 463 463 EPSG:32708 464 464 ll -2.768962687806777 -135.91033889187207 465 en 398815.2872440797 5 9693905.200367318466 ll2 -2.76896268780 5876-135.91033889187185465 en 398815.2872440797 9693905.20036734 466 ll2 -2.7689626878067735 -135.91033889187185 467 467 EPSG:32709 468 468 ll -32.79190171964473 -131.727811570545 469 en 244542.498427156 68 6368487.503688801470 ll2 -32.7919017196 3808 -131.7278115705747469 en 244542.4984271567 6368487.503688699 470 ll2 -32.79190171962786 -131.72781157057466 471 471 EPSG:32710 472 472 ll 1.5712020890239131 -124.21146729170505 473 en 365234.2722858875 1.01737045463613 38E7474 ll2 1.571202089023 3884-124.21146729170411473 en 365234.2722858875 1.0173704546361327E7 474 ll2 1.571202089023917 -124.21146729170411 475 475 EPSG:32711 476 476 ll -41.091261924884776 -120.17689123197003 477 en 233168.6164003252 5446247.13522 3156478 ll2 -41.0912619248 4649 -120.17689123202507477 en 233168.6164003252 5446247.135222786 478 ll2 -41.09126192481057 -120.17689123202514 479 479 EPSG:32712 480 480 ll -79.76744100986106 -115.94410343190378 481 en 402063.9138540749 1140210.10293 49882482 ll2 -79.767441009 81378 -115.94410343026465481 en 402063.9138540749 1140210.1029308978 482 ll2 -79.76744100976357 -115.94410343026561 483 483 EPSG:32713 484 484 ll -10.850887170003276 -108.88425627320359 485 en 75152.585173235 22 8797793.856423587486 ll2 -10.8508871699 8492 -108.88425627294212485 en 75152.58517323533 8797793.85642363 486 ll2 -10.850887169975316 -108.88425627294215 487 487 EPSG:32714 488 488 ll -56.89459290929925 -97.364159691813 489 en 599649.1533353492 3693155.66747 8282490 ll2 -56.89459290929 932 -97.36415969181257489 en 599649.1533353492 3693155.6674756007 490 ll2 -56.89459290929749 -97.36415969181262 491 491 EPSG:32715 492 492 ll -15.188620247220271 -96.23707027363224 493 en 152136.94772601 099 8318235.034911122494 ll2 -15.1886202472 14823 -96.23707027358184493 en 152136.94772601104 8318235.034911144 494 ll2 -15.188620247208913 -96.23707027358185 495 495 EPSG:32716 496 496 ll -4.559807376181936 -82.52818257741919 497 en 996538.1905094216 9494450.7750228 57498 ll2 -4.5598073761 56723-82.52818257832048497 en 996538.1905094216 9494450.775022889 498 ll2 -4.559807376148307 -82.52818257832048 499 499 EPSG:32717 500 500 ll -66.29192836668584 -83.46326129024452 501 en 389503.5113214161 2645374.94949 6709502 ll2 -66.2919283666 812 -83.46326129024257501 en 389503.5113214161 2645374.949492232 502 ll2 -66.2919283666731 -83.46326129024241 503 503 EPSG:32718 504 504 ll -2.5647882790401297 -76.48884831326323 505 en 334474.629980397 76 9716415.67820614506 ll2 -2.5647882790 393166 -76.48884831326058505 en 334474.6299803979 9716415.67820616 506 ll2 -2.5647882790401026 -76.48884831326058 507 507 EPSG:32719 508 508 ll -3.3106740144730935 -68.43248658691562 509 en 563046.3761068006 9634048.9296253 66510 ll2 -3.31067401447 20264-68.43248658691563509 en 563046.3761068006 9634048.929625392 510 ll2 -3.3106740144730917 -68.43248658691563 511 511 EPSG:32720 512 512 ll -69.88660504305992 -58.451395274860495 513 en 674428.974179743 2240266.5274 605397514 ll2 -69.886605042 88639 -58.451395275542424513 en 674428.974179743 2240266.527455697 514 ll2 -69.88660504270575 -58.451395275542595 515 515 EPSG:32721 516 516 ll -1.460807694037996 -56.918034017934815 517 en 509117.82030811213 9838536.340686 49518 ll2 -1.460807694037 499 -56.918034017934815517 en 509117.82030811213 9838536.340686502 518 ll2 -1.460807694037999 -56.918034017934815 519 519 EPSG:32722 520 520 ll -67.51187256863244 -49.8909954222962 521 en 547334.5777219022 2511132.64948 7271522 ll2 -67.51187256863 38 -49.89099542229613521 en 547334.5777219022 2511132.6494826376 522 ll2 -67.51187256863231 -49.89099542229619 523 523 EPSG:32723 524 524 ll -37.33901138489274 -46.319661481385886 525 en 383102.3012525303 5866702.311873849526 ll2 -37.339011384892 22 -46.3196614813865525 en 383102.30125253036 5866702.31187365 526 ll2 -37.339011384892444 -46.319661481386504 527 527 EPSG:32724 528 528 ll -64.98185873306474 -42.631062127293355 529 en 328728.80380145 39 2788647.117090909530 ll2 -64.9818587329 9518 -42.631062127215536529 en 328728.803801454 2788647.1170866266 530 ll2 -64.98185873292093 -42.631062127215266 531 531 EPSG:32725 532 532 ll -65.44826790805924 -36.847373771828195 533 en 321704.4754237144 2736137.61005 84166534 ll2 -65.448267907 96357 -36.847373771693476533 en 321704.4754237144 2736137.6100540617 534 ll2 -65.44826790786279 -36.847373771693206 535 535 EPSG:32726 536 536 ll -45.64851344048113 -31.882495362328466 537 en 119560.580751438 33 4933398.9237327585538 ll2 -45.648513439 89748 -31.88249536231209537 en 119560.58075143828 4933398.923731995 538 ll2 -45.648513439313405 -31.88249536231225 539 539 EPSG:32727 540 540 ll -50.934366256586614 -25.166137353819305 541 en 207304.567984617 26 4349205.018263729542 ll2 -50.934366256 33735 -25.166137353769805541 en 207304.56798461737 4349205.018262214 542 ll2 -50.93436625608718 -25.166137353769884 543 543 EPSG:32728 544 544 ll -75.6414574413936 -19.243865220370584 545 en 382615.2732716046 1600607.71058 68515546 ll2 -75.641457441 34245 -19.24386521997399545 en 382615.2732716046 1600607.7105821092 546 ll2 -75.64145744129156 -19.243865219974342 547 547 EPSG:32729 548 548 ll -83.5333650193571 -5.501531193633692 549 en 543962.835055189 722665.36145 4945550 ll2 -83.5333650193537 2 -5.501531193708958549 en 543962.835055189 722665.3614518307 550 ll2 -83.53336501935377 -5.501531193707987 551 551 EPSG:32730 552 552 ll -81.54589940598518 -0.6625327966681755 553 en 538355.0358692394 945086.5607 411675554 ll2 -81.54589940598 29 -0.6625327966706558553 en 538355.0358692394 945086.5607374981 554 ll2 -81.54589940598454 -0.6625327966701109 555 555 EPSG:32731 556 556 ll -77.7299649478657 6.793662551026102 557 en 589941.1445311456 1368855.44577 79005558 ll2 -77.7299649478 4715 6.793662550878116557 en 589941.1445311456 1368855.4457734264 558 ll2 -77.72996494783142 6.793662550878642 559 559 EPSG:32732 560 560 ll -1.791491309390267 5.643292386980017 561 en 126449.063230807 37 9801643.353370322562 ll2 -1.791491309388 7788 5.643292387171931561 en 126449.06323080743 9801643.353370337 562 ll2 -1.7914913093881504 5.643292387171929 563 563 EPSG:32733 564 564 ll -4.126836934079179 14.21193297521501 565 en 412530.976448854 55 9543809.318915792566 ll2 -4.12683693407 788414.211932975215113565 en 412530.9764488546 9543809.318915822 566 ll2 -4.126836934079182 14.211932975215113 567 567 EPSG:32734 568 568 ll 3.2478852471029853 16.30155670183659 569 en -22571.106634815 456 1.0360208764095124E7570 ll2 3.2478852470 7682616.301556703090707569 en -22571.10663481534 1.03602087640951E7 570 ll2 3.247885247069191 16.301556703090707 571 571 EPSG:32735 572 572 ll -67.02488461225471 23.602574863927025 573 en 352075.73642084474 2561806.49750 45808574 ll2 -67.024884612 21535 23.602574863972343573 en 352075.73642084474 2561806.4975000024 574 ll2 -67.0248846121725 23.60257486397256 575 575 EPSG:32736 576 576 ll -42.55662303150512 29.942428252202173 577 en 248987.61723446447 5283887.580592 804578 ll2 -42.5566230314 7199 29.942428252161324577 en 248987.61723446447 5283887.58059233 578 ll2 -42.55662303144185 29.94242825216124 579 579 EPSG:32737 580 580 ll -63.21444761968792 35.222287816138596 581 en 310135.9849165189 2984926.85704 88933582 ll2 -63.214447619 588334 35.22228781624288581 en 310135.9849165189 2984926.8570449185 582 ll2 -63.21444761948333 35.22228781624316 583 583 EPSG:32738 584 584 ll -33.61049536194267 49.3934280355533 585 en 907721.7528865209 6272366.919585 204586 ll2 -33.610495361 77813 49.39342803597181585 en 907721.7528865209 6272366.919585092 586 ll2 -33.61049536162698 49.393428035971766 587 587 EPSG:32739 588 588 ll -36.97742607037574 49.32483640492937 589 en 350900.55360484595 5906320.568081 439590 ll2 -36.977426070374 97 49.324836404927225589 en 350900.55360484595 5906320.568081254 590 ll2 -36.977426070374484 49.32483640492722 591 591 EPSG:32740 592 592 ll -78.828450880352 53.91362023885953 593 en 433274.5310192385 1247408.59764 6758594 ll2 -78.82845088034 634 53.913620238883254593 en 433274.5310192385 1247408.5976424795 594 ll2 -78.82845088034429 53.91362023888275 595 595 EPSG:32741 596 596 ll -26.30036312196733 65.289773385337 597 en 728606.5155660608 7089027.4546818 92598 ll2 -26.30036312196 8427 65.28977338534429597 en 728606.5155660608 7089027.454681832 598 ll2 -26.300363121964097 65.28977338534425 599 599 EPSG:32742 600 600 ll -46.57798418816586 66.46686755703854 601 en 305909.44786115 893 4838613.998469358602 ll2 -46.5779841881 52286 66.46686755702721601 en 305909.447861159 4838613.998468486 602 ll2 -46.577984188142224 66.46686755702713 603 603 EPSG:32743 604 604 ll -25.298456802256545 78.290225577417 605 en 831325.5755857098 7197935.587045 648606 ll2 -25.2984568022 45934 78.29022557747085605 en 831325.5755857098 7197935.587045593 606 ll2 -25.29845680223009 78.29022557747079 607 607 EPSG:32744 608 608 ll -23.333853962130412 81.03414728671824 609 en 503490.800754981 7419521.505624 639610 ll2 -23.33385396213 19881.03414728671824609 en 503490.800754981 7419521.505624598 610 ll2 -23.333853962130405 81.03414728671824 611 611 EPSG:32745 612 612 ll -27.850501765768136 88.49974130692067 613 en 647670.9268986753 6918455.1208804 85614 ll2 -27.8505017657 7014 88.49974130692154613 en 647670.9268986753 6918455.1208804175 614 ll2 -27.850501765767852 88.4997413069215 615 615 EPSG:32746 616 616 ll -21.043491771413862 94.96493214411353 617 en 704183.757867928 6 7671781.457049133618 ll2 -21.04349177141 502 94.96493214411359617 en 704183.7578679285 7671781.457049107 618 ll2 -21.043491771413077 94.96493214411358 619 619 EPSG:32747 620 620 ll -17.444781767557416 97.838202011294 621 en 376622.8914274465 8070864.87377564 4622 ll2 -17.444781767557 27497.8382020112942621 en 376622.8914274465 8070864.873775648 622 ll2 -17.44478176755739 97.8382020112942 623 623 EPSG:32748 624 624 ll -58.2033639588618 101.36763036809408 625 en 286575.74435410445 3542895.42357 8527626 ll2 -58.203363958 762644 101.36763036814246625 en 286575.74435410445 3542895.423575569 626 ll2 -58.203363958659644 101.3676303681426 627 627 EPSG:32749 628 628 ll -38.23589206710369 109.25679480724837 629 en 347437.2273847225 6 5766575.122088731630 ll2 -38.23589206710 225 109.25679480724578629 en 347437.2273847225 5766575.122088502 630 ll2 -38.23589206710197 109.25679480724575 631 631 EPSG:32750 632 632 ll -29.646256411547412 116.5390917394596 633 en 455389.40541231557 6720322.49527 9071634 ll2 -29.64625641154 921 116.53909173945958633 en 455389.40541231557 6720322.4952789955 634 ll2 -29.64625641154741 116.5390917394596 635 635 EPSG:32751 636 636 ll -32.31249913837224 123.5620478825476 637 en 552907.9443416377 6424786.563103 266638 ll2 -32.31249913837 346 123.56204788254762637 en 552907.9443416377 6424786.563103167 638 ll2 -32.312499138372246 123.56204788254762 639 639 EPSG:32752 640 640 ll -40.03951775988635 127.43317318342925 641 en 366330.3564929392 5566680.742924 484642 ll2 -40.03951775988 467 127.43317318342785641 en 366330.3564929392 5566680.742924173 642 ll2 -40.03951775988534 127.43317318342783 643 643 EPSG:32753 644 644 ll -28.176037015492348 138.7789296805875 645 en 871098.4449456041 6877512.944383 415646 ll2 -28.1760370154 52554 138.77892968074894645 en 871098.4449456041 6877512.944383347 646 ll2 -28.17603701541255 138.7789296807489 647 647 EPSG:32754 648 648 ll -76.09420937279235 144.16836879822267 649 en 584959.5966797009 1552021.52955 83569650 ll2 -76.0942093727 8291 144.16836879819374649 en 584959.5966797009 1552021.5295536648 650 ll2 -76.09420937277592 144.16836879819402 651 651 EPSG:32755 652 652 ll -5.430354355649115 147.0530080779711 653 en 505872.17624536785 9399764.410398 081654 ll2 -5.43035435564 7516147.0530080779711653 en 505872.17624536785 9399764.410398118 654 ll2 -5.430354355649118 147.0530080779711 655 655 EPSG:32756 656 656 ll -52.48522451023355 152.57450200005235 657 en 471106.2760023533 5 4184906.4029197395658 ll2 -52.48522451023 299152.57450200005235657 en 471106.2760023533 4184906.4029179476 658 ll2 -52.48522451023355 152.57450200005235 659 659 EPSG:32757 660 660 ll -20.68227265660569 154.09167529202733 661 en -11660.99396926 6012 7705261.8022987265662 ll2 -20.682272656 454828 154.09167529182264661 en -11660.993969265954 7705261.802298705 662 ll2 -20.682272656387454 154.09167529182267 663 663 EPSG:32758 664 664 ll -6.482322318456696 161.77847911397538 665 en 143617.7405419257 9282345.981167 397666 ll2 -6.48232231845 288 161.77847911410754665 en 143617.7405419257 9282345.981167438 666 ll2 -6.482322318451158 161.77847911410754 667 667 EPSG:32759 668 668 ll -9.653111284693267 166.1444317382442 669 en -33309.99683953 6005 8929144.290482178670 ll2 -9.653111284 606696 166.1444317392922669 en -33309.99683953577 8929144.290482225 670 ll2 -9.653111284583055 166.14443173929217 671 671 EPSG:32760 672 672 ll -36.29211488935783 181.82910716731914 673 en 933779.944968744 5972815.905636 307674 ll2 -36.29211488 900613 181.82910716792168673 en 933779.944968744 5972815.905636139 674 ll2 -36.29211488867873 181.82910716792168 675 675 EPSG:3301 676 676 ll 59.493759099912154 27.525338967200614 -
trunk/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java
r9073 r9112 2 2 package org.openstreetmap.josm.data.projection.proj; 3 3 4 import static java.lang.Math.cos;5 import static java.lang.Math.pow;6 import static java.lang.Math.sin;7 import static java.lang.Math.sqrt;8 import static java.lang.Math.tan;9 4 import static org.openstreetmap.josm.tools.I18n.tr; 10 5 … … 12 7 13 8 /** 14 * Transverse Mercator projection. 9 * Transverse Mercator Projection (EPSG code 9807). This 10 * is a cylindrical projection, in which the cylinder has been rotated 90°. 11 * Instead of being tangent to the equator (or to an other standard latitude), 12 * it is tangent to a central meridian. Deformation are more important as we 13 * are going futher from the central meridian. The Transverse Mercator 14 * projection is appropriate for region wich have a greater extent north-south 15 * than east-west. 16 * <p> 15 17 * 16 * @author Dirk Stöcker 17 * code based on JavaScript from Chuck Taylor 18 * The elliptical equations used here are series approximations, and their accuracy 19 * decreases as points move farther from the central meridian of the projection. 20 * The forward equations here are accurate to a less than a mm ±10 degrees from 21 * the central meridian, a few mm ±15 degrees from the 22 * central meridian and a few cm ±20 degrees from the central meridian. 23 * The spherical equations are not approximations and should always give the 24 * correct values. 25 * <p> 18 26 * 27 * There are a number of versions of the transverse mercator projection 28 * including the Universal (UTM) and Modified (MTM) Transverses Mercator 29 * projections. In these cases the earth is divided into zones. For the UTM 30 * the zones are 6 degrees wide, numbered from 1 to 60 proceeding east from 31 * 180 degrees longitude, and between lats 84 degrees North and 80 32 * degrees South. The central meridian is taken as the center of the zone 33 * and the latitude of origin is the equator. A scale factor of 0.9996 and 34 * false easting of 500000m is used for all zones and a false northing of 10000000m 35 * is used for zones in the southern hemisphere. 36 * <p> 37 * 38 * NOTE: formulas used below are not those of Snyder, but rather those 39 * from the {@code proj4} package of the USGS survey, which 40 * have been reproduced verbatim. USGS work is acknowledged here. 41 * <p> 42 * 43 * This class has been derived from the implementation of the Geotools project; 44 * git 8cbf52d, org.geotools.referencing.operation.projection.TransverseMercator 45 * at the time of migration. 46 * <p> 47 * 48 * <b>References:</b> 49 * <ul> 50 * <li> Proj-4.4.6 available at <A HREF="http://www.remotesensing.org/proj">www.remotesensing.org/proj</A><br> 51 * Relevent files are: {@code PJ_tmerc.c}, {@code pj_mlfn.c}, {@code pj_fwd.c} and {@code pj_inv.c}.</li> 52 * <li> John P. Snyder (Map Projections - A Working Manual, 53 * U.S. Geological Survey Professional Paper 1395, 1987).</li> 54 * <li> "Coordinate Conversions and Transformations including Formulas", 55 * EPSG Guidence Note Number 7, Version 19.</li> 56 * </ul> 57 * 58 * @see <A HREF="http://mathworld.wolfram.com/MercatorProjection.html">Transverse Mercator projection on MathWorld</A> 59 * @see <A HREF="http://www.remotesensing.org/geotiff/proj_list/transverse_mercator.html">"Transverse_Mercator" on RemoteSensing.org</A> 60 * 61 * @author André Gosselin 62 * @author Martin Desruisseaux (PMO, IRD) 63 * @author Rueben Schulz 19 64 */ 20 public class TransverseMercator implementsProj {65 public class TransverseMercator extends AbstractProj { 21 66 22 protected double a, b; 67 /** 68 * Contants used for the forward and inverse transform for the eliptical 69 * case of the Transverse Mercator. 70 */ 71 private static final double FC1= 1.00000000000000000000000, // 1/1 72 FC2= 0.50000000000000000000000, // 1/2 73 FC3= 0.16666666666666666666666, // 1/6 74 FC4= 0.08333333333333333333333, // 1/12 75 FC5= 0.05000000000000000000000, // 1/20 76 FC6= 0.03333333333333333333333, // 1/30 77 FC7= 0.02380952380952380952380, // 1/42 78 FC8= 0.01785714285714285714285; // 1/56 79 80 /** 81 * Maximum difference allowed when comparing real numbers. 82 */ 83 private static final double EPSILON = 1E-6; 84 85 /** 86 * A derived quantity of excentricity, computed by <code>e'² = (a²-b²)/b² = es/(1-es)</code> 87 * where <var>a</var> is the semi-major axis length and <var>b</bar> is the semi-minor axis 88 * length. 89 */ 90 private double eb2; 91 92 /** 93 * Latitude of origin in <u>radians</u>. Default value is 0, the equator. 94 * This is called '<var>phi0</var>' in Snyder. 95 * <p> 96 * <strong>Consider this field as final</strong>. It is not final only 97 * because some classes need to modify it at construction time. 98 */ 99 protected double latitudeOfOrigin; 100 101 /** 102 * Meridian distance at the {@code latitudeOfOrigin}. 103 * Used for calculations for the ellipsoid. 104 */ 105 private double ml0; 23 106 24 107 @Override … … 34 117 @Override 35 118 public void initialize(ProjParameters params) throws ProjectionConfigurationException { 36 this.a = params.ellps.a; 37 this.b = params.ellps.b; 119 super.initialize(params); 120 eb2 = params.ellps.eb2; 121 latitudeOfOrigin = params.lat0 == null ? 0 : Math.toRadians(params.lat0); 122 ml0 = mlfn(latitudeOfOrigin, Math.sin(latitudeOfOrigin), Math.cos(latitudeOfOrigin)); 38 123 } 39 124 40 /**41 * Converts a latitude/longitude pair to x and y coordinates in the42 * Transverse Mercator projection. Note that Transverse Mercator is not43 * the same as UTM; a scale factor is required to convert between them.44 *45 * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J.,46 * GPS: Theory and Practice, 3rd ed. New York: Springer-Verlag Wien, 1994.47 *48 * @param phi Latitude of the point, in radians49 * @param lambda Longitude of the point, in radians50 * @return A 2-element array containing the x and y coordinates51 * of the computed point52 */53 125 @Override 54 public double[] project(double phi, double lambda) { 126 public double[] project(double y, double x) { 127 double sinphi = Math.sin(y); 128 double cosphi = Math.cos(y); 55 129 56 /* Precalculate ep2 */ 57 double ep2 = (pow(a, 2.0) - pow(b, 2.0)) / pow(b, 2.0); 130 double t = (Math.abs(cosphi) > EPSILON) ? sinphi/cosphi : 0; 131 t *= t; 132 double al = cosphi*x; 133 double als = al*al; 134 al /= Math.sqrt(1.0 - e2 * sinphi*sinphi); 135 double n = eb2 * cosphi*cosphi; 58 136 59 /* Precalculate nu2 */ 60 double nu2 = ep2 * pow(cos(phi), 2.0); 137 /* NOTE: meridinal distance at latitudeOfOrigin is always 0 */ 138 y = (mlfn(y, sinphi, cosphi) - ml0 + 139 sinphi * al * x * 140 FC2 * ( 1.0 + 141 FC4 * als * (5.0 - t + n*(9.0 + 4.0*n) + 142 FC6 * als * (61.0 + t * (t - 58.0) + n*(270.0 - 330.0*t) + 143 FC8 * als * (1385.0 + t * ( t*(543.0 - t) - 3111.0)))))); 61 144 62 /* Precalculate N / a */ 63 double N_a = a / (b * sqrt(1 + nu2)); 145 x = al*(FC1 + FC3 * als*(1.0 - t + n + 146 FC5 * als * (5.0 + t*(t - 18.0) + n*(14.0 - 58.0*t) + 147 FC7 * als * (61.0+ t*(t*(179.0 - t) - 479.0 ))))); 64 148 65 /* Precalculate t */ 66 double t = tan(phi); 67 double t2 = t * t; 68 69 /* Precalculate l */ 70 double l = lambda; 71 72 /* Precalculate coefficients for l**n in the equations below 73 so a normal human being can read the expressions for easting 74 and northing 75 -- l**1 and l**2 have coefficients of 1.0 */ 76 double l3coef = 1.0 - t2 + nu2; 77 78 double l4coef = 5.0 - t2 + 9 * nu2 + 4.0 * (nu2 * nu2); 79 80 double l5coef = 5.0 - 18.0 * t2 + (t2 * t2) + 14.0 * nu2 81 - 58.0 * t2 * nu2; 82 83 double l6coef = 61.0 - 58.0 * t2 + (t2 * t2) + 270.0 * nu2 84 - 330.0 * t2 * nu2; 85 86 double l7coef = 61.0 - 479.0 * t2 + 179.0 * (t2 * t2) - (t2 * t2 * t2); 87 88 double l8coef = 1385.0 - 3111.0 * t2 + 543.0 * (t2 * t2) - (t2 * t2 * t2); 89 90 return new double[] { 91 /* Calculate easting (x) */ 92 N_a * cos(phi) * l 93 + (N_a / 6.0 * pow(cos(phi), 3.0) * l3coef * pow(l, 3.0)) 94 + (N_a / 120.0 * pow(cos(phi), 5.0) * l5coef * pow(l, 5.0)) 95 + (N_a / 5040.0 * pow(cos(phi), 7.0) * l7coef * pow(l, 7.0)), 96 /* Calculate northing (y) */ 97 ArcLengthOfMeridian(phi) / a 98 + (t / 2.0 * N_a * pow(cos(phi), 2.0) * pow(l, 2.0)) 99 + (t / 24.0 * N_a * pow(cos(phi), 4.0) * l4coef * pow(l, 4.0)) 100 + (t / 720.0 * N_a * pow(cos(phi), 6.0) * l6coef * pow(l, 6.0)) 101 + (t / 40320.0 * N_a * pow(cos(phi), 8.0) * l8coef * pow(l, 8.0)) }; 149 return new double[] { x, y }; 102 150 } 103 151 104 /**105 * Converts x and y coordinates in the Transverse Mercator projection to106 * a latitude/longitude pair. Note that Transverse Mercator is not107 * the same as UTM; a scale factor is required to convert between them.108 *109 * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J.,110 * GPS: Theory and Practice, 3rd ed. New York: Springer-Verlag Wien, 1994.111 *112 * Remarks:113 * The local variables Nf, nuf2, tf, and tf2 serve the same purpose as114 * N, nu2, t, and t2 in MapLatLonToXY, but they are computed with respect115 * to the footpoint latitude phif.116 *117 * x1frac, x2frac, x2poly, x3poly, etc. are to enhance readability and118 * to optimize computations.119 *120 * @param x The easting of the point, in meters, divided by the semi major axis of the ellipsoid121 * @param y The northing of the point, in meters, divided by the semi major axis of the ellipsoid122 * @return A 2-element containing the latitude and longitude123 * in radians124 */125 152 @Override 126 153 public double[] invproject(double x, double y) { 127 /* Get the value of phif, the footpoint latitude. */ 128 double phif = footpointLatitude(y); 154 double phi = inv_mlfn(ml0 + y); 129 155 130 /* Precalculate ep2 */ 131 double ep2 = (a*a - b*b) 132 / (b*b); 156 if (Math.abs(phi) >= Math.PI/2) { 157 y = y<0.0 ? -(Math.PI/2) : (Math.PI/2); 158 x = 0.0; 159 } else { 160 double sinphi = Math.sin(phi); 161 double cosphi = Math.cos(phi); 162 double t = (Math.abs(cosphi) > EPSILON) ? sinphi/cosphi : 0.0; 163 double n = eb2 * cosphi*cosphi; 164 double con = 1.0 - e2 * sinphi*sinphi; 165 double d = x * Math.sqrt(con); 166 con *= t; 167 t *= t; 168 double ds = d*d; 133 169 134 /* Precalculate cos(phif) */ 135 double cf = cos(phif); 170 y = phi - (con*ds / (1.0 - e2)) * 171 FC2 * (1.0 - ds * 172 FC4 * (5.0 + t*(3.0 - 9.0*n) + n*(1.0 - 4*n) - ds * 173 FC6 * (61.0 + t*(90.0 - 252.0*n + 45.0*t) + 46.0*n - ds * 174 FC8 * (1385.0 + t*(3633.0 + t*(4095.0 + 1574.0*t)))))); 136 175 137 /* Precalculate nuf2 */ 138 double nuf2 = ep2 * pow(cf, 2.0); 139 140 /* Precalculate Nf / a and initialize Nfpow */ 141 double Nf_a = a / (b * sqrt(1 + nuf2)); 142 double Nfpow = Nf_a; 143 144 /* Precalculate tf */ 145 double tf = tan(phif); 146 double tf2 = tf * tf; 147 double tf4 = tf2 * tf2; 148 149 /* Precalculate fractional coefficients for x**n in the equations 150 below to simplify the expressions for latitude and longitude. */ 151 double x1frac = 1.0 / (Nfpow * cf); 152 153 Nfpow *= Nf_a; /* now equals Nf**2) */ 154 double x2frac = tf / (2.0 * Nfpow); 155 156 Nfpow *= Nf_a; /* now equals Nf**3) */ 157 double x3frac = 1.0 / (6.0 * Nfpow * cf); 158 159 Nfpow *= Nf_a; /* now equals Nf**4) */ 160 double x4frac = tf / (24.0 * Nfpow); 161 162 Nfpow *= Nf_a; /* now equals Nf**5) */ 163 double x5frac = 1.0 / (120.0 * Nfpow * cf); 164 165 Nfpow *= Nf_a; /* now equals Nf**6) */ 166 double x6frac = tf / (720.0 * Nfpow); 167 168 Nfpow *= Nf_a; /* now equals Nf**7) */ 169 double x7frac = 1.0 / (5040.0 * Nfpow * cf); 170 171 Nfpow *= Nf_a; /* now equals Nf**8) */ 172 double x8frac = tf / (40320.0 * Nfpow); 173 174 /* Precalculate polynomial coefficients for x**n. 175 -- x**1 does not have a polynomial coefficient. */ 176 double x2poly = -1.0 - nuf2; 177 double x3poly = -1.0 - 2 * tf2 - nuf2; 178 double x4poly = 5.0 + 3.0 * tf2 + 6.0 * nuf2 - 6.0 * tf2 * nuf2 - 3.0 * (nuf2 *nuf2) - 9.0 * tf2 * (nuf2 * nuf2); 179 double x5poly = 5.0 + 28.0 * tf2 + 24.0 * tf4 + 6.0 * nuf2 + 8.0 * tf2 * nuf2; 180 double x6poly = -61.0 - 90.0 * tf2 - 45.0 * tf4 - 107.0 * nuf2 + 162.0 * tf2 * nuf2; 181 double x7poly = -61.0 - 662.0 * tf2 - 1320.0 * tf4 - 720.0 * (tf4 * tf2); 182 double x8poly = 1385.0 + 3633.0 * tf2 + 4095.0 * tf4 + 1575 * (tf4 * tf2); 183 184 return new double[] { 185 /* Calculate latitude */ 186 phif + x2frac * x2poly * (x * x) 187 + x4frac * x4poly * pow(x, 4.0) 188 + x6frac * x6poly * pow(x, 6.0) 189 + x8frac * x8poly * pow(x, 8.0), 190 /* Calculate longitude */ 191 x1frac * x 192 + x3frac * x3poly * pow(x, 3.0) 193 + x5frac * x5poly * pow(x, 5.0) 194 + x7frac * x7poly * pow(x, 7.0) }; 195 } 196 197 /** 198 * ArcLengthOfMeridian 199 * 200 * Computes the ellipsoidal distance from the equator to a point at a 201 * given latitude. 202 * 203 * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J., 204 * GPS: Theory and Practice, 3rd ed. New York: Springer-Verlag Wien, 1994. 205 * 206 * @param phi Latitude of the point, in radians 207 * @return The ellipsoidal distance of the point from the equator 208 * (in meters, divided by the semi major axis of the ellipsoid) 209 */ 210 private double ArcLengthOfMeridian(double phi) { 211 /* Precalculate n */ 212 double n = (a - b) / (a + b); 213 214 /* Precalculate alpha */ 215 double alpha = ((a + b) / 2.0) 216 * (1.0 + (pow(n, 2.0) / 4.0) + (pow(n, 4.0) / 64.0)); 217 218 /* Precalculate beta */ 219 double beta = (-3.0 * n / 2.0) + (9.0 * pow(n, 3.0) / 16.0) 220 + (-3.0 * pow(n, 5.0) / 32.0); 221 222 /* Precalculate gamma */ 223 double gamma = (15.0 * pow(n, 2.0) / 16.0) 224 + (-15.0 * pow(n, 4.0) / 32.0); 225 226 /* Precalculate delta */ 227 double delta = (-35.0 * pow(n, 3.0) / 48.0) 228 + (105.0 * pow(n, 5.0) / 256.0); 229 230 /* Precalculate epsilon */ 231 double epsilon = 315.0 * pow(n, 4.0) / 512.0; 232 233 /* Now calculate the sum of the series and return */ 234 return alpha 235 * (phi + (beta * sin(2.0 * phi)) 236 + (gamma * sin(4.0 * phi)) 237 + (delta * sin(6.0 * phi)) 238 + (epsilon * sin(8.0 * phi))); 239 } 240 241 /** 242 * FootpointLatitude 243 * 244 * Computes the footpoint latitude for use in converting transverse 245 * Mercator coordinates to ellipsoidal coordinates. 246 * 247 * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J., 248 * GPS: Theory and Practice, 3rd ed. New York: Springer-Verlag Wien, 1994. 249 * 250 * @param y northing coordinate, in meters, divided by the semi major axis of the ellipsoid 251 * @return The footpoint latitude, in radians 252 */ 253 private double footpointLatitude(double y) { 254 /* Precalculate n (Eq. 10.18) */ 255 double n = (a - b) / (a + b); 256 257 /* Precalculate alpha_ (Eq. 10.22) */ 258 /* (Same as alpha in Eq. 10.17) */ 259 double alpha_ = ((a + b) / 2.0) 260 * (1 + (pow(n, 2.0) / 4) + (pow(n, 4.0) / 64)); 261 262 /* Precalculate y_ (Eq. 10.23) */ 263 double y_ = y / alpha_ * a; 264 265 /* Precalculate beta_ (Eq. 10.22) */ 266 double beta_ = (3.0 * n / 2.0) + (-27.0 * pow(n, 3.0) / 32.0) 267 + (269.0 * pow(n, 5.0) / 512.0); 268 269 /* Precalculate gamma_ (Eq. 10.22) */ 270 double gamma_ = (21.0 * pow(n, 2.0) / 16.0) 271 + (-55.0 * pow(n, 4.0) / 32.0); 272 273 /* Precalculate delta_ (Eq. 10.22) */ 274 double delta_ = (151.0 * pow(n, 3.0) / 96.0) 275 + (-417.0 * pow(n, 5.0) / 128.0); 276 277 /* Precalculate epsilon_ (Eq. 10.22) */ 278 double epsilon_ = 1097.0 * pow(n, 4.0) / 512.0; 279 280 /* Now calculate the sum of the series (Eq. 10.21) */ 281 return y_ + (beta_ * sin(2.0 * y_)) 282 + (gamma_ * sin(4.0 * y_)) 283 + (delta_ * sin(6.0 * y_)) 284 + (epsilon_ * sin(8.0 * y_)); 176 x = d*(FC1 - ds * FC3 * (1.0 + 2.0*t + n - 177 ds*FC5*(5.0 + t*(28.0 + 24* t + 8.0*n) + 6.0*n - 178 ds*FC7*(61.0 + t*(662.0 + t*(1320.0 + 720.0*t))))))/cosphi; 179 } 180 return new double[] { y, x }; 285 181 } 286 182 }
Note:
See TracChangeset
for help on using the changeset viewer.