Skip to content

Commit

Permalink
get the nitf reader with the metadata program
Browse files Browse the repository at this point in the history
  • Loading branch information
hobu committed Mar 29, 2012
1 parent febcef1 commit 49d5d5d
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 24 deletions.
4 changes: 0 additions & 4 deletions include/pdal/drivers/nitf/Reader.hpp
Expand Up @@ -82,8 +82,6 @@ class PDAL_DLL Reader : public pdal::Reader
return false;
}

const std::vector<pdal::metadata::Entry>& getMetadatums() const { return m_metadatums; }

pdal::StageSequentialIterator* createSequentialIterator(PointBuffer& buffer) const;

// for dumping
Expand All @@ -94,8 +92,6 @@ class PDAL_DLL Reader : public pdal::Reader
StreamFactory* m_streamFactory;
pdal::drivers::las::Reader* m_lasReader;

std::vector<pdal::metadata::Entry> m_metadatums;

Reader& operator=(const Reader&); // not implemented
Reader(const Reader&); // not implemented

Expand Down
26 changes: 13 additions & 13 deletions src/drivers/nitf/NitfFile.cpp
Expand Up @@ -122,15 +122,15 @@ void NitfFile::getLasPosition(boost::uint64_t& offset, boost::uint64_t& length)
}


void NitfFile::extractMetadata(std::vector<pdal::metadata::Entry>& metadatums)
void NitfFile::extractMetadata(pdal::Metadata& ms)
{
//
// file header fields and TREs
//
{
processMetadata(m_file->papszMetadata, metadatums, "FH");
processMetadata(m_file->papszMetadata, ms, "FH");

processTREs(m_file->nTREBytes, m_file->pachTRE, metadatums, "FH");
processTREs(m_file->nTREBytes, m_file->pachTRE, ms, "FH");
}

//
Expand All @@ -143,9 +143,9 @@ void NitfFile::extractMetadata(std::vector<pdal::metadata::Entry>& metadatums)
throw pdal_error("NITFImageAccess failed");
}

processMetadata(imageSegment->papszMetadata, metadatums, "IM");
processMetadata(imageSegment->papszMetadata, ms, "IM");

processTREs(imageSegment->nTREBytes, imageSegment->pachTRE, metadatums, "IM");
processTREs(imageSegment->nTREBytes, imageSegment->pachTRE, ms, "IM");

NITFImageDeaccess(imageSegment);
}
Expand All @@ -160,9 +160,9 @@ void NitfFile::extractMetadata(std::vector<pdal::metadata::Entry>& metadatums)
throw pdal_error("NITFDESAccess failed");
}

processMetadata(dataSegment->papszMetadata, metadatums, "DES");
processMetadata(dataSegment->papszMetadata, ms, "DES");

processTREs_DES(dataSegment, metadatums, "IM");
processTREs_DES(dataSegment, ms, "IM");

NITFDESDeaccess(dataSegment);
}
Expand Down Expand Up @@ -261,7 +261,7 @@ int NitfFile::findLIDARASegment()
}


void NitfFile::processTREs(int nTREBytes, const char *pszTREData, std::vector<pdal::metadata::Entry>& metadatums, const std::string& parentkey)
void NitfFile::processTREs(int nTREBytes, const char *pszTREData, pdal::Metadata& ms, const std::string& parentkey)
{
char* szTemp = new char[nTREBytes];

Expand All @@ -286,7 +286,7 @@ void NitfFile::processTREs(int nTREBytes, const char *pszTREData, std::vector<pd
//ByteArray value(data);
m.setValue<std::string>(value);

metadatums.push_back(m);
ms.addMetadata(m);

pszTREData += nThisTRESize + 11;
nTREBytes -= (nThisTRESize + 11);
Expand All @@ -298,7 +298,7 @@ void NitfFile::processTREs(int nTREBytes, const char *pszTREData, std::vector<pd
}


void NitfFile::processTREs_DES(NITFDES* dataSegment, std::vector<pdal::metadata::Entry>& metadatums, const std::string& parentkey)
void NitfFile::processTREs_DES(NITFDES* dataSegment, pdal::Metadata& ms, const std::string& parentkey)
{
char* pabyTREData = NULL;
int nOffset = 0;
Expand All @@ -315,7 +315,7 @@ void NitfFile::processTREs_DES(NITFDES* dataSegment, std::vector<pdal::metadata:

metadata::Entry m(key, s_namespace + "." + parentkey);
m.setValue<std::string>(value);
metadatums.push_back(m);
ms.addMetadata(m);

nOffset += 11 + nThisTRESize;

Expand All @@ -326,7 +326,7 @@ void NitfFile::processTREs_DES(NITFDES* dataSegment, std::vector<pdal::metadata:
}


void NitfFile::processMetadata(char** papszMetadata, std::vector<pdal::metadata::Entry>& metadatums, const std::string& parentkey)
void NitfFile::processMetadata(char** papszMetadata, pdal::Metadata& ms, const std::string& parentkey)
{
int cnt = CSLCount(papszMetadata);
for (int i=0; i<cnt; i++)
Expand All @@ -340,7 +340,7 @@ void NitfFile::processMetadata(char** papszMetadata, std::vector<pdal::metadata:

metadata::Entry m(key, s_namespace + "." + parentkey);
m.setValue<std::string>(value);
metadatums.push_back(m);
ms.addMetadata(m);
}

return;
Expand Down
9 changes: 5 additions & 4 deletions src/drivers/nitf/NitfFile.hpp
Expand Up @@ -45,6 +45,7 @@

namespace pdal
{
class Metadata;
namespace metadata {
class Entry;
}
Expand All @@ -67,17 +68,17 @@ class PDAL_DLL NitfFile

void getLasPosition(boost::uint64_t& offset, boost::uint64_t& length) const;

void extractMetadata(std::vector<pdal::metadata::Entry>&);
void extractMetadata(pdal::Metadata& m);

private:
std::string getSegmentIdentifier(NITFSegmentInfo* psSegInfo);
std::string getDESVER(NITFSegmentInfo* psSegInfo);
int findIMSegment();
int findLIDARASegment();

static void processTREs(int nTREBytes, const char *pszTREData, std::vector<pdal::metadata::Entry>& metadatums, const std::string& parentkey);
static void processTREs_DES(NITFDES*, std::vector<pdal::metadata::Entry>& metadatums, const std::string& parentkey);
static void processMetadata(char** papszMetadata, std::vector<pdal::metadata::Entry>&, const std::string& parentkey);
static void processTREs(int nTREBytes, const char *pszTREData, pdal::Metadata& m, const std::string& parentkey);
static void processTREs_DES(NITFDES*, pdal::Metadata& m, const std::string& parentkey);
static void processMetadata(char** papszMetadata, pdal::Metadata& m, const std::string& parentkey);

const std::string m_filename;
NITFFile* m_file;
Expand Down
2 changes: 1 addition & 1 deletion src/drivers/nitf/Reader.cpp
Expand Up @@ -139,7 +139,7 @@ void Reader::initialize()

nitf.getLasPosition(offset, length);

nitf.extractMetadata(m_metadatums);
nitf.extractMetadata(getMetadataRef());

nitf.close();
}
Expand Down
6 changes: 4 additions & 2 deletions test/unit/NitfReaderTest.cpp
Expand Up @@ -69,10 +69,12 @@ BOOST_AUTO_TEST_CASE(test_one)

// check metadata
{
const std::vector<metadata::Entry>& metadatums = nitf_reader.getMetadatums();
pdal::Metadata metadata = nitf_reader.getMetadata();
/////////////////////////////////////////////////BOOST_CHECK_EQUAL(metadatums.size(), 80u);

const metadata::Entry& m = metadatums[4];

pdal::metadata::Entry const& m = metadata.getMetadata("FDT", "drivers.nitf.reader.FH");

BOOST_CHECK_EQUAL(m.getName(), "FDT");
BOOST_CHECK_EQUAL(m.getNamespace(), "drivers.nitf.reader.FH");

Expand Down

0 comments on commit 49d5d5d

Please sign in to comment.