ÿþ
 / *   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -     * / 
 / *     G e o d e s y   r e p r e s e n t a t i o n   c o n v e r s i o n   f u n c t i o n s   ( c )   C h r i s   V e n e s s   2 0 0 2 - 2 0 1 0                                                 * / 
 / *       -   w w w . m o v a b l e - t y p e . c o . u k / s c r i p t s / l a t l o n g . h t m l                                                                                                 * / 
 / *                                                                                                                                                                                                 * / 
 / *     S a m p l e   u s a g e :                                                                                                                                                                   * / 
 / *         v a r   l a t   =   G e o . p a r s e D M S ( ' 5 1 °   2 8 2   4 0 . 1 2 3   N ' ) ;                                                                                                   * / 
 / *         v a r   l o n   =   G e o . p a r s e D M S ( ' 0 0 0 °   0 0 2   0 5 . 3 1 3   W ' ) ;                                                                                                 * / 
 / *         v a r   p 1   =   n e w   L a t L o n ( l a t ,   l o n ) ;                                                                                                                             * / 
 / *   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -     * / 
 
 v a r   G e o   =   { } ;     / /   G e o   n a m e s p a c e ,   r e p r e s e n t i n g   s t a t i c   c l a s s 
 
 / * * 
   *   P a r s e s   s t r i n g   r e p r e s e n t i n g   d e g r e e s / m i n u t e s / s e c o n d s   i n t o   n u m e r i c   d e g r e e s 
   * 
   *   T h i s   i s   v e r y   f l e x i b l e   o n   f o r m a t s ,   a l l o w i n g   s i g n e d   d e c i m a l   d e g r e e s ,   o r   d e g - m i n - s e c   o p t i o n a l l y 
   *   s u f f i x e d   b y   c o m p a s s   d i r e c t i o n   ( N S E W ) .   A   v a r i e t y   o f   s e p a r a t o r s   a r e   a c c e p t e d   ( e g   3 º   3 7 '   0 9 " W )   
   *   o r   f i x e d - w i d t h   f o r m a t   w i t h o u t   s e p a r a t o r s   ( e g   0 0 3 3 7 0 9 W ) .   S e c o n d s   a n d   m i n u t e s   m a y   b e   o m i t t e d .   
   *   ( N o t e   m i n i m a l   v a l i d a t i o n   i s   d o n e ) . 
   * 
   *   @ p a r a m       { S t r i n g | N u m b e r }   d m s S t r :   D e g r e e s   o r   d e g / m i n / s e c   i n   v a r i e t y   o f   f o r m a t s 
   *   @ r e t u r n s   { N u m b e r }   D e g r e e s   a s   d e c i m a l   n u m b e r 
   *   @ t h r o w s     { T y p e E r r o r }   d m s S t r   i s   a n   o b j e c t ,   p e r h a p s   D O M   o b j e c t   w i t h o u t   . v a l u e ? 
   * / 
 G e o . p a r s e D M S   =   f u n c t i o n ( d m s S t r )   { 
     i f   ( t y p e o f   d e g   = =   ' o b j e c t ' )   t h r o w   n e w   T y p e E r r o r ( ' G e o . p a r s e D M S   -   d m s S t r   i s   [ D O M ? ]   o b j e c t ' ) ; 
     
     / /   c h e c k   f o r   s i g n e d   d e c i m a l   d e g r e e s   w i t h o u t   N S E W ,   i f   s o   r e t u r n   i t   d i r e c t l y 
     i f   ( t y p e o f   d m s S t r   = = =   ' n u m b e r '   & &   i s F i n i t e ( d m s S t r ) )   r e t u r n   N u m b e r ( d m s S t r ) ; 
     
     / /   s t r i p   o f f   a n y   s i g n   o r   c o m p a s s   d i r ' n   &   s p l i t   o u t   s e p a r a t e   d / m / s 
     v a r   d m s   =   S t r i n g ( d m s S t r ) . t r i m ( ) . r e p l a c e ( / ^ - / , ' ' ) . r e p l a c e ( / [ N S E W ] $ / i , ' ' ) . s p l i t ( / [ ^ 0 - 9 . , ] + / ) ; 
     i f   ( d m s [ d m s . l e n g t h - 1 ] = = ' ' )   d m s . s p l i c e ( d m s . l e n g t h - 1 ) ;     / /   f r o m   t r a i l i n g   s y m b o l 
     
     i f   ( d m s   = =   ' ' )   r e t u r n   N a N ; 
     
     / /   a n d   c o n v e r t   t o   d e c i m a l   d e g r e e s . . . 
     s w i t c h   ( d m s . l e n g t h )   { 
         c a s e   3 :     / /   i n t e r p r e t   3 - p a r t   r e s u l t   a s   d / m / s 
             v a r   d e g   =   d m s [ 0 ] / 1   +   d m s [ 1 ] / 6 0   +   d m s [ 2 ] / 3 6 0 0 ;   
             b r e a k ; 
         c a s e   2 :     / /   i n t e r p r e t   2 - p a r t   r e s u l t   a s   d / m 
             v a r   d e g   =   d m s [ 0 ] / 1   +   d m s [ 1 ] / 6 0 ;   
             b r e a k ; 
         c a s e   1 :     / /   j u s t   d   ( p o s s i b l y   d e c i m a l )   o r   n o n - s e p a r a t e d   d d d m m s s 
             v a r   d e g   =   d m s [ 0 ] ; 
             / /   c h e c k   f o r   f i x e d - w i d t h   u n s e p a r a t e d   f o r m a t   e g   0 0 3 3 7 0 9 W 
             i f   ( / [ N S ] / i . t e s t ( d m s S t r ) )   d e g   =   ' 0 '   +   d e g ;     / /   -   n o r m a l i s e   N / S   t o   3 - d i g i t   d e g r e e s 
             i f   ( / [ 0 - 9 ] { 7 } / . t e s t ( d e g ) )   d e g   =   d e g . s l i c e ( 0 , 3 ) / 1   +   d e g . s l i c e ( 3 , 5 ) / 6 0   +   d e g . s l i c e ( 5 ) / 3 6 0 0 ;   
             b r e a k ; 
         d e f a u l t : 
             r e t u r n   N a N ; 
     } 
     i f   ( / ^ - | [ W S ] $ / i . t e s t ( d m s S t r . t r i m ( ) ) )   d e g   =   - d e g ;   / /   t a k e   ' - ' ,   w e s t   a n d   s o u t h   a s   - v e 
     r e t u r n   N u m b e r ( d e g ) ; 
 } 
 
 / * * 
   *   C o n v e r t   d e c i m a l   d e g r e e s   t o   d e g / m i n / s e c   f o r m a t 
   *     -   d e g r e e ,   p r i m e ,   d o u b l e - p r i m e   s y m b o l s   a r e   a d d e d ,   b u t   s i g n   i s   d i s c a r d e d ,   t h o u g h   n o   c o m p a s s 
   *         d i r e c t i o n   i s   a d d e d 
   * 
   *   @ p r i v a t e 
   *   @ p a r a m       { N u m b e r }   d e g :   D e g r e e s 
   *   @ p a r a m       { S t r i n g }   [ f o r m a t = d m s ] :   R e t u r n   v a l u e   a s   ' d ' ,   ' d m ' ,   ' d m s ' 
   *   @ p a r a m       { N u m b e r }   [ d p = 0 | 2 | 4 ] :   N o   o f   d e c i m a l   p l a c e s   t o   u s e   -   d e f a u l t   0   f o r   d m s ,   2   f o r   d m ,   4   f o r   d 
   *   @ r e t u r n s   { S t r i n g }   d e g   f o r m a t t e d   a s   d e g / m i n / s e c s   a c c o r d i n g   t o   s p e c i f i e d   f o r m a t 
   *   @ t h r o w s     { T y p e E r r o r }   d e g   i s   a n   o b j e c t ,   p e r h a p s   D O M   o b j e c t   w i t h o u t   . v a l u e ? 
   * / 
 G e o . t o D M S   =   f u n c t i o n ( d e g ,   f o r m a t ,   d p )   { 
     i f   ( t y p e o f   d e g   = =   ' o b j e c t ' )   t h r o w   n e w   T y p e E r r o r ( ' G e o . t o D M S   -   d e g   i s   [ D O M ? ]   o b j e c t ' ) ; 
     i f   ( i s N a N ( d e g ) )   r e t u r n   ' N a N ' ;     / /   g i v e   u p   h e r e   i f   w e   c a n ' t   m a k e   a   n u m b e r   f r o m   d e g 
     
         / /   d e f a u l t   v a l u e s 
     i f   ( t y p e o f   f o r m a t   = =   ' u n d e f i n e d ' )   f o r m a t   =   ' d m s ' ; 
     i f   ( t y p e o f   d p   = =   ' u n d e f i n e d ' )   { 
         s w i t c h   ( f o r m a t )   { 
             c a s e   ' d ' :   d p   =   4 ;   b r e a k ; 
             c a s e   ' d m ' :   d p   =   2 ;   b r e a k ; 
             c a s e   ' d m s ' :   d p   =   0 ;   b r e a k ; 
             d e f a u l t :   f o r m a t   =   ' d m s ' ;   d p   =   0 ;     / /   b e   f o r g i v i n g   o n   i n v a l i d   f o r m a t 
         } 
     } 
     
     d e g   =   M a t h . a b s ( d e g ) ;     / /   ( u n s i g n e d   r e s u l t   r e a d y   f o r   a p p e n d i n g   c o m p a s s   d i r ' n ) 
     
     s w i t c h   ( f o r m a t )   { 
         c a s e   ' d ' : 
             d   =   d e g . t o F i x e d ( d p ) ;           / /   r o u n d   d e g r e e s 
             i f   ( d < 1 0 0 )   d   =   ' 0 '   +   d ;     / /   p a d   w i t h   l e a d i n g   z e r o s 
             i f   ( d < 1 0 )   d   =   ' 0 '   +   d ; 
             d m s   =   d   +   ' \ u 0 0 B 0 ' ;             / /   a d d   º   s y m b o l 
             b r e a k ; 
         c a s e   ' d m ' : 
             v a r   m i n   =   ( d e g * 6 0 ) . t o F i x e d ( d p ) ;     / /   c o n v e r t   d e g r e e s   t o   m i n u t e s   &   r o u n d 
             v a r   d   =   M a t h . f l o o r ( m i n   /   6 0 ) ;         / /   g e t   c o m p o n e n t   d e g / m i n 
             v a r   m   =   ( m i n   %   6 0 ) . t o F i x e d ( d p ) ;     / /   p a d   w i t h   t r a i l i n g   z e r o s 
             i f   ( d < 1 0 0 )   d   =   ' 0 '   +   d ;                     / /   p a d   w i t h   l e a d i n g   z e r o s 
             i f   ( d < 1 0 )   d   =   ' 0 '   +   d ; 
             i f   ( m < 1 0 )   m   =   ' 0 '   +   m ; 
             d m s   =   d   +   ' \ u 0 0 B 0 '   +   m   +   ' \ u 2 0 3 2 ' ;     / /   a d d   º ,   '   s y m b o l s 
             b r e a k ; 
         c a s e   ' d m s ' : 
             v a r   s e c   =   ( d e g * 3 6 0 0 ) . t o F i x e d ( d p ) ;     / /   c o n v e r t   d e g r e e s   t o   s e c o n d s   &   r o u n d 
             v a r   d   =   M a t h . f l o o r ( s e c   /   3 6 0 0 ) ;         / /   g e t   c o m p o n e n t   d e g / m i n / s e c 
             v a r   m   =   M a t h . f l o o r ( s e c / 6 0 )   %   6 0 ; 
             v a r   s   =   ( s e c   %   6 0 ) . t o F i x e d ( d p ) ;         / /   p a d   w i t h   t r a i l i n g   z e r o s 
             i f   ( d < 1 0 0 )   d   =   ' 0 '   +   d ;                         / /   p a d   w i t h   l e a d i n g   z e r o s 
             i f   ( d < 1 0 )   d   =   ' 0 '   +   d ; 
             i f   ( m < 1 0 )   m   =   ' 0 '   +   m ; 
             i f   ( s < 1 0 )   s   =   ' 0 '   +   s ; 
             d m s   =   d   +   ' \ u 0 0 B 0 '   +   m   +   ' \ u 2 0 3 2 '   +   s   +   ' \ u 2 0 3 3 ' ;     / /   a d d   º ,   ' ,   "   s y m b o l s 
             b r e a k ; 
     } 
     
     r e t u r n   d m s ; 
 } 
 
 / * * 
   *   C o n v e r t   n u m e r i c   d e g r e e s   t o   d e g / m i n / s e c   l a t i t u d e   ( s u f f i x e d   w i t h   N / S ) 
   * 
   *   @ p a r a m       { N u m b e r }   d e g :   D e g r e e s 
   *   @ p a r a m       { S t r i n g }   [ f o r m a t = d m s ] :   R e t u r n   v a l u e   a s   ' d ' ,   ' d m ' ,   ' d m s ' 
   *   @ p a r a m       { N u m b e r }   [ d p = 0 | 2 | 4 ] :   N o   o f   d e c i m a l   p l a c e s   t o   u s e   -   d e f a u l t   0   f o r   d m s ,   2   f o r   d m ,   4   f o r   d 
   *   @ r e t u r n s   { S t r i n g }   D e g / m i n / s e c o n d s 
   * / 
 G e o . t o L a t   =   f u n c t i o n ( d e g ,   f o r m a t ,   d p )   { 
     v a r   l a t   =   G e o . t o D M S ( d e g ,   f o r m a t ,   d p ) ; 
     r e t u r n   l a t = = ' '   ?   ' '   :   l a t . s l i c e ( 1 )   +   ( d e g < 0   ?   ' S '   :   ' N ' ) ;     / /   k n o c k   o f f   i n i t i a l   ' 0 '   f o r   l a t ! 
 } 
 
 / * * 
   *   C o n v e r t   n u m e r i c   d e g r e e s   t o   d e g / m i n / s e c   l o n g i t u d e   ( s u f f i x e d   w i t h   E / W ) 
   * 
   *   @ p a r a m       { N u m b e r }   d e g :   D e g r e e s 
   *   @ p a r a m       { S t r i n g }   [ f o r m a t = d m s ] :   R e t u r n   v a l u e   a s   ' d ' ,   ' d m ' ,   ' d m s ' 
   *   @ p a r a m       { N u m b e r }   [ d p = 0 | 2 | 4 ] :   N o   o f   d e c i m a l   p l a c e s   t o   u s e   -   d e f a u l t   0   f o r   d m s ,   2   f o r   d m ,   4   f o r   d 
   *   @ r e t u r n s   { S t r i n g }   D e g / m i n / s e c o n d s 
   * / 
 G e o . t o L o n   =   f u n c t i o n ( d e g ,   f o r m a t ,   d p )   { 
     v a r   l o n   =   G e o . t o D M S ( d e g ,   f o r m a t ,   d p ) ; 
     r e t u r n   l o n = = ' '   ?   ' '   :   l o n   +   ( d e g < 0   ?   ' W '   :   ' E ' ) ; 
 } 
 
 / * * 
   *   C o n v e r t   n u m e r i c   d e g r e e s   t o   d e g / m i n / s e c   a s   a   b e a r i n g   ( 0 º . . 3 6 0 º ) 
   * 
   *   @ p a r a m       { N u m b e r }   d e g :   D e g r e e s 
   *   @ p a r a m       { S t r i n g }   [ f o r m a t = d m s ] :   R e t u r n   v a l u e   a s   ' d ' ,   ' d m ' ,   ' d m s ' 
   *   @ p a r a m       { N u m b e r }   [ d p = 0 | 2 | 4 ] :   N o   o f   d e c i m a l   p l a c e s   t o   u s e   -   d e f a u l t   0   f o r   d m s ,   2   f o r   d m ,   4   f o r   d 
   *   @ r e t u r n s   { S t r i n g }   D e g / m i n / s e c o n d s 
   * / 
 G e o . t o B r n g   =   f u n c t i o n ( d e g ,   f o r m a t ,   d p )   { 
     d e g   =   ( N u m b e r ( d e g ) + 3 6 0 )   %   3 6 0 ;     / /   n o r m a l i s e   - v e   v a l u e s   t o   1 8 0 º . . 3 6 0 º 
     v a r   b r n g   =     G e o . t o D M S ( d e g ,   f o r m a t ,   d p ) ; 
     r e t u r n   b r n g . r e p l a c e ( ' 3 6 0 ' ,   ' 0 ' ) ;     / /   j u s t   i n   c a s e   r o u n d i n g   t o o k   u s   u p   t o   3 6 0 º ! 
 } 
 
 / *   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -     * / 
