Path: blob/main/src/netimport/vissim/tempstructs/NIVissimNodeDef_Edges.cpp
169684 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file NIVissimNodeDef_Edges.cpp14/// @author Daniel Krajzewicz15/// @author Michael Behrisch16/// @date Sept 200217///18// -------------------19/****************************************************************************/20#include <config.h>21222324#include <string>25#include <map>26#include <algorithm>27#include <cassert>28#include <utils/geom/Boundary.h>29#include "NIVissimNodeParticipatingEdgeVector.h"30#include "NIVissimNodeDef.h"31#include "NIVissimEdge.h"32#include "NIVissimNodeDef_Edges.h"33#include "NIVissimDisturbance.h"34#include "NIVissimConnection.h"353637// ===========================================================================38// method definitions39// ===========================================================================40NIVissimNodeDef_Edges::NIVissimNodeDef_Edges(int id,41const std::string& name, const NIVissimNodeParticipatingEdgeVector& edges)42: NIVissimNodeDef(id, name), myEdges(edges) {}434445NIVissimNodeDef_Edges::~NIVissimNodeDef_Edges() {46for (NIVissimNodeParticipatingEdgeVector::iterator i = myEdges.begin(); i != myEdges.end(); i++) {47delete (*i);48}49myEdges.clear();50}515253bool54NIVissimNodeDef_Edges::dictionary(int id, const std::string& name,55const NIVissimNodeParticipatingEdgeVector& edges) {56NIVissimNodeDef_Edges* o = new NIVissimNodeDef_Edges(id, name, edges);57if (!NIVissimNodeDef::dictionary(id, o)) {58delete o;59return false;60}61return true;62}636465/*66void67NIVissimNodeDef_Edges::searchAndSetConnections() {68std::vector<int> connections;69std::vector<int> edges;70Boundary boundary;71for (NIVissimNodeParticipatingEdgeVector::const_iterator i = myEdges.begin(); i != myEdges.end(); i++) {72NIVissimNodeParticipatingEdge* edge = *i;73NIVissimConnection* c =74NIVissimConnection::dictionary(edge->getID());75NIVissimEdge* e =76NIVissimEdge::dictionary(edge->getID());77if (c != 0) {78connections.push_back(edge->getID());79boundary.add(c->getFromGeomPosition());80boundary.add(c->getToGeomPosition());81c->setNodeCluster(myID);82}83if (e != 0) {84edges.push_back(edge->getID());85boundary.add(e->getGeomPosition(edge->getFromPos()));86boundary.add(e->getGeomPosition(edge->getToPos()));87}88}89NIVissimConnectionCluster* c =90new NIVissimConnectionCluster(connections, boundary, myID, edges);91for (std::vector<int>::iterator j = edges.begin(); j != edges.end(); j++) {92NIVissimEdge* edge = NIVissimEdge::dictionary(*j);93edge->myConnectionClusters.push_back(c);94}95}96*/979899double100NIVissimNodeDef_Edges::getEdgePosition(int edgeid) const {101for (NIVissimNodeParticipatingEdgeVector::const_iterator i = myEdges.begin(); i != myEdges.end(); i++) {102NIVissimNodeParticipatingEdge* edge = *i;103if (edge->getID() == edgeid) {104return (edge->getFromPos() + edge->getToPos()) / (double) 2.0;105}106}107return -1;108}109110111/****************************************************************************/112113114