Skip to content

Commit

Permalink
changed dimensions for fewer elses
Browse files Browse the repository at this point in the history
  • Loading branch information
kylemann16 committed Sep 21, 2018
1 parent a30fcfe commit b68aa57
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 54 deletions.
63 changes: 10 additions & 53 deletions plugins/i3s/io/EsriReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,31 +114,13 @@ namespace pdal
std::string readName = attributes[i]["name"].asString();
int key = std::stoi(attributes[i]["key"].asString());
data.key = key;

if(attributes[i].isMember("valueType"))
{
std::string type = attributes[i]["valueType"].asString();
data.dataType = type;
}

//remove quotes from json object
readName.erase(
std::remove(readName.begin(), readName.end(), '\"'),
readName.end());

//remove random underscores
readName.erase(
std::remove(readName.begin(), readName.end(), '_'),
readName.end());

if (readName == "INTENSITY")
{
layout->registerDim(Dimension::Id::Intensity);
m_dimMap[Dimension::Id::Intensity] = data;
}
else if (readName == "ELEVATION")
{

}
else if (readName == "RGB")
{
layout->registerDim(Dimension::Id::Red);
Expand All @@ -148,40 +130,11 @@ namespace pdal
// we'll use Red as our indicator that RGB exists.
m_dimMap[Dimension::Id::Red] = data;
}
else if (readName == "FLAGS")
else if (m_dimensions.find(readName) != m_dimensions.end())
{
layout->registerDim(Dimension::Id::Flag);
m_dimMap[Dimension::Id::Flag] = data;
}
else if (readName == "RETURNS")
{
layout->registerDim(Dimension::Id::NumberOfReturns);
m_dimMap[Dimension::Id::NumberOfReturns] = data;
}
else if (readName == "CLASSCODE")
{
layout->registerDim(Dimension::Id::ClassFlags);
m_dimMap[Dimension::Id::ClassFlags] = data;
}
else if (readName == "POINTSRCID")
{
layout->registerDim(Dimension::Id::PointSourceId);
m_dimMap[Dimension::Id::PointSourceId] = data;
}
else if (readName == "USERDATA")
{
layout->registerDim(Dimension::Id::UserData);
m_dimMap[Dimension::Id::UserData] = data;
}
else if (readName == "GPSTIME")
{
layout->registerDim(Dimension::Id::GpsTime);
m_dimMap[Dimension::Id::GpsTime] = data;
}
else if (readName == "SCANANGLE")
{
layout->registerDim(Dimension::Id::ScanAngleRank);
m_dimMap[Dimension::Id::ScanAngleRank] = data;
layout->registerDim(m_dimensions.at(readName));
m_dimMap[m_dimensions.at(readName)] = data;

}
else if (attributes[i].isMember("attributeValues"))
{
Expand Down Expand Up @@ -448,11 +401,15 @@ namespace pdal
setAs<int8_t>(dimId, data, selected, view, startId);
else if(dataType == "Int16")
setAs<int16_t>(dimId, data, selected, view, startId);
else if(dataType == "Int32")
setAs<int32_t>(dimId, data, selected, view, startId);
else if(dataType == "Int64")
setAs<int64_t>(dimId, data, selected, view, startId);
else if(dataType == "Double")
setAs<double>(dimId, data, selected, view, startId);
else if(dataType == "Float64")
setAs<double>(dimId, data, selected, view, startId);
else if(dataType == "Float")
else if(dataType == "Float32")
setAs<float>(dimId, data, selected, view, startId);
}
}
Expand Down
13 changes: 12 additions & 1 deletion plugins/i3s/io/EsriReader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class EsriReader : public Reader
virtual std::vector<char> fetchBinary(std::string url, std::string attNum,
std::string ext) const = 0;

void createView(std::string localUrl, PointViewPtr view);


std::unique_ptr<ILeStream> m_stream;
std::unique_ptr<arbiter::Arbiter> m_arbiter;
Expand Down Expand Up @@ -102,6 +102,16 @@ class EsriReader : public Reader
std::string dataType;
};
std::map<Dimension::Id, dimData> m_dimMap;
std::map<std::string, Dimension::Id> m_dimensions {
{"INTENSITY", Dimension::Id::Intensity},
{"CLASS_CODE", Dimension::Id::ClassFlags},
{"FLAGS", Dimension::Id::Flag},
{"RETURNS", Dimension::Id::NumberOfReturns},
{"USER_DATA", Dimension::Id::UserData},
{"POINT_SRC_ID",Dimension::Id::PointSourceId},
{"GPS_TIME", Dimension::Id::GpsTime},
{"SCAN_ANGLE", Dimension::Id::ScanAngleRank}
};

template<typename T>
void setAs(Dimension::Id id, const std::vector<char>& data,
Expand All @@ -124,6 +134,7 @@ class EsriReader : public Reader
virtual void ready(PointTableRef table) override;
virtual point_count_t read(PointViewPtr view, point_count_t count) override;
virtual void done(PointTableRef table) override;
void createView(std::string localUrl, PointViewPtr view);
BOX3D parseBox(Json::Value base);
};

Expand Down

0 comments on commit b68aa57

Please sign in to comment.