Skip to content

Commit

Permalink
Merge branch 'master' of github.com:PDAL/PDAL
Browse files Browse the repository at this point in the history
  • Loading branch information
mpgerlek committed Sep 22, 2011
2 parents 57aae3a + 6d7c0f7 commit c22540e
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 6 deletions.
2 changes: 1 addition & 1 deletion include/pdal/XMLSchema.hpp
Expand Up @@ -178,7 +178,7 @@ class PDAL_DLL Writer
{
public:
Writer(pdal::Schema const& schema);
~Writer() {};
~Writer() {}

std::string getXML();

Expand Down
2 changes: 2 additions & 0 deletions include/pdal/drivers/qfit/Reader.hpp
Expand Up @@ -168,6 +168,8 @@ class PDAL_DLL Reader : public pdal::Reader
QFIT_Format_Type m_format;
std::size_t m_offset;
boost::uint32_t m_size;
bool m_flip_x;
bool m_convert_z;

void registerFields();

Expand Down
36 changes: 33 additions & 3 deletions src/drivers/qfit/Reader.cpp
Expand Up @@ -210,7 +210,6 @@ PointIndexes::PointIndexes(const Schema& schema, QFIT_Format_Type format)
} else
{
GPSTime = schema.getDimensionIndex(Dimension::Id_Qfit_GpsTime);

}

return;
Expand All @@ -221,11 +220,22 @@ Reader::Reader(const Options& options)
: pdal::Reader(options)
, m_format(QFIT_Format_Unknown)
, m_size(0)
, m_flip_x(true)
, m_convert_z(true)
{
std::string filename= getFileName();

m_flip_x = getOptions().getValueOrDefault("flip_coordinates", true);
m_convert_z = getOptions().getValueOrDefault("convert_z_units", true);

std::istream* str = FileUtils::openFile(filename);

if (str == 0)
{
std::ostringstream oss;
oss << "Unable to open file '" << filename << "'";
throw qfit_error(oss.str());
}
str->seekg(0);

boost::int32_t int4(0);
Expand Down Expand Up @@ -296,7 +306,9 @@ Reader::Reader(const Options& options)
setNumPoints(count);

// getSchemaRef().dump();
delete str;

if (str != 0)
delete str;
}


Expand All @@ -309,13 +321,19 @@ void Reader::initialize()
const Options Reader::getDefaultOptions() const
{
Options options;
Option filename("filename", "", "file to read from");
Option flip_coordinates("flip_coordinates", true, "Flip coordinates from 0-360 to -180-180");
Option convert_z_units("convert_z_units", true, "Convert Z units from mm to m");
options.add(filename);
options.add(flip_coordinates);
options.add(convert_z_units);
return options;
}


std::string Reader::getFileName() const
{
return getOptions().getOption("input").getValue<std::string>();
return getOptions().getOption("filename").getValue<std::string>();
}

void Reader::registerFields()
Expand Down Expand Up @@ -432,13 +450,25 @@ boost::uint32_t Reader::processBuffer(PointBuffer& data, std::istream& stream, b

boost::int32_t x = Utils::read_field<boost::int32_t>(p);
QFIT_SWAP_BE_TO_LE(x);

if (m_flip_x) {
if (x > 180)
{
x = x - 360;
}
}
data.setField<boost::int32_t>(pointIndex, indexes.X, x);

boost::int32_t y = Utils::read_field<boost::int32_t>(p);
QFIT_SWAP_BE_TO_LE(y);
data.setField<boost::int32_t>(pointIndex, indexes.Y, y);

boost::int32_t z = Utils::read_field<boost::int32_t>(p);

if (m_convert_z)
{
z = z/100;
}
QFIT_SWAP_BE_TO_LE(z);
data.setField<boost::int32_t>(pointIndex, indexes.Z, z);

Expand Down
15 changes: 13 additions & 2 deletions test/unit/QFITReaderTest.cpp
Expand Up @@ -95,7 +95,12 @@ BOOST_AUTO_TEST_CASE(test_10_word)
pdal::Options options;
// std::string filename = Support::datapath("20050903_231839.qi");

pdal::Option filename("input", Support::datapath("qfit/10-word.qi"), "Input filename for reader to use" );
pdal::Option filename("filename", Support::datapath("qfit/10-word.qi"), "Input filename for reader to use" );
Option flip_coordinates("flip_coordinates", false, "Flip coordinates from 0-360 to -180-180");
Option convert_z_units("convert_z_units", false, "Convert Z units from mm to m");

options.add(convert_z_units);
options.add(flip_coordinates);
options.add(filename);
pdal::drivers::qfit::Reader reader(options);
BOOST_CHECK(reader.getDescription() == "QFIT Reader");
Expand Down Expand Up @@ -128,8 +133,14 @@ BOOST_AUTO_TEST_CASE(test_14_word)
{
pdal::Options options;

pdal::Option filename("input", Support::datapath("qfit/14-word.qi"), "Input filename for reader to use" );
pdal::Option filename("filename", Support::datapath("qfit/14-word.qi"), "Input filename for reader to use" );
options.add(filename);
Option flip_coordinates("flip_coordinates", false, "Flip coordinates from 0-360 to -180-180");
Option convert_z_units("convert_z_units", false, "Convert Z units from mm to m");

options.add(convert_z_units);
options.add(flip_coordinates);

pdal::drivers::qfit::Reader reader(options);
reader.initialize();

Expand Down

0 comments on commit c22540e

Please sign in to comment.