28 static ossimTrace traceDebug(
"ossimGpkgInfo:debug");
29 static ossimTrace traceTiles(
"ossimGpkgInfo:tiles");
48 str.open( file.
c_str(), std::ios_base::in | std::ios_base::binary);
65 static const char MODULE[] =
"ossimGpkgInfo::open";
70 << MODULE <<
" entered..." 81 fileStream.open(
m_file.
c_str(), std::ios_base::in | std::ios_base::binary);
83 fileStream.seekg( 68, std::ios_base::beg );
84 fileStream.read(APP_ID, 4);
86 std::string appId(APP_ID);
87 kwl.
addPair(
"gpkg.",
"version", appId,
true);
92 int rc = sqlite3_open_v2(
m_file.
c_str(), &db, SQLITE_OPEN_READONLY, 0);
93 if ( rc == SQLITE_OK )
96 std::string tableName =
"gpkg_contents";
97 std::vector< ossimRefPtr<ossimGpkgDatabaseRecordBase> > records;
100 std::vector< ossimRefPtr<ossimGpkgDatabaseRecordBase> >::const_iterator i =
103 while ( i != records.end() )
105 std::string prefix =
"gpkg.";
109 (*i)->saveState( kwl, prefix );
117 tableName =
"gpkg_spatial_ref_sys";
120 std::vector< ossimRefPtr<ossimGpkgDatabaseRecordBase> >::const_iterator i =
123 while ( i != records.end() )
125 std::string prefix =
"gpkg.";
129 (*i)->saveState( kwl, prefix );
137 tableName =
"gpkg_tile_matrix_set";
140 std::vector< ossimRefPtr<ossimGpkgDatabaseRecordBase> >::const_iterator i =
143 while ( i != records.end() )
145 std::string prefix =
"gpkg.";
149 (*i)->saveState( kwl, prefix );
154 std::string key =
"table_name";
155 std::string tileTableName = kwl.
findKey( prefix, key );
156 if ( tileTableName.size() )
168 tableName =
"gpkg_tile_matrix";
171 std::vector< ossimRefPtr<ossimGpkgDatabaseRecordBase> >::const_iterator i =
174 while ( i != records.end() )
176 std::string prefix =
"gpkg.";
180 (*i)->saveState( kwl, prefix );
188 tableName =
"nsg_tile_matrix_extent";
191 std::vector< ossimRefPtr<ossimGpkgDatabaseRecordBase> >::const_iterator i =
194 while ( i != records.end() )
196 std::string prefix =
"gpkg.";
200 (*i)->saveState( kwl, prefix );
209 out << kwl << std::endl;
virtual bool open(const ossimFilename &file)
open method.
Represents serializable keyword/value map.
const std::string & findKey(const std::string &key) const
Find methods that take std::string(s).
std::basic_ifstream< char > ifstream
Class for char input file streams.
static ossimString toString(bool aValue)
Numeric to string methods.
void addPair(const std::string &key, const std::string &value, bool overwrite=true)
ossimGpkgInfo()
default constructor
bool getTableRows(sqlite3 *db, const std::string &tableName, std::vector< ossimRefPtr< ossimGpkgDatabaseRecordBase > > &result)
Parse table rows.
bool checkSignature(std::istream &in)
Check signature method.
std::ostream & printTiles(sqlite3 *db, const std::string &tileTableName, std::ostream &out)
std::string::size_type size() const
virtual std::ostream & print(std::ostream &out) const
Print method.
virtual ~ossimGpkgInfo()
virtual destructor
ossim_uint32 getSize() const
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
std::basic_ostream< char > ostream
Base class for char output streams.
const std::string & string() const