Project

General

Profile

1
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
2
<html>
3
<head>
4
<title>
5
<a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008 Overview
6
</title>
7
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
8
<script>
9
function asd() {
10
	
11
		parent.document.title="MGRS.js Overview";
12
	
13
}
14
</script>
15
</head>
16
<body bgcolor="white" onload="asd();">
17

    
18
<!-- ========== START OF NAVBAR ========== -->
19
<a name="navbar_top"><!-- --></a>
20
<table border="0" width="100%" cellpadding="1" cellspacing="0">
21
<tr>
22
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
23
<a name="navbar_top_firstrow"><!-- --></a>
24
<table border="0" cellpadding="0" cellspacing="3">
25
  <tr align="center" valign="top">
26
  
27
  
28
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
29
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
30
  
31

    
32
  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
33
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
34
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
35
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
36
  </tr>
37
</table>
38
</td>
39
<td bgcolor="#EEEEFF" align="right" valign="top">
40
<em>
41
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
42
</td>
43
</tr>
44

    
45
<tr>
46
<td bgcolor="white" class="NavBarCell2"><font size="-2">
47
&nbsp;PREV&nbsp;
48
&nbsp;NEXT</font></td>
49
<td bgcolor="white" class="NavBarCell2"><font size="-2">
50
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
51
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
52
&nbsp;&nbsp;
53
<script>
54
  <!--
55
  if(window==top) {
56
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
57
  }
58
  //-->
59
</script>
60
<noscript>
61
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
62
</noscript>
63
</font></td>
64
</tr>
65
</table>
66
<!-- =========== END OF NAVBAR =========== -->
67

    
68
<hr>
69
<center>
70
	
71
	   <h2>MGRS.js</h2>
72
	
73
</center>
74

    
75
	
76

    
77

    
78
<h4>Summary</h4>
79
<p>
80
	
81
		No overview generated for 'MGRS.js'<BR/><BR/>
82
	
83
</p>
84

    
85
<hr>
86

    
87

    
88

    
89
<!-- ========== METHOD SUMMARY =========== -->
90

    
91
	<a name="method_summary"><!-- --></a>
92
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
93
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
94
			<td colspan=2>
95
				<font size="+2">
96
					<b>Method Summary</b>
97
				</font>
98
			</td>
99
		</tr>
100
	
101
		
102
		   <tr bgcolor="white" class="TableRowColor">
103
		      <td align="right" valign="top" width="1%">
104
			 <font size="-1">
105
			    <code>static&nbsp;Object</code>
106
			 </font>
107
		      </td>
108
		      <td>
109
			 <code>
110
			    <b>
111
			       <a href="GLOBALS.html#AsciiToNum">AsciiToNum</a></b>( ascii )
112
			 </code>
113
			 <br>
114
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
115
			 
116
		      </td>
117
		   </tr>
118
		
119
		   <tr bgcolor="white" class="TableRowColor">
120
		      <td align="right" valign="top" width="1%">
121
			 <font size="-1">
122
			    <code>static&nbsp;Object</code>
123
			 </font>
124
		      </td>
125
		      <td>
126
			 <code>
127
			    <b>
128
			       <a href="GLOBALS.html#degToRad">degToRad</a></b>(deg)
129
			 </code>
130
			 <br>
131
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
132
			 
133
		      </td>
134
		   </tr>
135
		
136
		   <tr bgcolor="white" class="TableRowColor">
137
		      <td align="right" valign="top" width="1%">
138
			 <font size="-1">
139
			    <code>static&nbsp;Object</code>
140
			 </font>
141
		      </td>
142
		      <td>
143
			 <code>
144
			    <b>
145
			       <a href="GLOBALS.html#formatMGRS">formatMGRS</a></b>()
146
			 </code>
147
			 <br>
148
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
149
			 
150
		      </td>
151
		   </tr>
152
		
153
		   <tr bgcolor="white" class="TableRowColor">
154
		      <td align="right" valign="top" width="1%">
155
			 <font size="-1">
156
			    <code>static&nbsp;Object</code>
157
			 </font>
158
		      </td>
159
		      <td>
160
			 <code>
161
			    <b>
162
			       <a href="GLOBALS.html#get100kID">get100kID</a></b>( easting, northing, zone_number)
163
			 </code>
164
			 <br>
165
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
166
			 Get the two letter 100k designator for a given UTM easting,
167
 northing and zone number value.
168
		      </td>
169
		   </tr>
170
		
171
		   <tr bgcolor="white" class="TableRowColor">
172
		      <td align="right" valign="top" width="1%">
173
			 <font size="-1">
174
			    <code>static&nbsp;Object</code>
175
			 </font>
176
		      </td>
177
		      <td>
178
			 <code>
179
			    <b>
180
			       <a href="GLOBALS.html#get100kSetForZone">get100kSetForZone</a></b>(i)
181
			 </code>
182
			 <br>
183
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
184
			 Given a UTM zone number, figure out the MGRS 100K set it is in.
185
		      </td>
186
		   </tr>
187
		
188
		   <tr bgcolor="white" class="TableRowColor">
189
		      <td align="right" valign="top" width="1%">
190
			 <font size="-1">
191
			    <code>static&nbsp;Object</code>
192
			 </font>
193
		      </td>
194
		      <td>
195
			 <code>
196
			    <b>
197
			       <a href="GLOBALS.html#getLetter100kID">getLetter100kID</a></b>( column, row, parm)
198
			 </code>
199
			 <br>
200
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
201
			 Get the two-letter MGRS 100k designator given information
202
 translated from the UTM northing, easting and zone number.
203
		      </td>
204
		   </tr>
205
		
206
		   <tr bgcolor="white" class="TableRowColor">
207
		      <td align="right" valign="top" width="1%">
208
			 <font size="-1">
209
			    <code>static&nbsp;Object</code>
210
			 </font>
211
		      </td>
212
		      <td>
213
			 <code>
214
			    <b>
215
			       <a href="GLOBALS.html#getLetterDesignator">getLetterDesignator</a></b>(lat)
216
			 </code>
217
			 <br>
218
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
219
			 
220
		      </td>
221
		   </tr>
222
		
223
		   <tr bgcolor="white" class="TableRowColor">
224
		      <td align="right" valign="top" width="1%">
225
			 <font size="-1">
226
			    <code>static&nbsp;Object</code>
227
			 </font>
228
		      </td>
229
		      <td>
230
			 <code>
231
			    <b>
232
			       <a href="GLOBALS.html#LLtoUTM">LLtoUTM</a></b>()
233
			 </code>
234
			 <br>
235
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
236
			 Converts a set of Longitude and Latitude co-ordinates to UTM
237
 given an ellipsoid
238
		      </td>
239
		   </tr>
240
		
241
		   <tr bgcolor="white" class="TableRowColor">
242
		      <td align="right" valign="top" width="1%">
243
			 <font size="-1">
244
			    <code>static&nbsp;Object</code>
245
			 </font>
246
		      </td>
247
		      <td>
248
			 <code>
249
			    <b>
250
			       <a href="GLOBALS.html#MGRS">MGRS</a></b>()
251
			 </code>
252
			 <br>
253
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
254
			 
255
		      </td>
256
		   </tr>
257
		
258
		   <tr bgcolor="white" class="TableRowColor">
259
		      <td align="right" valign="top" width="1%">
260
			 <font size="-1">
261
			    <code>static&nbsp;Object</code>
262
			 </font>
263
		      </td>
264
		      <td>
265
			 <code>
266
			    <b>
267
			       <a href="GLOBALS.html#NumToAscii">NumToAscii</a></b>( num )
268
			 </code>
269
			 <br>
270
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
271
			 
272
		      </td>
273
		   </tr>
274
		
275
	
276
	</table>
277
    <p>
278

    
279
<!-- ========== END METHOD SUMMARY =========== -->
280

    
281

    
282
        <pre class="sourceview"><span class="comment">/*
283
Author:       Patrice G. Cappelaere (Got library from Geoserver)
284
License:      LGPL as per: http://www.gnu.org/copyleft/lesser.html
285

    
286
$Id: MGRS.js 2546 2007-01-23 12:07:39Z gjvoosten $
287
*/</span>
288

    
289

    
290
<span class="reserved">function</span> MGRS() {
291
	 <span class="comment">/**
292
     * UTM zones are grouped, and assigned to one of a group of 6
293
     * sets.
294
     */</span>
295
    var NUM_100K_SETS = 6;
296

    
297
    <span class="comment">/**
298
     * The column letters (for easting) of the lower left value, per
299
     * set.
300
     */</span>
301
    var SET_ORIGIN_COLUMN_LETTERS = new Array(<span class="literal">'A'</span>,<span class="literal">'J'</span>,<span class="literal">'S'</span>,<span class="literal">'A'</span>,<span class="literal">'J'</span>,<span class="literal">'S'</span>);
302

    
303
    <span class="comment">/**
304
     * The row letters (for northing) of the lower left value, per
305
     * set.
306
     */</span>
307
   var SET_ORIGIN_ROW_LETTERS = new Array(<span class="literal">'A'</span>,<span class="literal">'F'</span>,<span class="literal">'A'</span>,<span class="literal">'F'</span>,<span class="literal">'A'</span>,<span class="literal">'F'</span>);
308

    
309
    <span class="comment">/**
310
     * The column letters (for easting) of the lower left value, per
311
     * set,, for Bessel Ellipsoid.
312
     */</span>
313
    var BESSEL_SET_ORIGIN_COLUMN_LETTERS = new Array( <span class="literal">'A'</span>, <span class="literal">'J'</span>,  <span class="literal">'S'</span>, <span class="literal">'A'</span>, <span class="literal">'J'</span>, <span class="literal">'S'</span> );
314

    
315
    <span class="comment">/**
316
     * The row letters (for northing) of the lower left value, per
317
     * set, for Bessel Ellipsoid.
318
     */</span>
319
    var BESSEL_SET_ORIGIN_ROW_LETTERS = new Array( <span class="literal">'L'</span>, <span class="literal">'R'</span>, <span class="literal">'L'</span>, <span class="literal">'R'</span>, <span class="literal">'L'</span>, <span class="literal">'R'</span> );
320
    var SET_NORTHING_ROLLOVER = 20000000;
321

    
322
    <span class="comment">/**
323
     * Use 5 digits for northing and easting values, for 1 meter
324
     * accuracy of coordinate.
325
     */</span>
326

    
327
    var ACCURACY_1_METER = 5;
328

    
329
    <span class="comment">/**
330
     * Use 4 digits for northing and easting values, for 10 meter
331
     * accuracy of coordinate.
332
     */</span>
333
    var ACCURACY_10_METER = 4;
334

    
335
    <span class="comment">/**
336
     * Use 3 digits for northing and easting values, for 100 meter
337
     * accuracy of coordinate.
338
     */</span>
339
    var ACCURACY_100_METER = 3;
340

    
341
    <span class="comment">/**
342
     * Use 2 digits for northing and easting values, for 1000 meter
343
     * accuracy of coordinate.
344
     */</span>
345

    
346
    var ACCURACY_1000_METER = 2;
347
    <span class="comment">/**
348
     * Use 1 digits for northing and easting values, for 10000 meter
349
     * accuracy of coordinate.
350
     */</span>
351
    var ACCURACY_10000_METER = 1;
352

    
353
    <span class="comment">/** The set origin column letters to use. */</span>
354
    var originColumnLetters = SET_ORIGIN_COLUMN_LETTERS;
355

    
356
    <span class="comment">/** The set origin row letters to use. */</span>
357
    var originRowLetters = SET_ORIGIN_ROW_LETTERS;
358

    
359
    var A = 65;	//AsciiToNum(<span class="literal">'A'</span>);
360
    var I = 73;	//AsciiToNum(<span class="literal">'I'</span>);
361
    var O = 79;	//AsciiToNum(<span class="literal">'O'</span>);
362
    var V = 86;	//AsciiToNum(<span class="literal">'V'</span>);
363
    var Z = 90;	//AsciiToNum(<span class="literal">'Z'</span>);
364

    
365
    var DEBUG = false;
366

    
367
    <span class="comment">/** The String holding the MGRS coordinate value. */</span>
368
    var  mgrs_;
369
	  var lat_;
370
    var lon_;
371
    var radlat_ ;
372
    var radlon_ ;
373

    
374
 		var northing_;
375
    var easting_;
376
    var zone_number_;
377
    var zone_letter_;
378
    
379
		<span class="comment">/**
380
		  * Conversion of lat/lon to MGRS
381
		  */</span>
382
		<span class="reserved">this</span>.convert = <span class="reserved">function</span>(latitude, longitude) {
383
      lat_    = parseFloat(latitude);
384
		  lon_    = parseFloat(longitude);
385
		  radlat_ = degToRad(lat_);
386
      radlon_ = degToRad(lon_);
387

    
388
		  LLtoUTM();
389
		  <span class="reserved">return</span> formatMGRS();
390
	  }
391

    
392
    <span class="reserved">function</span> degToRad(deg) {
393
        <span class="reserved">return</span> (deg * (Math.PI / 180.0));
394
    }
395
    
396
	 <span class="comment">/**
397
     * Converts a set of Longitude and Latitude co-ordinates to UTM
398
     * given an ellipsoid
399
     * 
400
     * <span class="attrib">@param</span> ellip an ellipsoid definition.
401
     * <span class="attrib">@param</span> llpoint the coordinate to be converted
402
     * <span class="attrib">@param</span> utmpoint A UTMPoint instance to put the results in. If
403
     *        null, a new UTMPoint will be allocated.
404
     * <span class="attrib">@return</span> A UTM class instance containing the value of
405
     *         &lt;code&gt;null&lt;/code&gt; if conversion failed. If you pass
406
     *         in a UTMPoint, it will be returned as well if
407
     *         successful.
408
     */</span>
409
   <span class="reserved">function</span> LLtoUTM() {
410
        var Lat = lat_;
411
        var Long = lon_;
412
        var a = 6378137.0;	//ellip.radius;
413
        var eccSquared = 0.00669438;	//ellip.eccsq;
414
        var k0 = 0.9996;
415
        var LongOrigin;
416
        var eccPrimeSquared;
417
        var N, T, C, A, M;
418
        var LatRad = radlat_;
419
        var LongRad = radlon_;
420
        var LongOriginRad;
421
        var ZoneNumber;
422
<span class="comment">		// (int)</span>
423
        ZoneNumber = Math.floor((Long + 180) / 6) + 1;
424
<span class="comment">
425
        //Make sure the longitude 180.00 is in Zone 60</span>
426
        <span class="reserved">if</span> (Long == 180) {
427
            ZoneNumber = 60;
428
        }
429
<span class="comment">
430
        // Special zone for Norway</span>
431
        <span class="reserved">if</span> (Lat &gt;= 56.0 &amp;&amp; Lat &lt; 64.0 &amp;&amp; Long &gt;= 3.0 &amp;&amp; Long &lt; 12.0) {
432
            ZoneNumber = 32;
433
        }
434
<span class="comment">
435
        // Special zones for Svalbard</span>
436
        <span class="reserved">if</span> (Lat &gt;= 72.0 &amp;&amp; Lat &lt; 84.0) {
437
            <span class="reserved">if</span> (Long &gt;= 0.0 &amp;&amp; Long &lt; 9.0)
438
                ZoneNumber = 31;
439
            <span class="reserved">else</span> <span class="reserved">if</span> (Long &gt;= 9.0 &amp;&amp; Long &lt; 21.0)
440
                ZoneNumber = 33;
441
            <span class="reserved">else</span> <span class="reserved">if</span> (Long &gt;= 21.0 &amp;&amp; Long &lt; 33.0)
442
                ZoneNumber = 35;
443
            <span class="reserved">else</span> <span class="reserved">if</span> (Long &gt;= 33.0 &amp;&amp; Long &lt; 42.0)
444
                ZoneNumber = 37;
445
        }
446

    
447
        LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
448
<span class="comment">                                                     // in middle of</span>
449
<span class="comment">                                                     // zone</span>
450
        LongOriginRad = degToRad(LongOrigin);
451

    
452
        eccPrimeSquared = (eccSquared) / (1 - eccSquared);
453

    
454
        N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
455
        T = Math.tan(LatRad) * Math.tan(LatRad);
456
        C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
457
        A = Math.cos(LatRad) * (LongRad - LongOriginRad);
458

    
459
        M = a
460
                * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5
461
                        * eccSquared * eccSquared * eccSquared / 256)
462
                        * LatRad
463
                        - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared
464
                                / 32 + 45 * eccSquared * eccSquared
465
                                * eccSquared / 1024)
466
                        * Math.sin(2 * LatRad)
467
                        + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared
468
                                * eccSquared * eccSquared / 1024)
469
                        * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared
470
                        * eccSquared / 3072)
471
                        * Math.sin(6 * LatRad));
472

    
473
        var UTMEasting = (k0
474
                * N
475
                * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T
476
                        + 72 * C - 58 * eccPrimeSquared)
477
                        * A * A * A * A * A / 120.0) + 500000.0);
478

    
479
        var UTMNorthing =  (k0 * (M + N
480
                * Math.tan(LatRad)
481
                * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A
482
                        / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared)
483
                        * A * A * A * A * A * A / 720.0)));
484
        <span class="reserved">if</span> (Lat &lt; 0.0) {
485
            UTMNorthing += 10000000.0; //10000000 meter offset <span class="reserved">for</span>
486
<span class="comment">                                        // southern hemisphere</span>
487
        }
488

    
489
        northing_ = Math.round(UTMNorthing);
490
        easting_ =  Math.round(UTMEasting);
491
        zone_number_ = ZoneNumber;
492
        zone_letter_ = getLetterDesignator(Lat);
493
    }
494
    
495
	<span class="reserved">function</span> getLetterDesignator(lat) {
496
<span class="comment">        //This is here as an error flag to show that the Latitude is</span>
497
<span class="comment">        //outside MGRS limits</span>
498
        var LetterDesignator = <span class="literal">'Z'</span>;
499

    
500
        <span class="reserved">if</span> ((84 &gt;= lat) &amp;&amp; (lat &gt;= 72))
501
            LetterDesignator = <span class="literal">'X'</span>;
502
        <span class="reserved">else</span> <span class="reserved">if</span> ((72 &gt; lat) &amp;&amp; (lat &gt;= 64))
503
            LetterDesignator = <span class="literal">'W'</span>;
504
        <span class="reserved">else</span> <span class="reserved">if</span> ((64 &gt; lat) &amp;&amp; (lat &gt;= 56))
505
            LetterDesignator = <span class="literal">'V'</span>;
506
        <span class="reserved">else</span> <span class="reserved">if</span> ((56 &gt; lat) &amp;&amp; (lat &gt;= 48))
507
            LetterDesignator = <span class="literal">'U'</span>;
508
        <span class="reserved">else</span> <span class="reserved">if</span> ((48 &gt; lat) &amp;&amp; (lat &gt;= 40))
509
            LetterDesignator = <span class="literal">'T'</span>;
510
        <span class="reserved">else</span> <span class="reserved">if</span> ((40 &gt; lat) &amp;&amp; (lat &gt;= 32))
511
            LetterDesignator = <span class="literal">'S'</span>;
512
        <span class="reserved">else</span> <span class="reserved">if</span> ((32 &gt; lat) &amp;&amp; (lat &gt;= 24))
513
            LetterDesignator = <span class="literal">'R'</span>;
514
        <span class="reserved">else</span> <span class="reserved">if</span> ((24 &gt; lat) &amp;&amp; (lat &gt;= 16))
515
            LetterDesignator = <span class="literal">'Q'</span>;
516
        <span class="reserved">else</span> <span class="reserved">if</span> ((16 &gt; lat) &amp;&amp; (lat &gt;= 8))
517
            LetterDesignator = <span class="literal">'P'</span>;
518
        <span class="reserved">else</span> <span class="reserved">if</span> ((8 &gt; lat) &amp;&amp; (lat &gt;= 0))
519
            LetterDesignator = <span class="literal">'N'</span>;
520
        <span class="reserved">else</span> <span class="reserved">if</span> ((0 &gt; lat) &amp;&amp; (lat &gt;= -8))
521
            LetterDesignator = <span class="literal">'M'</span>;
522
        <span class="reserved">else</span> <span class="reserved">if</span> ((-8 &gt; lat) &amp;&amp; (lat &gt;= -16))
523
            LetterDesignator = <span class="literal">'L'</span>;
524
        <span class="reserved">else</span> <span class="reserved">if</span> ((-16 &gt; lat) &amp;&amp; (lat &gt;= -24))
525
            LetterDesignator = <span class="literal">'K'</span>;
526
        <span class="reserved">else</span> <span class="reserved">if</span> ((-24 &gt; lat) &amp;&amp; (lat &gt;= -32))
527
            LetterDesignator = <span class="literal">'J'</span>;
528
        <span class="reserved">else</span> <span class="reserved">if</span> ((-32 &gt; lat) &amp;&amp; (lat &gt;= -40))
529
            LetterDesignator = <span class="literal">'H'</span>;
530
        <span class="reserved">else</span> <span class="reserved">if</span> ((-40 &gt; lat) &amp;&amp; (lat &gt;= -48))
531
            LetterDesignator = <span class="literal">'G'</span>;
532
        <span class="reserved">else</span> <span class="reserved">if</span> ((-48 &gt; lat) &amp;&amp; (lat &gt;= -56))
533
            LetterDesignator = <span class="literal">'F'</span>;
534
        <span class="reserved">else</span> <span class="reserved">if</span> ((-56 &gt; lat) &amp;&amp; (lat &gt;= -64))
535
            LetterDesignator = <span class="literal">'E'</span>;
536
        <span class="reserved">else</span> <span class="reserved">if</span> ((-64 &gt; lat) &amp;&amp; (lat &gt;= -72))
537
            LetterDesignator = <span class="literal">'D'</span>;
538
        <span class="reserved">else</span> <span class="reserved">if</span> ((-72 &gt; lat) &amp;&amp; (lat &gt;= -80))
539
            LetterDesignator = <span class="literal">'C'</span>;
540
        <span class="reserved">return</span> LetterDesignator;
541
    }
542

    
543
	 <span class="reserved">function</span> formatMGRS() {
544
		 var seasting = <span class="literal">""</span> + easting_;
545
		 var snorthing = <span class="literal">""</span>+ northing_;
546
		 <span class="reserved">while</span>( snorthing.length &gt; 6 )
547
			 snorthing = snorthing.substr(1,snorthing.length-1);
548

    
549
		 var str= zone_number_ + <span class="literal">""</span> + zone_letter_ +
550
       get100kID(easting_, northing_, zone_number_) +
551
			 seasting.substr(1,4) + snorthing.substr(1,4);
552

    
553
		  <span class="reserved">return</span> str;
554
	  }
555
	
556
	   <span class="comment">/**
557
     * Get the two letter 100k designator for a given UTM easting,
558
     * northing and zone number value.
559
     */</span>
560
    <span class="reserved">function</span> get100kID( easting, northing, zone_number) {
561
        var setParm = get100kSetForZone(zone_number);
562
        var setColumn = Math.floor( easting / 100000);
563
        var setRow = Math.floor( northing  / 100000) % 20;
564
<span class="comment">		//trace("get100kID:"+setParm+" "+setColumn+" "+setRow);</span>
565
        <span class="reserved">return</span> getLetter100kID(setColumn, setRow, setParm);
566
    }
567

    
568
	 <span class="comment">/**
569
     * Given a UTM zone number, figure out the MGRS 100K set it is in.
570
     */</span>
571
    <span class="reserved">function</span> get100kSetForZone(i) {
572
        var setParm = i % NUM_100K_SETS;
573
        <span class="reserved">if</span> (setParm == 0)
574
            setParm = NUM_100K_SETS;
575
		
576
        <span class="reserved">return</span> setParm;
577
    }
578
    
579
   <span class="comment">/**
580
     * Get the two-letter MGRS 100k designator given information
581
     * translated from the UTM northing, easting and zone number.
582
     * 
583
     * <span class="attrib">@param</span> setColumn the column index as it relates to the MGRS
584
     *        100k set spreadsheet, created from the UTM easting.
585
     *        Values are 1-8.
586
     * <span class="attrib">@param</span> setRow the row index as it relates to the MGRS 100k set
587
     *        spreadsheet, created from the UTM northing value. Values
588
     *        are from 0-19.
589
     * <span class="attrib">@param</span> setParm the set block, as it relates to the MGRS 100k set
590
     *        spreadsheet, created from the UTM zone. Values are from
591
     *        1-60.
592
     * <span class="attrib">@return</span> two letter MGRS 100k code.
593
     */</span>
594

    
595
    <span class="reserved">function</span> getLetter100kID( column, row, parm) {
596
<span class="comment">		    // colOrigin and rowOrigin are the letters at the origin of the set</span>
597
		    var index = parm-1;
598
        var colOrigin = AsciiToNum(SET_ORIGIN_COLUMN_LETTERS[index]);
599
        var rowOrigin = AsciiToNum(SET_ORIGIN_ROW_LETTERS[index]);
600
<span class="comment">
601
        // colInt and rowInt are the letters to build to return</span>
602
        var colInt = colOrigin + column - 1;
603
        var rowInt = rowOrigin + row;
604
        var rollover = false;
605

    
606
		    <span class="reserved">if</span> ( colInt &gt; Z ) {
607
            colInt = colInt - Z + A - 1;
608
            rollover = true;
609
        }
610

    
611
		    <span class="reserved">if</span> (colInt == I || (colOrigin &lt; I &amp;&amp; colInt &gt; I)
612
                || ((colInt &gt; I || colOrigin &lt; I) &amp;&amp; rollover)) {
613
            colInt++;
614
        }
615

    
616
		    <span class="reserved">if</span> (colInt == O || (colOrigin &lt; O &amp;&amp; colInt &gt; O)
617
                || ((colInt &gt; O || colOrigin &lt; O) &amp;&amp; rollover)) {
618
            colInt++;
619

    
620
            <span class="reserved">if</span> (colInt == I) {
621
                colInt++;
622
             }
623
        }
624

    
625
	  	   <span class="reserved">if</span> (colInt &gt; Z) {
626
            colInt = colInt - Z + A - 1;
627
        }
628

    
629
        <span class="reserved">if</span> (rowInt &gt; V) {
630
            rowInt = rowInt - V + A - 1;
631
            rollover = true;
632
        } <span class="reserved">else</span> {
633
            rollover = false;
634
        }
635

    
636
        <span class="reserved">if</span>( ((rowInt == I) || ((rowOrigin &lt; I) &amp;&amp; (rowInt &gt; I)))
637
                || (((rowInt &gt; I)||(rowOrigin &lt; I)) &amp;&amp; rollover)) {
638
            rowInt++;
639
        }
640

    
641
        <span class="reserved">if</span>( ((rowInt == O) || ((rowOrigin &lt; O) &amp;&amp; (rowInt &gt; O)))
642
                || (((rowInt &gt; O)|| (rowOrigin &lt; O)) &amp;&amp; rollover)) {
643
            rowInt++;
644

    
645
            <span class="reserved">if</span> (rowInt == I) {
646
                rowInt++;
647
            }
648
        }
649

    
650
        <span class="reserved">if</span> (rowInt &gt; V) {
651
            rowInt = rowInt - V + A - 1;
652
        }
653

    
654
        var twoLetter = NumToAscii(colInt) + <span class="literal">""</span> + NumToAscii(rowInt);
655
        <span class="reserved">return</span> twoLetter;
656
	}
657

    
658

    
659
	<span class="reserved">function</span> AsciiToNum( ascii ) {
660
		switch( ascii ) {
661
			case <span class="literal">'A'</span>:
662
				<span class="reserved">return</span> 65;
663
			case <span class="literal">'B'</span>:
664
				<span class="reserved">return</span> 66;
665
			case <span class="literal">'C'</span>:
666
				<span class="reserved">return</span> 67;
667
			case <span class="literal">'D'</span>:
668
				<span class="reserved">return</span> 68;
669
			case <span class="literal">'E'</span>:
670
				<span class="reserved">return</span> 69;
671
			case <span class="literal">'F'</span>:
672
				<span class="reserved">return</span> 70;
673
			case <span class="literal">'G'</span>:
674
				<span class="reserved">return</span> 71;
675
			case <span class="literal">'H'</span>:
676
				<span class="reserved">return</span> 72;
677
			case <span class="literal">'I'</span>:
678
				<span class="reserved">return</span> 73;
679
			case <span class="literal">'J'</span>:
680
				<span class="reserved">return</span> 74;
681
			case <span class="literal">'K'</span>:
682
				<span class="reserved">return</span> 75;
683
			case <span class="literal">'L'</span>:
684
				<span class="reserved">return</span> 76;
685
			case <span class="literal">'M'</span>:
686
				<span class="reserved">return</span> 77;
687
			case <span class="literal">'N'</span>:
688
				<span class="reserved">return</span> 78;
689
			case <span class="literal">'O'</span>:
690
				<span class="reserved">return</span> 79;
691
			case <span class="literal">'P'</span>:
692
				<span class="reserved">return</span> 80;
693
			case <span class="literal">'Q'</span>:
694
				<span class="reserved">return</span> 81;
695
			case <span class="literal">'R'</span>:
696
				<span class="reserved">return</span> 82;
697
			case <span class="literal">'S'</span>:
698
				<span class="reserved">return</span> 83;
699
			case <span class="literal">'T'</span>:
700
				<span class="reserved">return</span> 84;
701
			case <span class="literal">'U'</span>:
702
				<span class="reserved">return</span> 85;
703
			case <span class="literal">'V'</span>:
704
				<span class="reserved">return</span> 86;
705
			case <span class="literal">'W'</span>:
706
				<span class="reserved">return</span> 87;
707
			case <span class="literal">'X'</span>:
708
				<span class="reserved">return</span> 88;
709
			case <span class="literal">'Y'</span>:
710
				<span class="reserved">return</span> 89;
711
			case <span class="literal">'Z'</span>:
712
				<span class="reserved">return</span> 90;
713
		}
714
	}
715
	
716
	<span class="reserved">function</span> NumToAscii( num ) {
717
		switch( num ) {
718
			case 65:
719
				<span class="reserved">return</span> <span class="literal">'A'</span>;
720
			case 66:
721
				<span class="reserved">return</span> <span class="literal">'B'</span>;
722
			case 67:
723
				<span class="reserved">return</span> <span class="literal">'C'</span>;
724
			case 68:
725
				<span class="reserved">return</span> <span class="literal">'D'</span>;
726
			case 69:
727
				<span class="reserved">return</span> <span class="literal">'E'</span>;
728
			case 70:
729
				<span class="reserved">return</span> <span class="literal">'F'</span>;
730
			case 71:
731
				<span class="reserved">return</span> <span class="literal">'G'</span>;
732
			case 72:
733
				<span class="reserved">return</span> <span class="literal">'H'</span>;
734
			case 73:
735
				<span class="reserved">return</span> <span class="literal">'I'</span>;
736
			case 74:
737
				<span class="reserved">return</span>  <span class="literal">'J'</span>;
738
			case 75 :
739
				<span class="reserved">return</span> <span class="literal">'K'</span>;
740
			case 76:
741
				<span class="reserved">return</span> <span class="literal">'L'</span>;
742
			case 77:
743
				<span class="reserved">return</span> <span class="literal">'M'</span>;
744
			case 78:
745
				<span class="reserved">return</span> <span class="literal">'N'</span>;
746
			case 79:
747
				<span class="reserved">return</span> <span class="literal">'O'</span>;
748
			case 80:
749
				<span class="reserved">return</span> <span class="literal">'P'</span>;
750
			case 81:
751
				<span class="reserved">return</span> <span class="literal">'Q'</span>;
752
			case 82:
753
				<span class="reserved">return</span> <span class="literal">'R'</span>;
754
			case 83:
755
				<span class="reserved">return</span> <span class="literal">'S'</span>;
756
			case 84:
757
				<span class="reserved">return</span> <span class="literal">'T'</span>;
758
			case 85:
759
				<span class="reserved">return</span> <span class="literal">'U'</span>;
760
			case 86:
761
				<span class="reserved">return</span> <span class="literal">'V'</span>;
762
			case 87:
763
				<span class="reserved">return</span> <span class="literal">'W'</span>;
764
			case 88:
765
				<span class="reserved">return</span> <span class="literal">'X'</span>;
766
			case 89:
767
				<span class="reserved">return</span> <span class="literal">'Y'</span>;
768
			case 90:
769
				<span class="reserved">return</span> <span class="literal">'Z'</span>;
770
		}
771
	}
772
}</pre>
773
	<hr>
774

    
775

    
776

    
777
<!-- ========== START OF NAVBAR ========== -->
778
<a name="navbar_top"><!-- --></a>
779
<table border="0" width="100%" cellpadding="1" cellspacing="0">
780
<tr>
781
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
782
<a name="navbar_top_firstrow"><!-- --></a>
783
<table border="0" cellpadding="0" cellspacing="3">
784
  <tr align="center" valign="top">
785
  
786
  
787
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
788
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
789
  
790

    
791
  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
792
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
793
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
794
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
795
  </tr>
796
</table>
797
</td>
798
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
799
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
800
</td>
801
</tr>
802

    
803
<tr>
804
<td bgcolor="white" class="NavBarCell2"><font size="-2">
805
&nbsp;PREV&nbsp;
806
&nbsp;NEXT</font></td>
807
<td bgcolor="white" class="NavBarCell2"><font size="-2">
808
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
809
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
810
&nbsp;&nbsp;
811
<script>
812
  <!--
813
  if(window==top) {
814
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
815
  }
816
  //-->
817
</script>
818
<noscript>
819
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
820
</noscript>
821
</font></td>
822
</tr>
823
</table>
824
<!-- =========== END OF NAVBAR =========== -->
825

    
826
<hr>
827
<font size="-1">
828

    
829
</font>
830
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Sun Apr 27 20:30:54 2008</div>
831
</body>
832
</html>
(259-259/316)