Revision 12913 branches/v10/libraries/libJCRS/src/org/gvsig/crs/ogr/GetCRSepsg.java

View differences:

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