本文整理汇总了C++中Stage::getSpatialReference方法的典型用法代码示例。如果您正苦于以下问题:C++ Stage::getSpatialReference方法的具体用法?C++ Stage::getSpatialReference怎么用?C++ Stage::getSpatialReference使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Stage
的用法示例。
在下文中一共展示了Stage::getSpatialReference方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
void Stage::execute(StreamPointTable& table, std::list<Stage *>& stages)
{
std::vector<bool> skips(table.capacity());
std::list<Stage *> filters;
SpatialReference srs;
// Separate out the first stage.
Stage *reader = stages.front();
// Build a list of all stages except the first. We may have a writer in
// this list in addition to filters, but we treat them in the same way.
auto begin = stages.begin();
begin++;
std::copy(begin, stages.end(), std::back_inserter(filters));
for (Stage *s : stages)
{
s->ready(table);
srs = s->getSpatialReference();
if (!srs.empty())
table.setSpatialReference(srs);
}
// Loop until we're finished. We handle the number of points up to
// the capacity of the StreamPointTable that we've been provided.
bool finished = false;
while (!finished)
{
// Clear the spatial reference when processing starts.
table.clearSpatialReferences();
PointId idx = 0;
PointRef point(table, idx);
point_count_t pointLimit = table.capacity();
// When we get false back from a reader, we're done, so set
// the point limit to the number of points processed in this loop
// of the table.
for (PointId idx = 0; idx < pointLimit; idx++)
{
point.setPointId(idx);
finished = !reader->processOne(point);
if (finished)
pointLimit = idx;
}
srs = reader->getSpatialReference();
if (!srs.empty())
table.setSpatialReference(srs);
// When we get a false back from a filter, we're filtering out a
// point, so add it to the list of skips so that it doesn't get
// processed by subsequent filters.
for (Stage *s : filters)
{
for (PointId idx = 0; idx < pointLimit; idx++)
{
if (skips[idx])
continue;
point.setPointId(idx);
if (!s->processOne(point))
skips[idx] = true;
}
srs = s->getSpatialReference();
if (!srs.empty())
table.setSpatialReference(srs);
}
// Yes, vector<bool> is terrible. Can do something better later.
for (size_t i = 0; i < skips.size(); ++i)
skips[i] = false;
table.reset();
}
for (Stage *s : stages)
s->done(table);
}