108 using namespace MSP::CCS;
 
  134 const double PI = 3.14159265358979323e0;     
 
  163     temp_char = toupper(GEOREFString[i]);
 
  165     if ((!isalpha(GEOREFString[i]))
 
  169       if ((i == 0) || (i == 2))
 
  174     letter_number[i] = temp_char;
 
  179       letter_number[i] -= 2;
 
  180     else if (letter_number[i] > 
LETTER_I)
 
  181       letter_number[i] -= 1;
 
  183   if ((letter_number[0] > 23) || (letter_number[2] > 14))
 
  185   if ((letter_number[1] > 11) || (letter_number[3] > 14))
 
  188   *latitude = (double)(letter_number[1]) * 
QUAD + (double)(letter_number[3]);
 
  189   *longitude = (double)(letter_number[0]) * 
QUAD + (double)(letter_number[2]);
 
  193 void extractMinutes( 
char *GEOREFString, 
long start, 
long length, 
long errorType, 
double *minutes )
 
  210   for (i=0;i<length;i++)
 
  212     if (isdigit(GEOREFString[start+i]))
 
  213       temp_str[i] = GEOREFString[start+i];
 
  222   temp_str[length] = 0;
 
  223   *minutes = (double)atof(temp_str);  
 
  226     *minutes = *minutes / 10;
 
  240   double fraction = modf (value, &ivalue);
 
  242   ival = (long)(ivalue);
 
  243   if ((fraction > 0.5) || ((fraction == 0.5) && (ival%2 == 1)))
 
  262   divisor = pow (10.0, (5.0 - precision));
 
  265   minutes = minutes * 1000;
 
  267   sprintf (str, 
"%*.*ld", precision, precision, min);
 
  336   char GEOREFString[21];
 
  353   origin_long = (double)LONGITUDE_LOW;
 
  354   origin_lat = (double)LATITUDE_LOW;
 
  355   letter_number[0] = (long)((longitude-origin_long) / 
QUAD + 
ROUND_ERROR);
 
  356   longitude = longitude - ((double)letter_number[0] * 
QUAD + origin_long);
 
  357   letter_number[2] = (long)(longitude + 
ROUND_ERROR);
 
  358   long_min = (longitude - (double)letter_number[2]) * (double)
MIN_PER_DEG;
 
  359   letter_number[1] = (long)((latitude - origin_lat) / 
QUAD + 
ROUND_ERROR);
 
  360   latitude = latitude - ((double)letter_number[1] * 
QUAD + origin_lat);
 
  362   lat_min = (latitude - (double)letter_number[3]) * (double)
MIN_PER_DEG;
 
  363   for (i = 0;i < 4; i++)
 
  366       letter_number[i] += 1;
 
  368       letter_number[i] += 1;
 
  371   if (letter_number[0] == 26)
 
  377   if (letter_number[1] == 13)
 
  389   strcat(GEOREFString,long_min_str);
 
  390   strcat(GEOREFString,lat_min_str);
 
  415   double longitude, latitude;
 
  422   georef_length = strlen(GEOREFString);
 
  424       || ((georef_length % 2) != 0))
 
  429   minutes_length = (georef_length - start) / 2;
 
  437   latitude = latitude + origin_lat + lat_minutes / (double)
MIN_PER_DEG;
 
  438   longitude = longitude + origin_long + long_minutes / (double)
MIN_PER_DEG;