ElementPtr ElementSorter::readNextElement() { ElementPtr result; ConstElementPtr cr; if (_nodeIndex != _nodeIds.size()) { cr = _source->getNode(_nodeIds[_nodeIndex++]); } else if (_wayIndex != _wayIds.size()) { cr = _source->getWay(_wayIds[_wayIndex++]); } else if (_relationIndex != _relationIds.size()) { cr = _source->getRelation(_relationIds[_relationIndex++]); } if (cr.get()) { result.reset(cr->clone()); } return result; }
MatchClassification MultiaryScoreCache::getScore(ConstElementPtr e1, ConstElementPtr e2) { _lastExplainText.clear(); OsmMapPtr tmp(new OsmMap(_map->getProjection())); tmp->addElement(ElementPtr(e1->clone())); tmp->addElement(ElementPtr(e2->clone())); boost::scoped_ptr<Match> m( _matchCreator->createMatch(tmp, e1->getElementId(), e2->getElementId())); // default to a hard miss. MatchClassification result(0, 1, 0); // if the MatchCreator returns a valid match class, use that as the score. if (m) { result = m->getClassification(); _lastExplainText = m->explain(); } return result; }