Changeset 9112 in josm for trunk


Ignore:
Timestamp:
2015-12-13T17:17:37+01:00 (9 years ago)
Author:
bastiK
Message:

applied #12185 - support latitude of natural origin for Transverse Mercator projection
(imports pieces of code from the Geotools project)

Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/data_nodist/projection-regression-test-data.csv

    r9111 r9112  
    33EPSG:2017
    44  ll  41.91261175251477 -74.89278047335935
    5   en  189256.4602437003 4642190.984738664
    6   ll2 41.91261175251276 -74.89278047336005
     5  en  189256.46024370025 4642190.984739115
     6  ll2 41.912611752514195 -74.89278047336009
    77EPSG:2018
    88  ll  59.44382107698691 -75.69994294027252
    9   en  350186.8769538684 6591516.123763522
    10   ll2 59.44382107698858 -75.69994294027248
     9  en  350186.8769538684 6591516.123766931
     10  ll2 59.44382107698689 -75.6999429402725
    1111EPSG:2019
    1212  ll  59.57974571574399 -77.62068644735783
    13   en  410977.0432181668 6607886.358465634
    14   ll2 59.57974571574385 -77.62068644735734
     13  en  410977.0432181668 6607886.358469073
     14  ll2 59.579745715740216 -77.62068644735744
    1515EPSG:2020
    1616  ll  48.70994767392709 -80.98151833777705
    17   en  416544.4938169358 5397725.736308142
    18   ll2 48.70994767392482 -80.98151833777635
     17  en  416544.49381693586 5397725.73630937
     18  ll2 48.70994767392592 -80.98151833777631
    1919EPSG:2021
    2020  ll  44.32069045402543 -82.35101240098113
    21   en  197033.18890380082 4909636.245298124
    22   ll2 44.32069045402312 -82.35101240098165
     21  en  197033.18890380085 4909636.245298789
     22  ll2 44.32069045402493 -82.3510124009817
    2323EPSG:2022
    2424  ll  52.974406405116596 -82.60706276272059
    25   en  398364.5940485396 5871875.610649286
    26   ll2 52.97440640511583 -82.60706276272029
     25  en  398364.5940485396 5871875.610651281
     26  ll2 52.97440640511588 -82.60706276272028
    2727EPSG:2023
    2828  ll  48.878498193945305 -87.13823590455254
    29   en  294661.1404832435 5415364.121539741
    30   ll2 48.87849819394364 -87.13823590455254
     29  en  294661.1404832435 5415364.121540996
     30  ll2 48.87849819394531 -87.13823590455254
    3131EPSG:2024
    3232  ll  51.35687523407061 -90.17997605532246
    33   en  292264.10025309975 5691016.364589303
    34   ll2 51.35687523406965 -90.17997605532246
     33  en  292264.10025309975 5691016.364590984
     34  ll2 51.35687523407062 -90.17997605532246
    3535EPSG:2025
    3636  ll  43.959735984270985 -93.91753949513763
    37   en  231163.02116838144 4869054.712592315
    38   ll2 43.95973598426891 -93.91753949513767
     37  en  231163.02116838144 4869054.712592943
     38  ll2 43.95973598427093 -93.91753949513772
    3939EPSG:2026
    4040  ll  48.06438094907365 -94.45119612154907
    41   en  420226.7693776111 5325995.335761351
    42   ll2 48.06438094907121 -94.45119612154826
     41  en  420226.7693776111 5325995.33576248
     42  ll2 48.06438094907235 -94.45119612154821
    4343EPSG:2154
    4444  ll  50.02689509732728 -4.49984483215602
     
    4747EPSG:2176
    4848  ll  49.64490220491846 16.279713636209475
    49   en  5592415.690627584 5501713.997399415
    50   ll2 49.64490220491687 16.279713636209717
     49  en  5592415.690627584 5501713.997400717
     50  ll2 49.64490220491803 16.279713636209753
    5151EPSG:2177
    5252  ll  53.90237086111341 17.70353103400919
    53   en  6480514.884490048 5974630.160067949
    54   ll2 53.90237086111333 17.703531034009195
     53  en  6480514.884490048 5974630.160070014
     54  ll2 53.90237086111341 17.703531034009192
    5555EPSG:2178
    5656  ll  51.28025609515727 21.516295219859636
    57   en  7536021.072707665 5682953.495859991
    58   ll2 51.28025609515634 21.51629521985963
     57  en  7536021.072707665 5682953.495861567
     58  ll2 51.28025609515728 21.51629521985964
    5959EPSG:21781
    6060  ll  46.582471410091934 8.159223152110604
     
    6363EPSG:2179
    6464  ll  51.812974050704796 24.579389794413864
    65   en  8539953.715775384 5742250.607422158
    66   ll2 51.812974050704014 24.57938979441386
     65  en  8539953.715775384 5742250.607423828
     66  ll2 51.81297405070478 24.57938979441387
    6767EPSG:2180
    6868  ll  49.52724731520737 18.27654136015328
    69   en  447661.13055637287 184674.94547026977
    70   ll2 49.527247315205926 18.276541360153285
     69  en  447661.13055637287 184674.94547155313
     70  ll2 49.52724731520734 18.276541360153264
    7171EPSG:23700
    7272  ll  46.46561041539386 21.520339346245464
     
    7575EPSG:25828
    7676  ll  47.117782320935554 -16.503525409604464
    77   en  385946.0034092715 5219349.635451921
    78   ll2 47.11778232093319 -16.5035254096052
     77  en  385946.00340927154 5219349.635452863
     78  ll2 47.1177823209345 -16.503525409605253
    7979EPSG:25829
    8080  ll  65.82806470287636 -9.554928597345642
    81   en  474644.50820229325 7300857.887810782
    82   ll2 65.82806470287812 -9.55492859734568
     81  en  474644.50820229325 7300857.887815192
     82  ll2 65.82806470287636 -9.554928597345642
    8383EPSG:25830
    8484  ll  37.25171140290211 -2.8211874597155333
    85   en  515857.4448277882 4122811.106932232
    86   ll2 37.25171140290173 -2.821187459715534
     85  en  515857.4448277882 4122811.106932426
     86  ll2 37.25171140290212 -2.8211874597155333
    8787EPSG:25831
    8888  ll  15.703714685419541 1.9029805492944067
    89   en  382450.5936273647 1736467.0083671734
    90   ll2 15.703714685418815 1.9029805492946246
     89  en  382450.59362736467 1736467.0083671543
     90  ll2 15.70371468541952 1.90298054929462
    9191EPSG:25832
    9292  ll  43.42381791085779 9.690565246887022
    93   en  555898.5039359011 4808112.365172946
    94   ll2 43.42381791085591 9.69056524688702
     93  en  555898.5039359011 4808112.36517349
     94  ll2 43.42381791085778 9.690565246887042
    9595EPSG:25833
    9696  ll  75.7892704557877 11.207180641450057
    97   en  396131.7404880665 8415005.737873647
    98   ll2 75.7892704557614 11.207180641594613
     97  en  396131.7404880665 8415005.737878373
     98  ll2 75.78927045573678 11.207180641594293
    9999EPSG:25834
    100100  ll  46.44885204974395 22.405231854156536
    101   en  607926.6287454234 5144879.313368673
    102   ll2 46.448852049741696 22.405231854157073
     101  en  607926.6287454234 5144879.313369531
     102  ll2 46.44885204974325 22.405231854157122
    103103EPSG:25835
    104104  ll  42.57574419494572 31.562543802846626
    105   en  874467.6530367588 4723802.227199246
    106   ll2 42.57574419459534 31.562543803062233
     105  en  874467.6530367588 4723802.227199722
     106  ll2 42.575744194251115 31.56254380306236
    107107EPSG:25836
    108108  ll  28.15042601064217 29.551501695152517
    109   en  161292.70745459147 3118678.701691007
    110   ll2 28.150426010621363 29.551501695058164
     109  en  161292.70745459135 3118678.7016910748
     110  ll2 28.150426010596412 29.551501695058228
    111111EPSG:25837
    112112  ll  36.3487499992021 40.79948792586663
    113   en  661474.4463378746 4024134.2543947804
    114   ll2 36.34874999920129 40.799487925869784
     113  en  661474.4463378746 4024134.254394948
     114  ll2 36.348749999200265 40.79948792586979
    115115EPSG:25838
    116116  ll  31.188113573425966 46.337070725825676
    117   en  627399.0197288111 3451219.8221930494
    118   ll2 31.18811357342744 46.33707072582629
     117  en  627399.0197288111 3451219.8221931364
     118  ll2 31.18811357342576 46.33707072582627
    119119EPSG:27561
    120120  ll  48.687023294540744 9.13470536591202
     
    139139EPSG:2969
    140140  ll  18.09195682909748 -62.90557198327498
    141   en  509756.870848181 2000799.1724028364
     141  en  509756.870848181 2000799.1724028382
    142142  ll2 18.0919568043076 -62.90557196864032
    143143EPSG:2970
    144144  ll  16.041843969107557 -61.20853416213802
    145   en  692080.8032091985 1774695.5238623084
    146   ll2 16.0418439524898 -61.20853418759283
     145  en  692080.8032091986 1774695.523862292
     146  ll2 16.041843952489902 -61.20853418759284
    147147EPSG:2972
    148148  ll  8.207268629853019 -50.21680809669106
    149   en  586265.5532873704 907296.005720186
    150   ll2 8.207268629851077 -50.216808096691146
     149  en  586265.5532873704 907296.0057201401
     150  ll2 8.207268629853017 -50.216808096691146
    151151EPSG:2973
    152152  ll  14.407542336386097 -60.935843452421075
    153   en  722168.211389498 1593628.3260067657
    154   ll2 14.407542351752163 -60.93584343336168
     153  en  722168.2113894979 1593628.3260067375
     154  ll2 14.407542351752355 -60.9358434333617
    155155EPSG:2975
    156156  ll  -16.18983230787581 40.123852994258414
    157   en  -1326413.3757486297 8133460.392475484
    158   ll2 -16.189831743778907 40.12386116380699
     157  en  -1326413.3757486297 8133460.392475499
     158  ll2 -16.18983190766203 40.12386116380695
    159159EPSG:3003
    160160  ll  38.09725651416973 7.4345625019044315
    161   en  1362730.2218375676 4217833.144081871
    162   ll2 38.09725651416867 7.434562501902945
     161  en  1362730.2218375676 4217833.144082101
     162  ll2 38.09725651416882 7.434562501902931
    163163EPSG:3004
    164164  ll  46.42503928302209 18.74399103983138
    165   en  2807681.5235197735 5148186.206927572
    166   ll2 46.425039282897764 18.743991039891302
     165  en  2807681.5235197735 5148186.206928445
     166  ll2 46.42503928277661 18.74399103989143
    167167EPSG:3008
    168168  ll  61.864054488897295 13.084399903079879
    169   en  128126.42078859449 6861850.502124558
    170   ll2 61.86405448889923 13.084399903079852
     169  en  128126.42078859449 6861850.502128279
     170  ll2 61.86405448889729 13.084399903079879
    171171EPSG:3059
    172172  ll  49.23525189671949 -54.40128360306443
    173   en  -4263130.034442673 2917092.5518719126
    174   ll2 50178.76820064746 246510.82413604847
     173  en  -4263130.034442673 2917092.5518731494
     174  ll2 50156.3548390288 246510.82413196223
    175175EPSG:31370
    176176  ll  49.91513996934379 3.0892264075922404
     
    179179EPSG:31466
    180180  ll  7.0210401440287065 6.5142293675331056
    181   en  2556811.486749014 776341.9609297712
    182   ll2 7.021040144026878 6.5142293675330905
     181  en  2556811.486749014 776341.9609297286
     182  ll2 7.021040144028706 6.514229367533092
    183183EPSG:31467
    184184  ll  49.4988750014639 7.261117510799364
    185   en  3374117.1277635116 5486123.243966412
    186   ll2 49.498875001461215 7.261117510798085
     185  en  3374117.1277635116 5486123.243967674
     186  ll2 49.49887500146128 7.2611175107980355
    187187EPSG:31468
    188188  ll  48.209523046432196 13.141810876019548
    189   en  4584969.350196248 5341912.844584694
    190   ll2 48.20952304643043 13.14181087601969
     189  en  4584969.350196248 5341912.844585768
     190  ll2 48.20952304643198 13.141810876019727
    191191EPSG:31469
    192192  ll  75.71474879775388 16.230800026412393
    193   en  5533907.888998117 8406162.271952605
    194   ll2 75.7147487977527 16.230800026412293
     193  en  5533907.888998117 8406162.27195727
     194  ll2 75.71474879775381 16.23080002641239
    195195EPSG:32601
    196196  ll  35.30468974675124 -181.75048187801644
    197   en  67958.20646357589 3917197.812559492
    198   ll2 35.304689746452496 -181.75048187860767
     197  en  67958.20646357589 3917197.8125596363
     198  ll2 35.30468974617765 -181.75048187860764
    199199EPSG:32602
    200200  ll  -0.35895685791257925 -175.75420623162898
    201   en  -29625.972570086014 -39813.425707889146
    202   ll2 -0.3589568579093727 -175.75420623022703
     201  en  -29625.972570085898 -39813.425707886265
     202  ll2 -0.3589568579084667 -175.75420623022703
    203203EPSG:32603
    204204  ll  69.06942592353653 -164.25619547568132
    205   en  529653.423074742 7662283.255640146
    206   ll2 69.06942592353752 -164.2561954756813
     205  en  529653.423074742 7662283.255644933
     206  ll2 69.06942592353653 -164.25619547568132
    207207EPSG:32604
    208208  ll  68.49291330851102 -162.96491579603722
    209   en  337874.41252150084 7603043.066426898
    210   ll2 68.49291330842262 -162.96491579584512
     209  en  337874.4125215008 7603043.066431634
     210  ll2 68.49291330833023 -162.96491579584492
    211211EPSG:32605
    212212  ll  70.45567827510386 -154.8711613318192
    213   en  430146.7851750106 7817765.523685955
    214   ll2 70.45567827510365 -154.87116133181905
     213  en  430146.7851750106 7817765.523690824
     214  ll2 70.45567827510223 -154.871161331819
    215215EPSG:32606
    216216  ll  45.0472445968384 -147.48643385071935
    217   en  461693.09169689566 4988313.776961381
    218   ll2 45.04724459683641 -147.48643385071935
     217  en  461693.09169689566 4988313.776962079
     218  ll2 45.04724459683838 -147.48643385071935
    219219EPSG:32607
    220220  ll  17.160888392541953 -136.88735017825638
    221   en  937701.0944171889 1901994.1783050983
    222   ll2 17.1608883925055 -136.88735017834057
     221  en  937701.0944171889 1901994.178305092
     222  ll2 17.160888392484225 -136.88735017834057
    223223EPSG:32608
    224224  ll  17.082700048931713 -138.83952009347482
    225   en  91233.83062316518 1892731.362054299
    226   ll2 17.082700048910105 -138.8395200934112
     225  en  91233.83062316518 1892731.3620542919
     226  ll2 17.08270004889456 -138.8395200934112
    227227EPSG:32609
    228228  ll  32.88791124498886 -124.7743273825516
    229   en  895391.2108967202 3646786.763057612
    230   ll2 32.88791124486649 -124.7743273822095
     229  en  895391.21089672 3646786.7630577153
     230  ll2 32.88791124475305 -124.77432738220956
    231231EPSG:32610
    232232  ll  15.621043862710906 -127.89205445312605
    233   en  -24932.886804628302 1733063.1626414557
    234   ll2 15.621043862587436 -127.89205445274152
     233  en  -24932.886804628302 1733063.162641437
     234  ll2 15.621043862547943 -127.89205445274153
    235235EPSG:32611
    236236  ll  10.73641510533119 -112.16478744764923
    237   en  1029269.7699246185 1191002.7127373696
    238   ll2 10.73641510524071 -112.16478744856084
     237  en  1029269.7699246187 1191002.7127373253
     238  ll2 10.736415105215261 -112.16478744856082
    239239EPSG:32612
    240240  ll  61.77560053459669 -114.5125390548194
    241   en  314735.1980824949 6854188.166002769
    242   ll2 61.77560053452742 -114.51253905477127
     241  en  314735.1980824949 6854188.16600647
     242  ll2 61.77560053445347 -114.51253905477104
    243243EPSG:32613
    244244  ll  4.7583779488046805 -107.92602632992818
    245   en  175381.12258364592 526643.9142125123
    246   ll2 4.758377948802733 -107.92602632984342
     245  en  175381.1225836458 526643.9142124782
     246  ll2 4.758377948802402 -107.92602632984344
    247247EPSG:32614
    248248  ll  14.263757165950743 -100.80954124472483
    249   en  304782.4591083076 1577656.5830076581
    250   ll2 14.26375716594981 -100.80954124472157
     249  en  304782.4591083076 1577656.5830076297
     250  ll2 14.26375716595045 -100.80954124472159
    251251EPSG:32615
    252252  ll  84.67761930424092 -95.31735150114109
    253   en  476007.39052546234 9404225.272890447
    254   ll2 84.67761930423927 -95.31735150113857
     253  en  476007.39052546234 9404225.272893205
     254  ll2 84.67761930424076 -95.31735150113927
    255255EPSG:32616
    256256  ll  72.583548496096 -84.95707014904738
    257   en  568238.7416437431 8055185.317495109
    258   ll2 72.58354849609479 -84.95707014904791
     257  en  568238.7416437431 8055185.317500017
     258  ll2 72.58354849609388 -84.9570701490479
    259259EPSG:32617
    260260  ll  58.773416508274885 -79.23342848764487
    261   en  602152.1264258481 6516169.07728455
    262   ll2 58.77341650827502 -79.23342848764443
     261  en  602152.126425848 6516169.077287629
     262  ll2 58.77341650827223 -79.2334284876445
    263263EPSG:32618
    264264  ll  0.8542824171250176 -70.60589399441409
    265   en  989382.9848638991 94704.1521896124
    266   ll2 0.854282417120703 -70.6058939952968
     265  en  989382.9848638988 94704.15218960555
     266  ll2 0.8542824171192103 -70.6058939952968
    267267EPSG:32619
    268268  ll  9.928164458825613 -66.53356619660251
    269   en  770448.3262748269 1098474.206981794
    270   ll2 9.928164458823826 -66.533566196628
     269  en  770448.3262748267 1098474.2069817486
     270  ll2 9.928164458824138 -66.533566196628
    271271EPSG:32620
    272272  ll  -2.6787491025025547 -66.88079230367741
    273   en  68302.71810571582 -296768.5025927464
    274   ll2 -2.678749102496994 -66.88079230325388
     273  en  68302.71810571593 -296768.5025927257
     274  ll2 -2.6787491024945553 -66.88079230325388
    275275EPSG:32621
    276276  ll  69.83911306601517 -54.4569378254068
    277   en  597795.3401803295 7749969.356378063
    278   ll2 69.83911306601044 -54.4569378254102
     277  en  597795.3401803295 7749969.356382903
     278  ll2 69.83911306600419 -54.45693782541029
    279279EPSG:32622
    280280  ll  14.524484069634685 -53.96374810803576
    281   en  180556.3469154662 1607806.3026925516
    282   ll2 14.52448406963183 -53.96374810799876
     281  en  180556.3469154662 1607806.302692525
     282  ll2 14.524484069628397 -53.963748107998775
    283283EPSG:32623
    284284  ll  16.394157590092313 -42.12374249522621
    285   en  807234.0075202532 1814713.5629615434
    286   ll2 16.3941575900903 -42.123742495247065
     285  en  807234.0075202533 1814713.5629615306
     286  ll2 16.394157590086483 -42.12374249524706
    287287EPSG:32624
    288288  ll  5.131580338571972 -39.26307503457069
    289   en  470842.78426743025 567215.00374571
    290   ll2 5.131580338570435 -39.26307503457069
     289  en  470842.78426743025 567215.0037456739
     290  ll2 5.131580338571973 -39.26307503457069
    291291EPSG:32625
    292292  ll  -0.7883094164596285 -30.122300530621676
    293   en  820321.3553729916 -87242.6746455976
    294   ll2 -0.7883094164592921 -30.12230053070564
     293  en  820321.3553729916 -87242.67464559128
     294  ll2 -0.7883094164592764 -30.12230053070564
    295295EPSG:32626
    296296  ll  58.43458636013028 -29.168484112078048
    297   en  373392.93024697975 6479137.419357916
    298   ll2 58.43458636012712 -29.168484112078875
     297  en  373392.9302469797 6479137.4193609245
     298  ll2 58.434586360121145 -29.168484112078794
    299299EPSG:32627
    300300  ll  8.344532201175449 -23.182089463285656
    301   en  259685.6891659215 923051.0956246062
    302   ll2 8.344532201173756 -23.182089463270486
     301  en  259685.68916592153 923051.0956245605
     302  ll2 8.344532201174848 -23.182089463270497
    303303EPSG:32628
    304304  ll  22.510955722354655 -11.39208694243174
    305   en  871237.6024480207 2493863.447968263
    306   ll2 22.51095572233715 -11.392086942377526
     305  en  871237.6024480207 2493863.4479682995
     306  ll2 22.510955722318098 -11.392086942377562
    307307EPSG:32629
    308308  ll  21.147897974547682 -10.932715320979701
    309   en  299305.3797185818 2339737.5836034226
    310   ll2 21.147897974548883 -10.932715320979792
     309  en  299305.3797185818 2339737.5836034482
     310  ll2 21.147897974546964 -10.93271532097978
    311311EPSG:32630
    312312  ll  7.0485574964722595 -2.895336653090574
    313   en  511558.9813362481 779118.0296877392
    314   ll2 7.048557496470399 -2.8953366530905744
     313  en  511558.9813362481 779118.0296876958
     314  ll2 7.0485574964722595 -2.895336653090574
    315315EPSG:32631
    316316  ll  62.31144897764639 -1.7488227034434083
    317   en  253972.6113974089 6917912.226969319
    318   ll2 62.31144897723166 -1.7488227026127516
     317  en  253972.6113974089 6917912.226973126
     318  ll2 62.31144897680178 -1.748822702612415
    319319EPSG:32632
    320320  ll  11.834748738967427 11.598093592769366
    321   en  783086.673635305 1309597.582045318
    322   ll2 11.834748738965645 11.598093592741604
     321  en  783086.673635305 1309597.582045277
     322  ll2 11.834748738965084 11.59809359274162
    323323EPSG:32633
    324324  ll  42.05539689126687 15.319058068358773
    325   en  526400.7140049142 4655976.147280654
    326   ll2 42.05539689126517 15.319058068358764
     325  en  526400.7140049142 4655976.147281091
     326  ll2 42.05539689126688 15.319058068358773
    327327EPSG:32634
    328328  ll  75.90951295643045 25.503495199048984
    329   en  622276.0812525111 8429752.16628064
    330   ll2 75.90951295636204 25.503495198369787
     329  en  622276.0812525111 8429752.166285353
     330  ll2 75.90951295629242 25.503495198370185
    331331EPSG:32635
    332332  ll  47.49067536542698 25.527726208112252
    333   en  389099.4234549984 5260743.8958150195
    334   ll2 47.49067536542474 25.527726208111613
     333  en  389099.4234549984 5260743.895816009
     334  ll2 47.49067536542605 25.527726208111563
    335335EPSG:32636
    336336  ll  2.3826611804187845 35.69036984079036
    337   en  799224.052045565 263649.3963221862
    338   ll2 2.3826611804179456 35.69036984073283
     337  en  799224.0520455651 263649.3963221676
     338  ll2 2.382661180418093 35.69036984073283
    339339EPSG:32637
    340340  ll  52.14316359823634 35.33858849767755
    341   en  249486.75996839185 5783285.072364062
    342   ll2 52.14316359812051 35.33858849768192
     341  en  249486.75996839185 5783285.072365791
     342  ll2 52.143163598004776 35.33858849768187
    343343EPSG:32638
    344344  ll  53.91509364067411 42.2117397712837
    345   en  316881.19957743154 5977677.047491307
    346   ll2 53.915093640651726 42.21173977127907
     345  en  316881.19957743154 5977677.047493373
     346  ll2 53.91509364062914 42.21173977127907
    347347EPSG:32639
    348348  ll  78.6419869416514 46.228999725737076
    349   en  395220.30455138447 8734297.00471091
    350   ll2 78.64198694159873 46.22899972691323
     349  en  395220.30455138447 8734297.004715223
     350  ll2 78.64198694154439 46.228999726912456
    351351EPSG:32640
    352352  ll  53.864121366142705 57.44751774032813
    353   en  529429.9386809022 5968496.735426065
    354   ll2 53.86412136614262 57.44751774032813
     353  en  529429.9386809022 5968496.735428121
     354  ll2 53.8641213661427 57.44751774032813
    355355EPSG:32641
    356356  ll  49.571868382578565 60.41766515903435
    357   en  313303.34799034183 5494234.471211336
    358   ll2 49.57186838256323 60.41766515902558
     357  en  313303.34799034183 5494234.471212627
     358  ll2 49.57186838255045 60.41766515902551
    359359EPSG:32642
    360360  ll  -1.9071382046033127 69.6619425586165
    361   en  573618.7511049965 -210811.0083199154
    362   ll2 -1.9071382046026717 69.66194255861646
     361  en  573618.7511049965 -210811.00831990028
     362  ll2 -1.9071382046033127 69.66194255861646
    363363EPSG:32643
    364364  ll  1.4895490042363466 73.50410601478126
    365   en  333581.31480363844 164696.77435250996
    366   ll2 1.4895490042358657 73.50410601478401
     365  en  333581.31480363844 164696.77435249812
     366  ll2 1.4895490042363353 73.50410601478401
    367367EPSG:32644
    368368  ll  62.44367553939567 85.9750751673437
    369   en  756598.954905078 6933493.141721524
    370   ll2 62.44367553885303 85.97507516606653
     369  en  756598.954905078 6933493.141725358
     370  ll2 62.44367553828925 85.97507516606618
    371371EPSG:32645
    372372  ll  77.10426871059683 89.0221872636809
    373   en  550370.2039676631 8559275.344482148
    374   ll2 77.10426871059488 89.02218726368017
     373  en  550370.2039676631 8559275.344486712
     374  ll2 77.10426871059592 89.0221872636804
    375375EPSG:32646
    376376  ll  50.87569190579864 89.74835752271836
    377   en  271249.3586776806 5641039.535640001
    378   ll2 50.87569190574126 89.74835752270417
     377  en  271249.3586776806 5641039.535641504
     378  ll2 50.87569190568538 89.7483575227041
    379379EPSG:32647
    380380  ll  70.62231324887725 99.90770843411856
    381   en  533612.0813866678 7835525.490742478
    382   ll2 70.62231324887772 99.90770843411859
     381  en  533612.0813866678 7835525.490747357
     382  ll2 70.6223132488772 99.90770843411856
    383383EPSG:32648
    384384  ll  39.26637557561634 107.38423392284906
    385   en  705690.5819331672 4349046.83007862
    386   ll2 39.26637557560961 107.38423392286235
     385  en  705690.5819331672 4349046.830078893
     386  ll2 39.26637557560433 107.38423392286239
    387387EPSG:32649
    388388  ll  11.255609425170523 111.88005555487531
    389   en  596060.37945682 1244386.5306496648
    390   ll2 11.255609425168716 111.88005555487518
     389  en  596060.37945682 1244386.530649622
     390  ll2 11.255609425170519 111.88005555487518
    391391EPSG:32650
    392392  ll  9.877161924846341 119.53983649063838
    393   en  778545.0254093792 1092890.6707807586
    394   ll2 9.877161924844472 119.53983649060855
     393  en  778545.0254093793 1092890.670780713
     394  ll2 9.877161924844575 119.53983649060856
    395395EPSG:32651
    396396  ll  29.894404052484198 123.73791699307937
    397   en  571246.6122429472 3307313.233021797
    398   ll2 29.894404052485946 123.73791699307941
     397  en  571246.6122429472 3307313.233021876
     398  ll2 29.894404052484198 123.7379169930794
    399399EPSG:32652
    400400  ll  51.483168367165725 131.7547299698076
    401   en  691267.2942592341 5707156.079357853
    402   ll2 51.48316836714398 131.75472996981594
     401  en  691267.2942592341 5707156.0793594625
     402  ll2 51.48316836712365 131.75472996981597
    403403EPSG:32653
    404404  ll  3.9439937741275237 139.56906177178473
    405   en  1007763.0974047978 437331.50269813027
    406   ll2 3.9439937741018105 139.5690617707412
     405  en  1007763.0974047978 437331.50269810087
     406  ll2 3.9439937740936983 139.5690617707412
    407407EPSG:32654
    408408  ll  0.16694081399375094 139.49272157099904
    409   en  332258.8768147535 18458.406171513318
    410   ll2 0.16694081399369648 139.49272157100194
     409  en  332258.8768147535 18458.406171511975
     410  ll2 0.16694081399374955 139.49272157100194
    411411EPSG:32655
    412412  ll  15.325514479625792 147.8741788025552
    413   en  593840.2220569488 1694519.0743215398
    414   ll2 15.325514479624909 147.87417880255512
     413  en  593840.2220569488 1694519.0743215194
     414  ll2 15.325514479625788 147.87417880255512
    415415EPSG:32656
    416416  ll  5.776293589970747 152.597733111241
    417   en  455463.1790096139 638491.4093867843
    418   ll2 5.776293589969082 152.597733111241
     417  en  455463.1790096139 638491.4093867452
     418  ll2 5.776293589970748 152.597733111241
    419419EPSG:32657
    420420  ll  46.64079768923685 162.60478038581513
    421   en  775876.5142921583 5171562.354304005
    422   ll2 46.6407976891373 162.60478038586604
     421  en  775876.5142921584 5171562.354304886
     422  ll2 46.6407976890409 162.60478038586615
    423423EPSG:32658
    424424  ll  -0.9538168752974308 164.16373403116563
    425   en  406954.01883056597 -105436.825076515
    426   ll2 -0.9538168752971059 164.16373403116577
     425  en  406954.018830566 -105436.8250765074
     426  ll2 -0.9538168752974306 164.16373403116577
    427427EPSG:32659
    428428  ll  40.50129189541295 171.1151678182983
    429   en  509758.4272200559 4483404.501649895
    430   ll2 40.501291895411576 171.1151678182983
     429  en  509758.4272200559 4483404.501650231
     430  ll2 40.501291895412955 171.1151678182983
    431431EPSG:32660
    432432  ll  84.38466705329412 178.8187390897748
    433   en  519865.4438068825 9371350.999824923
    434   ll2 84.38466705329245 178.81873908977406
     433  en  519865.4438068824 9371350.999827776
     434  ll2 84.38466705329408 178.8187390897746
    435435EPSG:32701
    436436  ll  -29.00158099669585 -176.06257492764095
    437   en  591305.9239689747 6791477.062909814
    438   ll2 -29.001580996697747 -176.06257492764087
     437  en  591305.9239689746 6791477.062909741
     438  ll2 -29.001580996695832 -176.06257492764087
    439439EPSG:32702
    440440  ll  -83.61115414945169 -167.84722307361665
    441   en  539148.6502865502 714244.7350888532
    442   ll2 -83.61115414944909 -167.84722307364663
     441  en  539148.6502865502 714244.735085763
     442  ll2 -83.61115414944996 -167.84722307364575
    443443EPSG:32703
    444444  ll  -59.67977504854512 -165.75611289241155
    445   en  457419.4744487591 3384008.1251201406
    446   ll2 -59.67977504854674 -165.75611289241158
     445  en  457419.4744487591 3384008.125116867
     446  ll2 -59.67977504854512 -165.75611289241155
    447447EPSG:32704
    448448  ll  -44.74896637041389 -154.13571225132324
    449   en  885055.000033729 5033414.625188409
    450   ll2 -44.74896636985849 -154.13571225126154
     449  en  885055.000033729 5033414.6251877425
     450  ll2 -44.74896636930496 -154.1357122512614
    451451EPSG:32705
    452452  ll  -4.570782032538887 -155.6804518141318
    453   en  202567.24068296672 9494225.759775288
    454   ll2 -4.570782032537401 -155.68045181407837
     453  en  202567.24068296677 9494225.75977532
     454  ll2 -4.570782032537629 -155.6804518140784
    455455EPSG:32706
    456456  ll  -55.61672629832347 -144.3508810047789
    457   en  666829.6102985529 3833392.573244692
    458   ll2 -55.61672629830789 -144.35088100477645
     457  en  666829.610298553 3833392.5732422806
     458  ll2 -55.616726298291056 -144.35088100477648
    459459EPSG:32707
    460460  ll  -0.22277876804946573 -136.6505910806773
    461   en  984445.3083006871 9975304.651945615
    462   ll2 -0.22277876804841829 -136.65059108151155
     461  en  984445.3083006871 9975304.651945617
     462  ll2 -0.22277876804804692 -136.65059108151155
    463463EPSG:32708
    464464  ll  -2.768962687806777 -135.91033889187207
    465   en  398815.28724407975 9693905.200367318
    466   ll2 -2.768962687805876 -135.91033889187185
     465  en  398815.2872440797 9693905.20036734
     466  ll2 -2.7689626878067735 -135.91033889187185
    467467EPSG:32709
    468468  ll  -32.79190171964473 -131.727811570545
    469   en  244542.49842715668 6368487.503688801
    470   ll2 -32.79190171963808 -131.7278115705747
     469  en  244542.4984271567 6368487.503688699
     470  ll2 -32.79190171962786 -131.72781157057466
    471471EPSG:32710
    472472  ll  1.5712020890239131 -124.21146729170505
    473   en  365234.2722858875 1.0173704546361338E7
    474   ll2 1.5712020890233884 -124.21146729170411
     473  en  365234.2722858875 1.0173704546361327E7
     474  ll2 1.571202089023917 -124.21146729170411
    475475EPSG:32711
    476476  ll  -41.091261924884776 -120.17689123197003
    477   en  233168.6164003252 5446247.135223156
    478   ll2 -41.09126192484649 -120.17689123202507
     477  en  233168.6164003252 5446247.135222786
     478  ll2 -41.09126192481057 -120.17689123202514
    479479EPSG:32712
    480480  ll  -79.76744100986106 -115.94410343190378
    481   en  402063.9138540749 1140210.1029349882
    482   ll2 -79.76744100981378 -115.94410343026465
     481  en  402063.9138540749 1140210.1029308978
     482  ll2 -79.76744100976357 -115.94410343026561
    483483EPSG:32713
    484484  ll  -10.850887170003276 -108.88425627320359
    485   en  75152.58517323522 8797793.856423587
    486   ll2 -10.85088716998492 -108.88425627294212
     485  en  75152.58517323533 8797793.85642363
     486  ll2 -10.850887169975316 -108.88425627294215
    487487EPSG:32714
    488488  ll  -56.89459290929925 -97.364159691813
    489   en  599649.1533353492 3693155.667478282
    490   ll2 -56.89459290929932 -97.36415969181257
     489  en  599649.1533353492 3693155.6674756007
     490  ll2 -56.89459290929749 -97.36415969181262
    491491EPSG:32715
    492492  ll  -15.188620247220271 -96.23707027363224
    493   en  152136.94772601099 8318235.034911122
    494   ll2 -15.188620247214823 -96.23707027358184
     493  en  152136.94772601104 8318235.034911144
     494  ll2 -15.188620247208913 -96.23707027358185
    495495EPSG:32716
    496496  ll  -4.559807376181936 -82.52818257741919
    497   en  996538.1905094216 9494450.775022857
    498   ll2 -4.559807376156723 -82.52818257832048
     497  en  996538.1905094216 9494450.775022889
     498  ll2 -4.559807376148307 -82.52818257832048
    499499EPSG:32717
    500500  ll  -66.29192836668584 -83.46326129024452
    501   en  389503.5113214161 2645374.949496709
    502   ll2 -66.2919283666812 -83.46326129024257
     501  en  389503.5113214161 2645374.949492232
     502  ll2 -66.2919283666731 -83.46326129024241
    503503EPSG:32718
    504504  ll  -2.5647882790401297 -76.48884831326323
    505   en  334474.62998039776 9716415.67820614
    506   ll2 -2.5647882790393166 -76.48884831326058
     505  en  334474.6299803979 9716415.67820616
     506  ll2 -2.5647882790401026 -76.48884831326058
    507507EPSG:32719
    508508  ll  -3.3106740144730935 -68.43248658691562
    509   en  563046.3761068006 9634048.929625366
    510   ll2 -3.3106740144720264 -68.43248658691563
     509  en  563046.3761068006 9634048.929625392
     510  ll2 -3.3106740144730917 -68.43248658691563
    511511EPSG:32720
    512512  ll  -69.88660504305992 -58.451395274860495
    513   en  674428.974179743 2240266.5274605397
    514   ll2 -69.88660504288639 -58.451395275542424
     513  en  674428.974179743 2240266.527455697
     514  ll2 -69.88660504270575 -58.451395275542595
    515515EPSG:32721
    516516  ll  -1.460807694037996 -56.918034017934815
    517   en  509117.82030811213 9838536.34068649
    518   ll2 -1.460807694037499 -56.918034017934815
     517  en  509117.82030811213 9838536.340686502
     518  ll2 -1.460807694037999 -56.918034017934815
    519519EPSG:32722
    520520  ll  -67.51187256863244 -49.8909954222962
    521   en  547334.5777219022 2511132.649487271
    522   ll2 -67.5118725686338 -49.89099542229613
     521  en  547334.5777219022 2511132.6494826376
     522  ll2 -67.51187256863231 -49.89099542229619
    523523EPSG:32723
    524524  ll  -37.33901138489274 -46.319661481385886
    525   en  383102.3012525303 5866702.311873849
    526   ll2 -37.33901138489222 -46.3196614813865
     525  en  383102.30125253036 5866702.31187365
     526  ll2 -37.339011384892444 -46.319661481386504
    527527EPSG:32724
    528528  ll  -64.98185873306474 -42.631062127293355
    529   en  328728.8038014539 2788647.117090909
    530   ll2 -64.98185873299518 -42.631062127215536
     529  en  328728.803801454 2788647.1170866266
     530  ll2 -64.98185873292093 -42.631062127215266
    531531EPSG:32725
    532532  ll  -65.44826790805924 -36.847373771828195
    533   en  321704.4754237144 2736137.6100584166
    534   ll2 -65.44826790796357 -36.847373771693476
     533  en  321704.4754237144 2736137.6100540617
     534  ll2 -65.44826790786279 -36.847373771693206
    535535EPSG:32726
    536536  ll  -45.64851344048113 -31.882495362328466
    537   en  119560.58075143833 4933398.9237327585
    538   ll2 -45.64851343989748 -31.88249536231209
     537  en  119560.58075143828 4933398.923731995
     538  ll2 -45.648513439313405 -31.88249536231225
    539539EPSG:32727
    540540  ll  -50.934366256586614 -25.166137353819305
    541   en  207304.56798461726 4349205.018263729
    542   ll2 -50.93436625633735 -25.166137353769805
     541  en  207304.56798461737 4349205.018262214
     542  ll2 -50.93436625608718 -25.166137353769884
    543543EPSG:32728
    544544  ll  -75.6414574413936 -19.243865220370584
    545   en  382615.2732716046 1600607.7105868515
    546   ll2 -75.64145744134245 -19.24386521997399
     545  en  382615.2732716046 1600607.7105821092
     546  ll2 -75.64145744129156 -19.243865219974342
    547547EPSG:32729
    548548  ll  -83.5333650193571 -5.501531193633692
    549   en  543962.835055189 722665.361454945
    550   ll2 -83.53336501935372 -5.501531193708958
     549  en  543962.835055189 722665.3614518307
     550  ll2 -83.53336501935377 -5.501531193707987
    551551EPSG:32730
    552552  ll  -81.54589940598518 -0.6625327966681755
    553   en  538355.0358692394 945086.5607411675
    554   ll2 -81.5458994059829 -0.6625327966706558
     553  en  538355.0358692394 945086.5607374981
     554  ll2 -81.54589940598454 -0.6625327966701109
    555555EPSG:32731
    556556  ll  -77.7299649478657 6.793662551026102
    557   en  589941.1445311456 1368855.4457779005
    558   ll2 -77.72996494784715 6.793662550878116
     557  en  589941.1445311456 1368855.4457734264
     558  ll2 -77.72996494783142 6.793662550878642
    559559EPSG:32732
    560560  ll  -1.791491309390267 5.643292386980017
    561   en  126449.06323080737 9801643.353370322
    562   ll2 -1.7914913093887788 5.643292387171931
     561  en  126449.06323080743 9801643.353370337
     562  ll2 -1.7914913093881504 5.643292387171929
    563563EPSG:32733
    564564  ll  -4.126836934079179 14.21193297521501
    565   en  412530.97644885455 9543809.318915792
    566   ll2 -4.126836934077884 14.211932975215113
     565  en  412530.9764488546 9543809.318915822
     566  ll2 -4.126836934079182 14.211932975215113
    567567EPSG:32734
    568568  ll  3.2478852471029853 16.30155670183659
    569   en  -22571.106634815456 1.0360208764095124E7
    570   ll2 3.247885247076826 16.301556703090707
     569  en  -22571.10663481534 1.03602087640951E7
     570  ll2 3.247885247069191 16.301556703090707
    571571EPSG:32735
    572572  ll  -67.02488461225471 23.602574863927025
    573   en  352075.73642084474 2561806.4975045808
    574   ll2 -67.02488461221535 23.602574863972343
     573  en  352075.73642084474 2561806.4975000024
     574  ll2 -67.0248846121725 23.60257486397256
    575575EPSG:32736
    576576  ll  -42.55662303150512 29.942428252202173
    577   en  248987.61723446447 5283887.580592804
    578   ll2 -42.55662303147199 29.942428252161324
     577  en  248987.61723446447 5283887.58059233
     578  ll2 -42.55662303144185 29.94242825216124
    579579EPSG:32737
    580580  ll  -63.21444761968792 35.222287816138596
    581   en  310135.9849165189 2984926.8570488933
    582   ll2 -63.214447619588334 35.22228781624288
     581  en  310135.9849165189 2984926.8570449185
     582  ll2 -63.21444761948333 35.22228781624316
    583583EPSG:32738
    584584  ll  -33.61049536194267 49.3934280355533
    585   en  907721.7528865209 6272366.919585204
    586   ll2 -33.61049536177813 49.39342803597181
     585  en  907721.7528865209 6272366.919585092
     586  ll2 -33.61049536162698 49.393428035971766
    587587EPSG:32739
    588588  ll  -36.97742607037574 49.32483640492937
    589   en  350900.55360484595 5906320.568081439
    590   ll2 -36.97742607037497 49.324836404927225
     589  en  350900.55360484595 5906320.568081254
     590  ll2 -36.977426070374484 49.32483640492722
    591591EPSG:32740
    592592  ll  -78.828450880352 53.91362023885953
    593   en  433274.5310192385 1247408.597646758
    594   ll2 -78.82845088034634 53.913620238883254
     593  en  433274.5310192385 1247408.5976424795
     594  ll2 -78.82845088034429 53.91362023888275
    595595EPSG:32741
    596596  ll  -26.30036312196733 65.289773385337
    597   en  728606.5155660608 7089027.454681892
    598   ll2 -26.300363121968427 65.28977338534429
     597  en  728606.5155660608 7089027.454681832
     598  ll2 -26.300363121964097 65.28977338534425
    599599EPSG:32742
    600600  ll  -46.57798418816586 66.46686755703854
    601   en  305909.44786115893 4838613.998469358
    602   ll2 -46.577984188152286 66.46686755702721
     601  en  305909.447861159 4838613.998468486
     602  ll2 -46.577984188142224 66.46686755702713
    603603EPSG:32743
    604604  ll  -25.298456802256545 78.290225577417
    605   en  831325.5755857098 7197935.587045648
    606   ll2 -25.298456802245934 78.29022557747085
     605  en  831325.5755857098 7197935.587045593
     606  ll2 -25.29845680223009 78.29022557747079
    607607EPSG:32744
    608608  ll  -23.333853962130412 81.03414728671824
    609   en  503490.800754981 7419521.505624639
    610   ll2 -23.33385396213198 81.03414728671824
     609  en  503490.800754981 7419521.505624598
     610  ll2 -23.333853962130405 81.03414728671824
    611611EPSG:32745
    612612  ll  -27.850501765768136 88.49974130692067
    613   en  647670.9268986753 6918455.120880485
    614   ll2 -27.85050176577014 88.49974130692154
     613  en  647670.9268986753 6918455.1208804175
     614  ll2 -27.850501765767852 88.4997413069215
    615615EPSG:32746
    616616  ll  -21.043491771413862 94.96493214411353
    617   en  704183.7578679286 7671781.457049133
    618   ll2 -21.04349177141502 94.96493214411359
     617  en  704183.7578679285 7671781.457049107
     618  ll2 -21.043491771413077 94.96493214411358
    619619EPSG:32747
    620620  ll  -17.444781767557416 97.838202011294
    621   en  376622.8914274465 8070864.873775644
    622   ll2 -17.444781767557274 97.8382020112942
     621  en  376622.8914274465 8070864.873775648
     622  ll2 -17.44478176755739 97.8382020112942
    623623EPSG:32748
    624624  ll  -58.2033639588618 101.36763036809408
    625   en  286575.74435410445 3542895.423578527
    626   ll2 -58.203363958762644 101.36763036814246
     625  en  286575.74435410445 3542895.423575569
     626  ll2 -58.203363958659644 101.3676303681426
    627627EPSG:32749
    628628  ll  -38.23589206710369 109.25679480724837
    629   en  347437.22738472256 5766575.122088731
    630   ll2 -38.23589206710225 109.25679480724578
     629  en  347437.2273847225 5766575.122088502
     630  ll2 -38.23589206710197 109.25679480724575
    631631EPSG:32750
    632632  ll  -29.646256411547412 116.5390917394596
    633   en  455389.40541231557 6720322.495279071
    634   ll2 -29.64625641154921 116.53909173945958
     633  en  455389.40541231557 6720322.4952789955
     634  ll2 -29.64625641154741 116.5390917394596
    635635EPSG:32751
    636636  ll  -32.31249913837224 123.5620478825476
    637   en  552907.9443416377 6424786.563103266
    638   ll2 -32.31249913837346 123.56204788254762
     637  en  552907.9443416377 6424786.563103167
     638  ll2 -32.312499138372246 123.56204788254762
    639639EPSG:32752
    640640  ll  -40.03951775988635 127.43317318342925
    641   en  366330.3564929392 5566680.742924484
    642   ll2 -40.03951775988467 127.43317318342785
     641  en  366330.3564929392 5566680.742924173
     642  ll2 -40.03951775988534 127.43317318342783
    643643EPSG:32753
    644644  ll  -28.176037015492348 138.7789296805875
    645   en  871098.4449456041 6877512.944383415
    646   ll2 -28.176037015452554 138.77892968074894
     645  en  871098.4449456041 6877512.944383347
     646  ll2 -28.17603701541255 138.7789296807489
    647647EPSG:32754
    648648  ll  -76.09420937279235 144.16836879822267
    649   en  584959.5966797009 1552021.5295583569
    650   ll2 -76.09420937278291 144.16836879819374
     649  en  584959.5966797009 1552021.5295536648
     650  ll2 -76.09420937277592 144.16836879819402
    651651EPSG:32755
    652652  ll  -5.430354355649115 147.0530080779711
    653   en  505872.17624536785 9399764.410398081
    654   ll2 -5.430354355647516 147.0530080779711
     653  en  505872.17624536785 9399764.410398118
     654  ll2 -5.430354355649118 147.0530080779711
    655655EPSG:32756
    656656  ll  -52.48522451023355 152.57450200005235
    657   en  471106.27600235335 4184906.4029197395
    658   ll2 -52.48522451023299 152.57450200005235
     657  en  471106.2760023533 4184906.4029179476
     658  ll2 -52.48522451023355 152.57450200005235
    659659EPSG:32757
    660660  ll  -20.68227265660569 154.09167529202733
    661   en  -11660.993969266012 7705261.8022987265
    662   ll2 -20.682272656454828 154.09167529182264
     661  en  -11660.993969265954 7705261.802298705
     662  ll2 -20.682272656387454 154.09167529182267
    663663EPSG:32758
    664664  ll  -6.482322318456696 161.77847911397538
    665   en  143617.7405419257 9282345.981167397
    666   ll2 -6.48232231845288 161.77847911410754
     665  en  143617.7405419257 9282345.981167438
     666  ll2 -6.482322318451158 161.77847911410754
    667667EPSG:32759
    668668  ll  -9.653111284693267 166.1444317382442
    669   en  -33309.996839536005 8929144.290482178
    670   ll2 -9.653111284606696 166.1444317392922
     669  en  -33309.99683953577 8929144.290482225
     670  ll2 -9.653111284583055 166.14443173929217
    671671EPSG:32760
    672672  ll  -36.29211488935783 181.82910716731914
    673   en  933779.944968744 5972815.905636307
    674   ll2 -36.29211488900613 181.82910716792168
     673  en  933779.944968744 5972815.905636139
     674  ll2 -36.29211488867873 181.82910716792168
    675675EPSG:3301
    676676  ll  59.493759099912154 27.525338967200614
  • trunk/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java

    r9073 r9112  
    22package org.openstreetmap.josm.data.projection.proj;
    33
    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;
    94import static org.openstreetmap.josm.tools.I18n.tr;
    105
     
    127
    138/**
    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>
    1517 *
    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 &plusmn;10 degrees from
     21 * the central meridian, a few mm &plusmn;15 degrees from the
     22 * central meridian and a few cm &plusmn;20 degrees from the central meridian.
     23 * The spherical equations are not approximations and should always give the
     24 * correct values.
     25 * <p>
    1826 *
     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
    1964 */
    20 public class TransverseMercator implements Proj {
     65public class TransverseMercator extends AbstractProj {
    2166
    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;
    23106
    24107    @Override
     
    34117    @Override
    35118    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));
    38123    }
    39124
    40     /**
    41      * Converts a latitude/longitude pair to x and y coordinates in the
    42      * Transverse Mercator projection.  Note that Transverse Mercator is not
    43      * 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 radians
    49      * @param lambda Longitude of the point, in radians
    50      * @return A 2-element array containing the x and y coordinates
    51      *         of the computed point
    52      */
    53125    @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);
    55129
    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;
    58136
    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))))));
    61144
    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 )))));
    64148
    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 };
    102150    }
    103151
    104     /**
    105      * Converts x and y coordinates in the Transverse Mercator projection to
    106      * a latitude/longitude pair.  Note that Transverse Mercator is not
    107      * 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 as
    114      *   N, nu2, t, and t2 in MapLatLonToXY, but they are computed with respect
    115      *   to the footpoint latitude phif.
    116      *
    117      *   x1frac, x2frac, x2poly, x3poly, etc. are to enhance readability and
    118      *   to optimize computations.
    119      *
    120      * @param x The easting of the point, in meters, divided by the semi major axis of the ellipsoid
    121      * @param y The northing of the point, in meters, divided by the semi major axis of the ellipsoid
    122      * @return A 2-element containing the latitude and longitude
    123      *               in radians
    124      */
    125152    @Override
    126153    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);
    129155
    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;
    133169
    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))))));
    136175
    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 };
    285181    }
    286182}
Note: See TracChangeset for help on using the changeset viewer.