Revision 12913 branches/v10/libraries/libJCRS/src/org/gvsig/crs/ogr/GetCRSepsg.java
GetCRSepsg.java | ||
---|---|---|
440 | 440 |
* @return |
441 | 441 |
*/ |
442 | 442 |
private double especialDegree(double val){ |
443 |
if(val==0) |
|
444 |
return val; |
|
443 | 445 |
int signo = 1; |
444 |
double grad, min; |
|
445 |
double sec; |
|
446 |
|
|
447 | 446 |
if (val < 0){ |
448 | 447 |
signo = -1; |
449 | 448 |
val = Math.abs(val); |
450 | 449 |
} |
450 |
String strValue=String.valueOf(val); |
|
451 |
int posPto=strValue.indexOf('.'); |
|
452 |
double grad=Double.parseDouble(strValue.substring(0,posPto)); |
|
453 |
String strFraction=strValue.substring(posPto+1); |
|
454 |
double min=0; |
|
455 |
double sec=0; |
|
456 |
if(strFraction.length()==1) |
|
457 |
{ |
|
458 |
min=Double.parseDouble(strFraction); |
|
459 |
min*=10; |
|
460 |
} |
|
461 |
if(strFraction.length()==2) |
|
462 |
{ |
|
463 |
min=Double.parseDouble(strFraction); |
|
464 |
} |
|
465 |
if(strFraction.length()>2) |
|
466 |
{ |
|
467 |
min=Double.parseDouble(strFraction.substring(0,2)); |
|
468 |
sec=Double.parseDouble(strFraction.substring(2)); |
|
469 |
if(strFraction.length()==3) |
|
470 |
sec*=10; |
|
471 |
if(strFraction.length()>4){ |
|
472 |
for(int i=0;i<strFraction.length()-4;i++) |
|
473 |
sec=sec/10.0; |
|
474 |
} |
|
475 |
|
|
476 |
} |
|
451 | 477 |
|
452 |
grad = Math.floor(val); |
|
453 |
val=(val-grad)*100.0; |
|
454 |
min=Math.floor(val); |
|
455 |
sec=(val-min)*100.0; |
|
456 |
|
|
457 | 478 |
val = ((grad + (min/60.0) + (sec/3600.0)) * (Math.PI/180.0)) * signo; |
458 | 479 |
|
459 | 480 |
return val; |
Also available in: Unified diff