Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
ElementPtr OsmApiDbSqlChangesetFileWriter::_getChangeElement(ConstElementPtr element)
{
  ElementPtr changeElement;
  switch (element->getElementType().getEnum())
  {
    case ElementType::Node:
      changeElement.reset(new Node(*boost::dynamic_pointer_cast<const Node>(element)));
      break;
    case ElementType::Way:
      changeElement.reset(new Way(*boost::dynamic_pointer_cast<const Way>(element)));
      break;
   case ElementType::Relation:
      changeElement.reset(new Relation(*boost::dynamic_pointer_cast<const Relation>(element)));
      break;
    default:
      throw HootException("Unknown element type");
  }
  return changeElement;
}