23 double QUARTER_QUAD_SEG_SIZE_IN_DEGREES = 0.03125;
24 static const double QUARTER_QUAD_SIZE_IN_DEGREES = 0.0625;
25 static const double QUAD_SIZE_IN_DEGREES = 0.125;
31 static ossimTrace traceDebug(
"USGS_quad::debug");
36 theQuadLowerRightCorner(0.0, 0.0, 0.0, lrGpt.datum()),
37 theQuarterQuadLowerRightCorner(0.0, 0.0, 0.0, lrGpt.datum())
41 const char* MODULE =
"ImgOutput::quadBasename";
54 const double QUAD_SIZE_IN_DEGREES = 0.125;
63 os << setiosflags(ios::right)
64 << setiosflags(ios::fixed)
67 tmpInt =
static_cast<int>(
abs(lrGpt.
lat));
73 tmpDbl = fabs(lrGpt.
lat) - (double)tmpInt;
74 quadChar +=
static_cast<int>(tmpDbl / QUAD_SIZE_IN_DEGREES);
76 tmpInt =
static_cast<int>(
abs(lrGpt.
lon));
77 os << setw(3) << tmpInt;
79 tmpDbl = fabs(lrGpt.
lon) - (double)tmpInt;
81 quadNum +=
static_cast<char>(tmpDbl / QUAD_SIZE_IN_DEGREES);
83 os << quadChar << quadNum;
85 double latFraction = (lrGpt.
lat / QUAD_SIZE_IN_DEGREES) -
86 ossim::round<int>((lrGpt.
lat) / QUAD_SIZE_IN_DEGREES);
87 double lonFraction = (lrGpt.
lon / QUAD_SIZE_IN_DEGREES) -
88 ossim::round<int>((lrGpt.
lon) / QUAD_SIZE_IN_DEGREES);
130 char quarterQuadChar =
'D';
131 if (latFraction && lonFraction)
133 quarterQuadChar =
'A';
135 else if (latFraction && !lonFraction)
137 quarterQuadChar =
'B';
139 else if (!latFraction && lonFraction)
141 quarterQuadChar =
'C';
143 os << quarterQuadChar << ends;
147 baseString = os.str().
c_str();
152 <<
" DEBUG: " << MODULE
153 <<
"\nbaseString: " << baseString << std::endl;
167 theQuadLowerRightCorner(0.0, 0.0, 0.0, datum),
168 theQuarterQuadLowerRightCorner(0.0, 0.0, 0.0, datum)
171 static const char MODULE[] =
"ossimUsgsQuad::ossimUsgsQuad";
179 <<
"FATAL: " << MODULE <<
"\n" 180 <<
"ossimDatum pointer passed in is null. Returning...\n";
198 const char* MODULE =
"ossimUsgsQuad::setQuadName";
209 <<
"FATAL: " << MODULE <<
"\n" 210 <<
"Quarder quad name length incorrect.\n" 211 <<
"Name: " << name <<
"\n" 212 <<
"Expected length: 7 or 8 Name length: " << name.
length()
213 <<
"\nExample of valid quad: 30089C6B\n" 214 <<
"Represents lower right corner of " 215 <<
"30 deg. 15 min. N., 89 deg. 37.5 min. W.\n" 217 <<
"30 = latitude on even degree boundary " 218 <<
"(Northern Hemisphere implied)\n" 219 <<
"089 = longitude on even degree boundary " 220 <<
"(Western Hemisphere implied)\n" 221 <<
"C = Third quad section in latitude direction\n" 222 <<
"6 = Sixth quad section in longitude direction\n" 223 <<
"B = Quarter quad segment within the quad\n" 224 <<
" (A=upper left, B=upper right, C=lower left, D=lower right)\n" 225 <<
"Quad size 7.5 minute square, quarter quad size 3.75 " 226 <<
"minute square.\n";
243 latChars[0] = qqName.
c_str()[0];
244 latChars[1] = qqName.
c_str()[1];
250 lonChars[0] = qqName.
c_str()[2];
251 lonChars[1] = qqName.
c_str()[3];
252 lonChars[2] = qqName.
c_str()[4];
258 latQuad = qqName.
c_str()[5];
263 lonQuad = qqName.
c_str()[6];
279 <<
"No quarter quad segment entered. Defaulting to D segment." 291 double lat = atof(latChars);
292 if ( (lat < 0.0) || (lat > 90.0) )
297 <<
"FATAL: " << MODULE <<
"\n" 298 <<
"Latitude range error. Latitude extracted: " << lat
299 <<
"\nRange: 0 to 90\n";
307 double lon = atof(lonChars);
308 if ( (lon < 0.0) || (lon > 180) )
313 <<
"FATAL: " << MODULE <<
"\n" 314 <<
"Longitud range error. Longitude extracted: " << lon
315 <<
"\nRange: 0 to 180\n";
325 double tmp = latQuad - 65;
337 <<
"FATAL:" << MODULE <<
"\n" 338 <<
"Latitude quad range error. Quad extracted: " << latQuad
339 <<
"\nRange: A to H\n";
366 <<
"FATAL:" << MODULE <<
"\n" 367 <<
"Longitude quad range error. Quad extracted: " << latQuad
368 <<
"\nRange: 1 to 8\n";
395 lat += QUARTER_QUAD_SIZE_IN_DEGREES;
396 lon -= QUARTER_QUAD_SIZE_IN_DEGREES;
400 lat += QUARTER_QUAD_SIZE_IN_DEGREES;
404 lon -= QUARTER_QUAD_SIZE_IN_DEGREES;
414 <<
"FATAL:" << MODULE <<
"\n" 415 <<
"Quarter quad segment range error.\n" 417 <<
"Range: A to D\n";
431 <<
"DEBUG: " << MODULE <<
", " 432 << qqName <<
" lower right quad corner: " 435 << qqName <<
" lower right quarter quad corner: " 455 point.
lond(point.
lond()+QUAD_SIZE_IN_DEGREES);
458 point.
latd(point.
latd()-QUAD_SIZE_IN_DEGREES);
468 static const char MODULE[] =
"ossimUsgsQuad::quarterQuadSegRect";
482 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
486 QUARTER_QUAD_SIZE_IN_DEGREES;
490 QUARTER_QUAD_SIZE_IN_DEGREES;
494 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
500 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
504 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
508 QUARTER_QUAD_SIZE_IN_DEGREES;
520 QUARTER_QUAD_SIZE_IN_DEGREES;
524 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
528 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
538 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
542 QUARTER_QUAD_SEG_SIZE_IN_DEGREES;
553 <<
"FATAL:" << MODULE <<
"\n" 554 <<
"Quarter quad segment range error.\n" 555 <<
"Quarter quad segment extracted: " << seg
556 <<
"Range: A to D\n";
574 <<
"DEBUG: " << MODULE
575 <<
"\nQuarter quad segment " << seg <<
" rect: " << rect <<
"\n";
586 static const char MODULE[] =
"ossimUsgsQuad::quarterQuadRect";
592 QUARTER_QUAD_SIZE_IN_DEGREES;
596 QUARTER_QUAD_SIZE_IN_DEGREES;
615 <<
"DEBUG: " << MODULE
616 <<
"\nQuarter quad rect: " << rect <<
"\n";
628 static const char MODULE[] =
"ossimUsgsQuad::quadRect";
634 QUAD_SIZE_IN_DEGREES;
638 QUAD_SIZE_IN_DEGREES;
657 <<
"DEBUG: " << MODULE
658 <<
"\nQuarter quad rect: " << rect <<
"\n";
669 static const char MODULE[] =
"ossimUsgsQuad::quarterQuadSegKwRect";
676 if ( (seg < 65) || (seg > 68) )
681 <<
"FATAL:" << MODULE <<
"\n" 682 << seg <<
" out of range!\n" 683 <<
"Possible values: A, B, C, or D\n";
692 os << setprecision(12)
693 << rect.
ll().
lat <<
" " 694 << rect.
ul().
lon <<
" " 695 << rect.
ul().
lat <<
" " 696 << rect.
ur().
lon << ends;
702 tmp = os.str().
c_str();
718 os << setprecision(12)
719 << rect.
ll().
lat <<
" " 720 << rect.
ul().
lon <<
" " 721 << rect.
ul().
lat <<
" " 722 << rect.
ur().
lon << ends;
747 os << setprecision(12)
748 << rect.
ll().
lat <<
" " 749 << rect.
ul().
lon <<
" " 750 << rect.
ul().
lat <<
" " 751 << rect.
ur().
lon << ends;
ossimGrect quarterQuadSegRect(char seg)
char theQuarterQuadSegment
static ossimString upcase(const ossimString &aString)
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
double lond() const
Will convert the radian measure to degrees.
void setQuadName(const ossimString &name)
ossimGpt theQuadLowerRightCorner
double latd() const
Will convert the radian measure to degrees.
const ossimDatum * datum() const
datum().
bool pointWithin(const ossimGpt &gpt, bool considerHgt=false) const
METHOD: pointWithin(ossimGpt)
std::string::size_type length() const
const ossimGpt & ul() const
ossimString quarterQuadKwRect() const
ossimString quadKwRect() const
ossimGpt theQuarterQuadLowerRightCorner
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
ossimString quarterQuadSegKwRect(char seg)
static void getQuadList(std::vector< ossimUsgsQuad > &result, const ossimGrect &rect)
ossimGrect quadRect() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
ossimGrect quarterQuadRect() const
ossimUsgsQuad(const ossimGpt &lrGpt)