bool NIImporter_DlrNavteq::ConnectedLanesHandler::report(const std::string& result) { if (result[0] == '#') { return true; } StringTokenizer st(result, StringTokenizer::TAB); if (st.size() == 1) { return true; // one line with the number of data containing lines in it (also starts with a comment # since ersion 6.5) } assert(st.size() >= 7); const std::string nodeID = st.next(); const std::string vehicleType = st.next(); const std::string fromLaneS = st.next(); const std::string toLaneS = st.next(); const std::string throughTraffic = st.next(); const std::string startEdge = st.next(); const std::string endEdge = st.get(st.size() - 1); NBEdge* from = myEdgeCont.retrieve(startEdge); if (from == nullptr) { WRITE_WARNING("Ignoring prohibition from unknown start edge '" + startEdge + "'"); return true; } NBEdge* to = myEdgeCont.retrieve(endEdge); if (to == nullptr) { WRITE_WARNING("Ignoring prohibition from unknown end edge '" + endEdge + "'"); return true; } int fromLane = StringUtils::toInt(fromLaneS) - 1; // one based if (fromLane < 0 || fromLane >= from->getNumLanes()) { WRITE_WARNING("Ignoring invalid lane index '" + fromLaneS + "' in connection from edge '" + startEdge + "' with " + toString(from->getNumLanes()) + " lanes"); return true; } int toLane = StringUtils::toInt(toLaneS) - 1; // one based if (toLane < 0 || toLane >= to->getNumLanes()) { WRITE_WARNING("Ignoring invalid lane index '" + toLaneS + "' in connection to edge '" + endEdge + "' with " + toString(to->getNumLanes()) + " lanes"); return true; } if (!from->addLane2LaneConnection(fromLane, to, toLane, NBEdge::L2L_USER, true)) { if (OptionsCont::getOptions().getBool("show-errors.connections-first-try")) { WRITE_WARNING("Could not set loaded connection from '" + from->getLaneID(fromLane) + "' to '" + to->getLaneID(toLane) + "'."); } // set as to be re-applied after network processing // if this connection runs across a node cluster it may not be possible to set this const bool warnOnly = st.size() > 7; myEdgeCont.addPostProcessConnection(from->getID(), fromLane, to->getID(), toLane, false, true, NBEdge::UNSPECIFIED_CONTPOS, NBEdge::UNSPECIFIED_VISIBILITY_DISTANCE, NBEdge::UNSPECIFIED_SPEED, PositionVector::EMPTY, false, warnOnly); } // ensure that connections for other lanes are guessed if not specified from->declareConnectionsAsLoaded(NBEdge::INIT); from->getLaneStruct(fromLane).connectionsDone = true; return true; }