Skip to content

Commit

Permalink
Use raster types as PDAL types when creating dimensions.
Browse files Browse the repository at this point in the history
  • Loading branch information
abellgithub committed Mar 13, 2018
1 parent be953b8 commit 590a501
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 8 deletions.
12 changes: 9 additions & 3 deletions filters/ColorizationFilter.cpp
Expand Up @@ -131,6 +131,12 @@ void ColorizationFilter::addArgs(ProgramArgs& args)

void ColorizationFilter::initialize()
{
gdal::registerDrivers();

m_raster.reset(new gdal::Raster(m_rasterFilename));
auto bandTypes = m_raster->getPDALDimensionTypes();
m_raster->close();

if (m_dimSpec.empty())
m_dimSpec = { "Red", "Green", "Blue" };

Expand All @@ -141,6 +147,8 @@ void ColorizationFilter::initialize()
{
BandInfo bi = parseDim(dim, defaultBand);
defaultBand = bi.m_band + 1;
if (bi.m_band < bandTypes.size())
bi.m_type = bandTypes[bi.m_band];
m_bands.push_back(bi);
}
catch(const std::string& what)
Expand All @@ -149,15 +157,13 @@ void ColorizationFilter::initialize()
}
}

gdal::registerDrivers();
}


void ColorizationFilter::addDimensions(PointLayoutPtr layout)
{
for (auto& band : m_bands)
band.m_dim = layout->registerOrAssignDim(band.m_name,
Dimension::defaultType(Dimension::Id::Red));
band.m_dim = layout->registerOrAssignDim(band.m_name, band.m_type);
}


Expand Down
3 changes: 2 additions & 1 deletion filters/ColorizationFilter.hpp
Expand Up @@ -59,7 +59,7 @@ class PDAL_DLL ColorizationFilter : public Filter, public Streamable
{
BandInfo(const std::string& name, uint32_t band, double scale) :
m_name(name), m_band(band), m_scale(scale),
m_dim(Dimension::Id::Unknown)
m_dim(Dimension::Id::Unknown), m_type(Dimension::Type::Double)
{}

BandInfo() : m_band(0), m_scale(1.0), m_dim(Dimension::Id::Unknown)
Expand All @@ -69,6 +69,7 @@ class PDAL_DLL ColorizationFilter : public Filter, public Streamable
uint32_t m_band;
double m_scale;
Dimension::Id m_dim;
Dimension::Type m_type;
};


Expand Down
7 changes: 3 additions & 4 deletions io/GDALReader.cpp
Expand Up @@ -78,6 +78,7 @@ void GDALReader::initialize()
}

m_count = m_raster->width() * m_raster->height();
m_bandTypes = m_raster->getPDALDimensionTypes();
m_raster->close();
}

Expand Down Expand Up @@ -111,7 +112,7 @@ void GDALReader::addDimensions(PointLayoutPtr layout)
{
std::ostringstream oss;
oss << "band-" << (i + 1);
layout->registerOrAssignDim(oss.str(), Dimension::Type::Double);
layout->registerOrAssignDim(oss.str(), m_bandTypes[i]);
}
}

Expand Down Expand Up @@ -142,13 +143,11 @@ point_count_t GDALReader::read(PointViewPtr view, point_count_t num)
}

std::vector<uint8_t> band;
std::vector<Dimension::Type> band_types =
m_raster->getPDALDimensionTypes();

for (int b = 0; b < m_raster->bandCount(); ++b)
{
// Bands count from 1
switch (band_types[b])
switch (m_bandTypes[b])
{
case Dimension::Type::Signed8:
readBandData<int8_t>(b + 1, view, count);
Expand Down
1 change: 1 addition & 0 deletions io/GDALReader.hpp
Expand Up @@ -72,6 +72,7 @@ class PDAL_DLL GDALReader : public Reader
void readBandData(int band, PointViewPtr view, point_count_t count);

std::unique_ptr<gdal::Raster> m_raster;
std::vector<Dimension::Type> m_bandTypes;
point_count_t m_index;

};
Expand Down

0 comments on commit 590a501

Please sign in to comment.