本文整理汇总了C++中Way::getCircularError方法的典型用法代码示例。如果您正苦于以下问题:C++ Way::getCircularError方法的具体用法?C++ Way::getCircularError怎么用?C++ Way::getCircularError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Way
的用法示例。
在下文中一共展示了Way::getCircularError方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isFiltered
bool WayBufferFilter::isFiltered(const Way& w) const
{
try
{
bool result = true;
shared_ptr<LineString> ls2 = ElementConverter(_map).
convertToLineString(_map->getWay(w.getId()));
if (fabs((w.getCircularError() + _buffer) - _bufferAccuracy) > 0.1)
{
_bufferAccuracy = w.getCircularError() + _buffer;
_baseBuffered.reset(_baseLs->buffer(_bufferAccuracy, 3,
geos::operation::buffer::BufferOp::CAP_ROUND));
_boundsPlus = *_baseBuffered->getEnvelopeInternal();
}
if (ls2->getEnvelopeInternal()->intersects(_boundsPlus))
{
shared_ptr<Geometry> g(_baseBuffered->intersection(ls2.get()));
double ls2Length = ls2->getLength();
double ls2IntersectLength = g->getLength();
if (ls2IntersectLength / ls2Length >= _matchPercent)
{
shared_ptr<Geometry> ls2Buffer(ls2->buffer(_bufferAccuracy, 3,
geos::operation::buffer::BufferOp::CAP_ROUND));
g.reset(ls2Buffer->intersection(_baseLs.get()));
double ls1IntersectLength = g->getLength();
if (ls1IntersectLength / _baseLength >= _matchPercent)
{
result = false;
}
}
}
return result;
}
catch (geos::util::TopologyException& e)
{
LOG_WARN(ElementConverter(_map).convertToLineString(_map->getWay(w.getId())));
throw e;
}
}