19 #include <podofo/doc/PdfMemDocument.h> 20 #include <podofo/base/PdfName.h> 21 #include <podofo/base/PdfObject.h> 68 #ifdef OSSIM_ID_ENABLED 69 static const char OSSIM_ID[] =
"$Id";
72 static ossimTrace traceDebug(
"ossimGeoPdfReader:debug");
73 static ossimTrace traceDump(
"ossimGeoPdfReader:dump");
81 static ossimString centralMeridianKey =
"CentralMeridian";
82 static ossimString standardParallelOneKey =
"StandardParallelOne";
83 static ossimString standardParallelTwoKey =
"StandardParallelTwo";
84 static ossimString falseEastingKey =
"FalseEasting";
85 static ossimString falseNorthingKey =
"FalseNorthing";
88 static ossimString longitudeOneKey =
"LongitudeOne";
90 static ossimString longitudeTwoKey =
"LongitudeTwo";
128 std::map<ossimString, ossimString, ossimStringLtstr>::iterator it = info.
find(key);
129 if (it != info.end())
131 valueStr = it->second;
141 m_numberOfSamples(0),
142 m_numOfFramesVertical(0),
143 m_numOfFramesHorizontal(0),
146 m_frameWidthVector(),
147 m_frameHeightVector(),
150 m_pdfMemDocument(NULL),
175 ossimIrect imageRect(pixelCol, pixelRow, pixelCol+width-1, pixelRow+height-1);
190 void* lineBuffer = 0;
191 std::vector<PoDoFo::PdfObject*> imageObjects = entry.
theFrameEntry;
192 if (imageObjects.size() == 1)
194 PoDoFo::PdfMemStream* pStream =
dynamic_cast<PoDoFo::PdfMemStream*
>(imageObjects[0]->GetStream());
195 pStream->Uncompress();
196 PoDoFo::pdf_long length = pStream->GetLength();
197 pStream->GetCopy((
char**)&lineBuffer, &length);
201 delete [] (
char*)lineBuffer;
209 PoDoFo::PdfMemStream* pStream =
dynamic_cast<PoDoFo::PdfMemStream*
>(imageObjects[band]->GetStream());
210 pStream->Uncompress();
211 PoDoFo::pdf_long length = pStream->GetLength();
212 pStream->GetCopy((
char**)&lineBuffer, &length);
217 delete [] (
char*)lineBuffer;
222 if (lineBuffer != NULL)
224 delete [] (
char*)lineBuffer;
276 static const char MODULE[] =
"ossimGeoPdfReader::open";
281 << MODULE <<
" entered...\n" 290 PoDoFo::PdfError::EnableDebug(
false);
304 for(
int i = 0; i < count; ++i)
309 PoDoFo::PdfObject* pdfObject = pdfPage->GetObject();
310 PoDoFo::PdfObject* geoPdfObject = NULL;
311 if( pdfObject->GetDictionary().HasKey(PoDoFo::PdfName(
"LGIDict") ) )
313 geoPdfObject = pdfObject->GetDictionary().GetKey(PoDoFo::PdfName(
"LGIDict"));
316 else if (pdfObject->GetDictionary().HasKey(PoDoFo::PdfName(
"VP") ))
318 geoPdfObject = pdfObject->GetDictionary().GetKey(PoDoFo::PdfName(
"VP"));
323 std::string imagInfo;
324 geoPdfObject->ToString(imagInfo);
329 PoDoFo::PdfObject* pSource = pdfPage->GetResources();
330 pSource->ToString(imagInfo);
331 imagInfoStr = imagInfo;
333 std::vector<ossimString> imageInfoVector;
395 std::vector<ossimString> tileInfoVector;
396 for (
ossim_uint32 index = 0; index < tileInfo.size(); ++index)
398 std::vector<ossimString> tmpVector = tileInfo[index].split(
"\n");
408 tileInfoVector.push_back(tmpStr);
415 for (
ossim_uint32 index = 0; index < tileInfoVector.size(); ++index)
421 tileInfoVector.clear();
426 std::vector<ossimString> tmpKeyValue = tileInfo.
split(
" ");
428 if (tmpKeyValue.size() > 1)
430 std::vector<ossimString> layerNameVector = tmpKeyValue[0].split(
"_");
431 ossim_int32 col = layerNameVector[layerNameVector.size()-2].toInt();
432 ossim_int32 row = layerNameVector[layerNameVector.size()-1].toInt();
433 std::pair<ossim_int32, ossim_int32> tileRowCol;
434 tileRowCol = make_pair(row, col);
463 std::vector<ossimString> tmpVector = bBoxStr.
split(
")");
464 std::vector<ossimString> tmpVector1;
478 if (tmpVector1.size() == 8)
480 ll_lon = tmpVector1[2].toDouble();
481 ll_lat = tmpVector1[3].toDouble();
482 ur_lon = tmpVector1[6].toDouble();
483 ur_lat = tmpVector1[7].toDouble();
485 lr_lon = tmpVector1[6].toDouble();
486 lr_lat = tmpVector1[3].toDouble();
487 ul_lon = tmpVector1[2].toDouble();
488 ul_lat = tmpVector1[7].toDouble();
490 else if (tmpVector1.size() == 16)
492 ll_lon = tmpVector1[2].toDouble();
493 ll_lat = tmpVector1[3].toDouble();
494 lr_lon = tmpVector1[6].toDouble();
495 lr_lat = tmpVector1[7].toDouble();
497 ur_lon = tmpVector1[10].toDouble();
498 ur_lat = tmpVector1[11].toDouble();
499 ul_lon = tmpVector1[14].toDouble();
500 ul_lat = tmpVector1[15].toDouble();
505 std::vector<ossimString> tmpVector;
507 if (!coodStr.
empty())
509 std::vector<ossimString> coodVector = coodStr.
split(
" ");
520 ll_lat = tmpVector[0].toDouble();
521 ll_lon = tmpVector[1].toDouble();
522 lr_lat = tmpVector[2].toDouble();
523 lr_lon = tmpVector[3].toDouble();
524 ur_lat = tmpVector[4].toDouble();
525 ur_lon = tmpVector[5].toDouble();
526 ul_lat = tmpVector[6].toDouble();
527 ul_lon = tmpVector[7].toDouble();
540 std::vector<ossimGpt> points;
548 points.push_back(g1);
549 points.push_back(g2);
550 points.push_back(g3);
551 points.push_back(g4);
559 ossimDpt gsd(fabs(scaleLon), fabs(scaleLat));
570 points.push_back(g1);
571 points.push_back(g2);
572 points.push_back(g3);
573 points.push_back(g4);
585 ossimDpt gsd(fabs(scaleLon), fabs(scaleLat));
596 points.push_back(g1);
597 points.push_back(g2);
598 points.push_back(g3);
599 points.push_back(g4);
609 ossimDpt gsd(fabs(scaleLon), fabs(scaleLat));
615 std::vector<ossimDpt> rectTmp;
618 for(std::vector<ossimGpt>::size_type index=0; index < 4; ++index)
620 geoImage->
worldToLocal(points[(
int)index], rectTmp[(
int)index]);
646 const char* prefix)
const 651 if(imageGeometry.
valid())
701 std::vector<PoDoFo::PdfObject*> tmpVector1 = tmpVector[j];
740 entryList.push_back(i);
859 "%s File %s line %d\nNULL pointer passed to method!");
875 const T* s =
static_cast<const T*
>(src);
878 (clipRect.
ul().
x - img_rect.
ul().
x);
886 (clipRect.
ul().
x - src_rect.
ul().
x);
892 T* destinationBand =
static_cast<T*
>(tile->
getBuf(band));
893 destinationIndex = destinationOffset;
894 sourceIndex = sourceOffset + s_band_offset*band;
898 for (
ossim_uint32 sample = 0; sample < clipWidth; ++sample)
900 destinationBand[destinationIndex + sample]
901 = s[sourceIndex+sample];
903 sourceIndex -= s_width;
904 destinationIndex += d_width;
981 if( (type ==
"ossimGeoPdfReader") || (type ==
"ossimImageHandler") )
1014 if (!projCode.
empty())
1027 if (!projContents.
empty())
1037 if (object->IsReference())
1041 else if (object->IsDictionary())
1045 else if (object->IsArray())
1053 PoDoFo::PdfArray arrayObj =
object->GetArray();
1056 PoDoFo::PdfObject objTmp = arrayObj[i];
1057 if (objTmp.IsDictionary())
1061 else if (objTmp.IsReference())
1070 PoDoFo::PdfReference pdfReference =
object->GetReference();
1072 if (pdfReference.IsIndirect())
1074 PoDoFo::PdfObject* refObj = objVector.GetObject(pdfReference);
1075 if (refObj->IsDictionary())
1084 std::string valueStr;
1085 PoDoFo::PdfDictionary pdfDictionary =
object->GetDictionary();
1086 PoDoFo::TKeyMap keyMap = pdfDictionary.GetKeys();
1087 PoDoFo::TKeyMap::iterator it = keyMap.begin();
1088 while (it != keyMap.end())
1091 PoDoFo::PdfObject* refObj = it->second;
1092 if (refObj->IsReference())
1098 refObj->ToString(valueStr);
1110 PoDoFo::PdfObject* pObj = NULL;
1112 std::vector<ossimString> tmpForm;
1115 bool isDctDecode =
false;
1119 if ((*it)->IsDictionary())
1121 pObj = (*it)->GetDictionary().GetKey( PoDoFo::PdfName::KeyType );
1122 if( pObj && pObj->IsName() && ( pObj->GetName().GetName() ==
"XObject" ))
1124 pObj = (*it)->GetDictionary().GetKey( PoDoFo::PdfName::KeySubtype );
1125 if( pObj && pObj->IsName() && ( pObj->GetName().GetName() ==
"Form" ))
1127 std::string imageTileInfo;
1128 (*it)->ToString(imageTileInfo);
1135 else if( pObj && pObj->IsName() && ( pObj->GetName().GetName() ==
"Image" ))
1137 pObj = (*it)->GetDictionary().GetKey( PoDoFo::PdfName::KeyFilter );
1138 if( pObj->IsName() && ( pObj->GetName().GetName() ==
"DCTDecode" ))
1143 else if( pObj->IsArray() && pObj->GetArray().GetSize() == 1 &&
1144 pObj->GetArray()[0].IsName() && (pObj->GetArray()[0].GetName().GetName() ==
"DCTDecode"))
1149 else if (pObj->IsName() && (pObj->GetName().GetName() ==
"FlateDecode") )
1151 if (isDctDecode ==
false)
1153 std::pair<ossim_int32, ossim_int32> tileRowCol;
1154 tileRowCol = make_pair(rowCount, 0);
1170 std::map<ossim_int32, ossim_int32> widthMap;
1171 std::map<ossim_int32, PoDoFo::PdfObject*>::iterator it =
m_podofoImageObjs.begin();
1174 PoDoFo::PdfObject* tmpObj = it->second;
1175 PoDoFo::PdfImage image(tmpObj);
1176 int width = image.GetWidth();
1177 widthMap[it->first] = width;
1181 std::map<ossim_int32, ossim_int32>::iterator itWidth = widthMap.begin();
1184 widthMap.erase(itWidth);
1186 itWidth = widthMap.end();
1191 itWidth = widthMap.begin();
1193 while (itWidth != widthMap.end())
1197 if (firstWidth == tmpWidth)
1201 else if ( lastWidth == tmpWidth )
1203 invalidId = firstId;
1219 std::map<ossim_int32, std::pair<ossim_int32, ossim_int32> >::iterator itTile =
m_podofoTileInfo.find(invalidId);
1225 if (invalidId == firstId)
1234 std::pair<ossim_int32, ossim_int32> tileRowCol;
1235 tileRowCol = make_pair(tileRow-1, 0);
1265 std::map<ossim_int32, std::pair<ossim_int32, ossim_int32> >::iterator itTileEnd;
1269 std::map<ossim_int32, PoDoFo::PdfObject*>::iterator itObjeEnd;
1273 ossim_int32 indexOffset = itTileEnd->first - itObjeEnd->first;
1275 std::map<ossim_int32, std::pair<ossim_int32, ossim_int32> >::iterator it =
m_podofoTileInfo.begin();
1280 if (indexOffset > 0)
1282 index = index - indexOffset;
1284 std::map<ossim_int32, PoDoFo::PdfObject*>::iterator itObj =
m_podofoImageObjs.find(index);
1287 row = it->second.first;
1288 col = it->second.second;
1313 std::vector<PoDoFo::PdfObject*> tmpObjVector;
1317 if (indexOffset > 0)
1319 index = index - indexOffset;
1321 std::map<ossim_int32, PoDoFo::PdfObject*>::iterator itObj =
m_podofoImageObjs.find(index);
1335 PoDoFo::PdfImage image(tmpObj);
1336 int height = image.GetHeight();
1343 PoDoFo::PdfImage image(tmpObj);
1344 int width = image.GetWidth();
1371 PoDoFo::PdfMemStream* pStream =
dynamic_cast<PoDoFo::PdfMemStream*
>(tmpObject->GetStream());
1372 pStream->Uncompress();
1381 std::vector<ossimFrameEntryData> result;
1384 if(!
isOpen())
return result;
1395 for(
ossim_int32 row = frameRect.ul().y; row <= frameRect.lr().y; ++row)
1397 for(
ossim_int32 col = frameRect.ul().x; col <= frameRect.lr().x; ++col)
1410 if(tempEntry.size() > 0)
1427 std::vector<ossimString> tmpVector = projContents.
split(
"\n");
1428 std::map<ossimString, ossimString, ossimStringLtstr> projectionMap;
1435 std::vector<ossimString> tmpKeyValue = tmpStr.
split(
" ");
1440 if (tmpKeyValue[j].contains(
"/"))
1452 projectionMap[key] = valueStr;
1468 if (projCode ==
"GEODETIC" || projCode ==
"GEOGRAPHIC")
1471 if (datumCode ==
"WD")
1473 codeName =
"EPSG:4322";
1478 else if (projCode ==
"UT")
1483 if (!datumCode.
empty())
1488 if (!zoneStr.
empty())
1493 if (!hemisphereStr.
empty())
1500 else if (projCode ==
"UP")
1505 if (!datumCode.
empty())
1510 if (!hemiStr.
empty())
1517 else if (projCode ==
"SPCS")
1524 spcsCode =
ossimString(
"NAD83_" + projCode +
"_" + zoneStr);
1539 else if (projCode ==
"AC")
1545 if (!datumCode.
empty())
1550 if (!origin.isNan())
1552 albers->setOrigin(origin);
1555 if (!standardParallelOneStr.
empty())
1557 albers->setStandardParallel1(standardParallelOneStr.
toDouble());
1560 if (!standardParallelTwoStr.
empty())
1562 albers->setStandardParallel2(standardParallelTwoStr.
toDouble());
1565 if (!falseEastingStr.
empty())
1567 albers->setFalseEasting(falseEastingStr.
toDouble());
1570 if (!falseNorthingStr.
empty())
1572 albers->setFalseNorthing(falseNorthingStr.
toDouble());
1577 else if (projCode ==
"AL")
1583 if (!datumCode.
empty())
1588 if (!origin.isNan())
1593 if (!falseEastingStr.
empty())
1598 if (!falseNorthingStr.
empty())
1605 else if (projCode ==
"BF")
1611 if (!datumCode.
empty())
1616 if (!origin.isNan())
1621 if (!falseEastingStr.
empty())
1626 if (!falseNorthingStr.
empty())
1633 else if (projCode ==
"CS")
1639 if (!datumCode.
empty())
1644 if (!origin.isNan())
1649 if (!falseEastingStr.
empty())
1654 if (!falseNorthingStr.
empty())
1661 else if (projCode ==
"LI")
1667 if (!datumCode.
empty())
1672 if (!origin.isNan())
1677 if (!falseEastingStr.
empty())
1682 if (!falseNorthingStr.
empty())
1689 else if (projCode ==
"EF")
1695 if (!datumCode.
empty())
1700 if (!origin.isNan())
1705 if (!falseEastingStr.
empty())
1710 if (!falseNorthingStr.
empty())
1717 else if (projCode ==
"ED")
1721 if (!datumCode.
empty())
1726 if (!centralMeridianStr.
empty())
1731 if (!falseEastingStr.
empty())
1736 if (!falseNorthingStr.
empty())
1743 else if (projCode ==
"GN")
1749 if (!datumCode.
empty())
1754 if (!origin.isNan())
1759 if (!falseEastingStr.
empty())
1764 if (!falseNorthingStr.
empty())
1771 else if (projCode ==
"LE")
1777 if (!datumCode.
empty())
1782 if (!origin.isNan())
1784 lamber->setOrigin(origin);
1787 if (!standardParallelOneStr.
empty())
1789 lamber->setStandardParallel1(standardParallelOneStr.
toDouble());
1792 if (!standardParallelTwoStr.
empty())
1794 lamber->setStandardParallel2(standardParallelTwoStr.
toDouble());
1797 if (!falseEastingStr.
empty())
1799 lamber->setFalseEasting(falseEastingStr.
toDouble());
1802 if (!falseNorthingStr.
empty())
1804 lamber->setFalseNorthing(falseNorthingStr.
toDouble());
1809 else if (projCode ==
"MC")
1815 if (!datumCode.
empty())
1820 if (!origin.isNan())
1825 if (!scaleFactorStr.
empty())
1830 if (!falseEastingStr.
empty())
1835 if (!falseNorthingStr.
empty())
1842 else if (projCode ==
"MH")
1846 if (!datumCode.
empty())
1851 if (!centralMeridianStr.
empty())
1856 if (!falseEastingStr.
empty())
1861 if (!falseNorthingStr.
empty())
1868 else if (projCode ==
"MP")
1872 if (!datumCode.
empty())
1877 if (!centralMeridianStr.
empty())
1882 if (!falseEastingStr.
empty())
1887 if (!falseNorthingStr.
empty())
1894 else if (projCode ==
"NT")
1897 if (!datumCode.
empty())
1903 else if (projCode ==
"OC")
1915 if (!datumCode.
empty())
1920 if (!origin1.isNan())
1925 if (!origin2.isNan())
1930 if (!scaleFactorStr.
empty())
1935 if (!falseEastingStr.
empty())
1940 if (!falseNorthingStr.
empty())
1947 else if (projCode ==
"PG")
1955 if (!datumCode.
empty())
1960 if (!origin.isNan())
1962 polar->setOrigin(origin);
1965 if (!falseEastingStr.
empty())
1967 polar->setFalseEasting(falseEastingStr.
toDouble());
1970 if (!falseNorthingStr.
empty())
1972 polar->setFalseNorthing(falseNorthingStr.
toDouble());
1977 else if (projCode ==
"PH")
1983 if (!datumCode.
empty())
1988 if (!origin.isNan())
1993 if (!falseEastingStr.
empty())
1998 if (!falseNorthingStr.
empty())
2005 else if (projCode ==
"SA")
2009 if (!datumCode.
empty())
2014 if (!centralMeridianStr.
empty())
2019 if (!falseEastingStr.
empty())
2024 if (!falseNorthingStr.
empty())
2031 else if (projCode ==
"SD")
2037 if (!datumCode.
empty())
2042 if (!origin.isNan())
2047 if (!falseEastingStr.
empty())
2052 if (!falseNorthingStr.
empty())
2059 else if (projCode ==
"TC")
2065 if (!datumCode.
empty())
2070 if (!origin.isNan())
2075 if (!scaleFactorStr.
empty())
2080 if (!falseEastingStr.
empty())
2085 if (!falseNorthingStr.
empty())
2092 else if (projCode ==
"TX")
2098 if (!datumCode.
empty())
2103 if (!origin.isNan())
2108 if (!scaleFactorStr.
empty())
2113 if (!falseEastingStr.
empty())
2118 if (!falseNorthingStr.
empty())
2125 else if (projCode ==
"VA")
2129 if (!datumCode.
empty())
2134 if (!centralMeridianStr.
empty())
2139 if (!falseEastingStr.
empty())
2144 if (!falseNorthingStr.
empty())
2156 <<
"ossimGeoPdfReader: No projection information. \n" virtual void deleteCache(ossimAppFixedCacheId cacheId)
OSSIMDLLEXPORT void ossimSetError(const char *className, ossim_int32 error, const char *fmtString=0,...)
virtual void loadBand(const void *src, const ossimIrect &src_rect, ossim_uint32 band)
void setFalseEasting(double falseEasting)
virtual ossim_uint32 getWidth() const
virtual bool isSourceEnabled() const
PoDoFo::PdfMemDocument * m_pdfMemDocument
static ossimImageGeometryRegistry * instance()
ossimRefPtr< ossimImageGeometry > theGeometry
ossimString substitute(const ossimString &searchKey, const ossimString &replacementValue, bool replaceAll=false) const
Substitutes searchKey string with replacementValue and returns a string.
void setFalseNorthing(double falseNorthing)
void setFalseEasting(double falseEasting)
void setProjection(ossimProjection *projection)
Sets the projection to be used for local-to-world coordinate transformation.
void resetCacheBuffer(ossimFrameEntryData entry)
static ossimString upcase(const ossimString &aString)
virtual ossim_uint32 getNumberOfBands() const
void setFalseNorthing(double falseNorthing)
ossimScalarType m_scalarType
ossimFilename theImageFile
virtual void setImageRectangle(const ossimIrect &rect)
virtual bool isOpen() const
Method to test for open file stream.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
void setCentralMeridian(double centralMeridian)
std::map< ossim_int32, ossim_int32 > m_frameWidthVector
void setPodofoArrayInfo(PoDoFo::PdfObject *object)
Represents serializable keyword/value map.
void setPodofoDictInfo(PoDoFo::PdfObject *object)
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
std::vector< std::vector< std::vector< PoDoFo::PdfObject * > > > m_frameEntryArray
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const =0
Pure virtual, derived classes must implement.
virtual ossim_uint32 getNumberOfInputBands() const
Returns the number of bands in the image.
~ossimGeoPdfVectorPageNode()
void setScaleFactor(double scaleFactor)
const ossimDpt & ul() const
virtual void setOrigin(const ossimGpt &origin)
Sets theOrigin to origin.
ossim_uint32 height() const
bool contains(char aChar) const
virtual ossimGpt inverse(const ossimDpt &pp) const
void setFalseNorthing(double falseNorthing)
void setFalseEasting(double falseEasting)
static ossimString toString(bool aValue)
Numeric to string methods.
void setFalseNorthing(double falseNorthing)
virtual ossim_uint32 getNumberOfEntries() const
ossimDrect computeBoundingRect(ossimRefPtr< ossimImageGeometry > geoImage)
virtual bool isGeographic() const
ossim_uint32 m_numberOfSamples
const ossimIpt & ul() const
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
virtual ossimDataObjectStatus getDataObjectStatus() const
static const ossimErrorCode OSSIM_ERROR
virtual void setDecimalDegreesPerPixel(const ossimDpt &gsd)
void setScaleFactor(double scaleFactor)
void setFalseEasting(double falseEasting)
virtual ossimRefPtr< ossimImageGeometry > getImageGeometry()
Returns the image geometry object associated with this tile source or NULL if non defined...
void setFalseEasting(double falseEasting)
void setFalseEasting(double falseEasting)
ossim_uint32 m_numberOfBands
Has sub image offset.
void buildFrameEntryArray()
void setFalseEasting(double falseEasting)
bool intersects(const ossimIrect &rect) const
void setImageSize(const ossimIpt &size)
const ossimIpt & ll() const
void setFalseEasting(double falseEasting)
ossimAppFixedTileCache::ossimAppFixedCacheId m_cacheId
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
Method to grab a tile(rectangle) from image.
ossimProjection * getLGIDictGeoProjection()
void setFalseEasting(double falseEasting)
static const char * TYPE_KW
std::map< ossim_int32, PoDoFo::PdfObject * > m_podofoImageObjs
virtual bool extendGeometry(ossimImageHandler *handler) const
void ref() const
increment the reference count by one, indicating that this object has another pointer which is refere...
virtual void initialize()
Initialize the data buffer.
static ossimAppFixedTileCache * instance(ossim_uint32 maxSize=0)
void setCentralMeridian(double centralMeridian)
virtual void setMetersPerPixel(const ossimDpt &gsd)
virtual ossimObject * dup() const
void setFalseEasting(double falseEasting)
void setFalseNorthing(double falseNorthing)
virtual bool open()
Open method.
virtual void closeEntry()
Method to close current entry.
virtual bool isValidRLevel(ossim_uint32 resLevel) const
Determines if the passed in reslution level is valid.
ossim_int32 toInt32() const
bool completely_within(const ossimIrect &rect) const
void push_back(char c)
Equivalent to insert(end(), c).
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
virtual ossim_uint32 getImageTileWidth() const
Returns the tile width of the image or 0 if the image is not tiled.
virtual bool getOverviewTile(ossim_uint32 resLevel, ossimImageData *result)
Method to get an overview tile.
static ossimImageDataFactory * instance()
void setBoundingBox(const ossimDrect &bounds)
void setFalseNorthing(double falseNorthing)
Albers Equal Area Conic Projection.
void setFalseNorthing(double falseNorthing)
ossimProjection * getVPGeoProjection()
std::vector< ossimFrameEntryData > getIntersectingEntries(const ossimIrect &rect)
It is important to note that each frame is organized into an easting northing type orientation...
std::vector< PoDoFo::PdfObject * > theFrameEntry
virtual ossimDataObjectStatus validate() const
virtual void setUlEastingNorthing(const ossimDpt &ulEastingNorthing)
void setCentralMeridian(double centralMeridian)
std::string::size_type size() const
void setScaleFactor(double scaleFactor)
void setFalseNorthing(double falseNorthing)
virtual void getEntryList(std::vector< ossim_uint32 > &entryList) const
virtual ossimRefPtr< ossimImageGeometry > getInternalImageGeometry() const
unsigned int ossim_uint32
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
static ossimDatumFactory * instance()
virtual ossimIrect getImageRectangle() const
ossimString getValueFromMap(std::map< ossimString, ossimString, ossimStringLtstr > info, ossimString key)
void setFalseNorthing(double falseNorthing)
void setFalseNorthing(double falseNorthing)
RTTI_DEF1_INST(ossimGeoPdfReader, "ossimGeoPdfReader", ossimImageHandler)
const ossimIpt & lr() const
void setFalseEasting(double falseEasting)
virtual void close()
Deletes the overview and clears the valid image vertices.
virtual ossimString getClassName() const
Returns class name.
void parseTileStructure(std::vector< ossimString > tileInfo)
static ossimString downcase(const ossimString &aString)
virtual ossimIrect getImageRectangle(ossim_uint32 resLevel=0) const
Returns zero-based bounding rectangle of the image.
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
void setPodofoImageInfo()
ossimProjection * getProjectionFromStr(ossimString projContents)
std::map< ossim_int32, ossim_int32 > m_frameHeightVector
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossim_uint32 width() const
void initImageParameters(ossimImageGeometry *geom) const
Convenience method to set things needed in the image geometry from the image handler.
ossimIrect clipToRect(const ossimIrect &rect) const
virtual void getEntryList(std::vector< ossim_uint32 > &entryList) const
void setFalseEasting(double falseEasting)
std::map< ossim_int32, std::pair< ossim_int32, ossim_int32 > > m_podofoTileInfo
virtual ~ossimGeoPdfReader()
virtural destructor
Container class that holds both 2D transform and 3D projection information for an image Only one inst...
void unref() const
decrement the reference count by one, indicating that a pointer to this object is referencing it...
void buildTileInfo(ossimString tileInfo)
void setZone(const ossimGpt &ground)
virtual ossimDpt forward(const ossimGpt &worldPoint) const =0
All map projections will convert the world coordinate to an easting northing (Meters).
void setFalseEasting(double falseEasting)
virtual ossimRefPtr< ossimImageGeometry > getExternalImageGeometry() const
Returns the image geometry object associated with this tile source or NULL if non defined...
ossimRefPtr< ossimImageData > m_cacheTile
std::vector< ossimGeoPdfVectorPageNode * > m_pageVector
virtual void makeBlank()
Initializes data to null pixel values.
virtual ossim_uint32 getImageTileHeight() const
Returns the tile width of the image or 0 if the image is not tiled.
static const char * PCS_CODE_KW
const ossimProjection * getProjection() const
Access methods for projection (may be NULL pointer).
virtual void completeOpen()
Will complete the opening process.
virtual ossimString getShortName() const
Returns short name.
ossimRefPtr< ossimImageGeometry > m_geoImage
virtual bool setCurrentEntry(ossim_uint32 entryIdx)
ossimRefPtr< ossimImageHandler > theOverview
std::map< ossimString, ossimString, ossimStringLtstr > m_podofoProjInfo
void setPodofoRefInfo(PoDoFo::PdfObject *object)
This class defines an abstract Handler which all image handlers(loaders) should derive from...
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const
Gets number of lines for res level.
void setFalseNorthing(double falseNorthing)
virtual ossimScalarType getOutputScalarType() const
Returns the output pixel type of the tile source.
virtual const void * getBuf() const
const ossimDpt & ur() const
void setPodofoInfo(PoDoFo::PdfObject *object)
void setFalseNorthing(double falseNorthing)
void setFalseNorthing(double falseNorthing)
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
virtual ossimProjection * createProjection(const ossimFilename &filename, ossim_uint32 entryIdx) const
STUB. Not implemented.
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const
Gets the number of samples for res level.
void setHemisphere(char hemisphere)
void setFalseNorthing(double falseNorthing)
void setGeoImage(ossimRefPtr< ossimImageGeometry > image)
virtual void setUlTiePoints(const ossimGpt &gpt)
bool worldToLocal(const ossimGpt &world_pt, ossimDpt &local_pt) const
Exposes the 3D world-to-local image coordinate reverse projection.
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const =0
Pure virtual, derived classes must implement.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Saves the transform (if any) and projection (if any) states to the KWL.
void setFalseEasting(double falseEasting)
void setFalseNorthing(double falseNorthing)
const ossimDpt & ll() const
void setCentralPoint2(const ossimGpt &point)
void setFalseEasting(double falseEasting)
ossimGeoPdfVectorPageNode()
virtual void setDatum(const ossimDatum *datum)
Sets theDatum to datum.
ossim_int32 m_numOfFramesVertical
ossim_uint32 m_numberOfLines
void setCentralMeridian(double centralMeridian)
ossimAppFixedCacheId newTileCache(const ossimIrect &tileBoundaryRect, const ossimIpt &tileSize=ossimIpt(0, 0))
const ossimDpt & lr() const
ossim_int32 m_numOfFramesHorizontal
void setCentralPoint1(const ossimGpt &point)
void setFalseEasting(double falseEasting)
void setHemisphere(const ossimGpt &ground)
void setCentralMeridian(double centralMeridian)
void setFalseNorthing(double falseNorthing)
unsigned char ossim_uint8
std::string::size_type find(const std::string &s, std::string::size_type pos=0) const
Searches for s as a substring of *this, beginning at character pos of *this.
static ossimEpsgProjectionFactory * instance()
Implements singleton pattern.
ossimGeoPdfReader()
default construtor
ossimRefPtr< ossimImageData > m_tile
void setFalseEasting(double falseEasting)
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
ossimDrect m_boundingRect
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
ossimProjection * getGeoProjection()
void setScaleFactor(double scaleFactor)
virtual ossimString getLongName() const
Returns long name.
void fillTile(T, const ossimIrect &clip_rect, ossimImageData *tile)
void setFalseNorthing(double falseNorthing)