Package de.hpi.eworld.model.db.data

Examples of de.hpi.eworld.model.db.data.EdgeModel


    List<String> idList = new ArrayList<String>();
    HashMap<String, List<String>> fromToNodes = new HashMap<String, List<String>>();
    String id;
    stringBuffer.append(XMLStart);
    stringBuffer.append(TEXT_1);
    EdgeModel edge;
    int duplicates = 0;
    int sameNodes = 0;
    for (Iterator<EdgeModel> i = elementList.iterator(); i.hasNext();) {
      edge = (EdgeModel) i.next();
      id = edge.getInternalID();

      // ignore duplicate ids
      if (idList.contains(id)) {
        // id = id + "I";
        logger.info("Found duplicate edge! ID=" +
            edge.getInternalID());
        duplicates++;
        continue;
      }
      // ignore edges with same from and to node
      // Assumption: two edges with same to and from node are equal
      List<String> toIDList = fromToNodes.get(
          edge.getFromNode().getInternalID());
      boolean sameFound = false;

      if (toIDList == null) {
        //can't be duplicate
        //create new list and add 'to' node to it
        List<String> list = new ArrayList<String>();
        list.add(edge.getToNode().getInternalID());
        fromToNodes.put(edge.getFromNode().getInternalID(), list);
      } else {
        for (String toID : toIDList) {
          if (toID.equals(edge.getToNode().getInternalID())) {
            logger.info("Found edge with same nodes as a previous edge! ID=" +
                edge.getInternalID());
            sameNodes++;
            sameFound = true;
            break;
          }
        }
        if (sameFound) {
          continue;
        }
        // no duplicate
        // add 'to' node to the list belonging to 'from' node
        fromToNodes.get(edge.getFromNode().getInternalID()).add(
            edge.getToNode().getInternalID());
      }
     
     
      idList.add(id);

      if (!((NodeModel) edge.getFromNode()).getInternalID().equals(
          ((NodeModel) edge.getToNode()).getInternalID())) {
        stringBuffer.append(TEXT_2);
        stringBuffer.append(id);
        stringBuffer.append(TEXT_3);
        stringBuffer
            .append(((NodeModel) edge.getFromNode()).getInternalID());
        stringBuffer.append(TEXT_4);
        stringBuffer.append(((NodeModel) edge.getToNode()).getInternalID());
        stringBuffer.append(TEXT_5);
        stringBuffer.append(edge.getPriority());
        stringBuffer.append(TEXT_6);
        stringBuffer.append(edge.getNoOfLanes());
        stringBuffer.append(TEXT_7);
        stringBuffer.append(edge.getMaxspeed() * speedFactor);
        stringBuffer.append(TEXT_8);
      }
      //stringBuffer.append(TEXT_9);
    }
    stringBuffer.append(TEXT_10);
 
View Full Code Here


        nodes.add((NodeModel) modelElement);
      } else if (modelElement instanceof TrafficLightModel){
        trafficLights.add((TrafficLightModel) modelElement);
      } else if (modelElement instanceof WayModel) {
        final Set<EdgeModel> alreadyInsertedEdges = new HashSet<EdgeModel>();
        EdgeModel currentEdge = ((WayModel) modelElement).getFirstForwardEdge();
        while (currentEdge != null) {
          alreadyInsertedEdges.add(currentEdge);
          edges.add(currentEdge);
          currentEdge = currentEdge.getNextEdge();
          if (alreadyInsertedEdges.contains(currentEdge)) {
            break;
          }
        }
      }
View Full Code Here

 
  @Test
  public void testSetEvent() {
    NodeModel from = new NodeModel(0, 0);
    NodeModel to = new NodeModel(1, 1);
    EdgeModel e = new EdgeModel("testModelID", from, to);
    EdgeLocationModel edgeLocation = new EdgeLocationModel(e, 0, 0);
    RoadEventModel roadEvent = new RoadEventModel(RoadEventModel.Type.Accident, edgeLocation);
    timeline.getTimeline().setEvent(roadEvent);
    Assert.assertTrue(timeline.getTimeline().getCurrentEvent() == roadEvent);
  }
View Full Code Here

          Map<String, VisualizerTrafficLight> localMap = new HashMap<String, VisualizerTrafficLight>();
          trafficLights.put(externalID, localMap);
         
          for(TrafficLightPhase phase : traciClient.getTrafficLightStatus(externalID)) {
            String precRoadID = new String(phase.getPrecRoad());
            EdgeModel predEdge = trafficLight.findEdgeByID(precRoadID);
           
            Point2D center = predEdge.getToNode().getPosition().projected();
            Point2D prePos = predEdge.getFromNode().getPosition().projected();
            Point2D diff = new Point2D.Double(prePos.getX() - center.getX(), prePos.getY() - center.getY());
            double squareRoot = Math.sqrt(diff.getX() * diff.getX() + diff.getY() * diff.getY());
            Point2D normalized = new Point2D.Double(diff.getX() / squareRoot, diff.getY()/ squareRoot);
            double angle = Math.acos(normalized.getX());
            if(normalized.getY() > 0) {
View Full Code Here

    Color item;
    TrafficLightStateList tls;

    for (i = 0; i < logicTable.getRowCount(); i++) {
      // Get Edge at corresponding row
      EdgeModel edge = currentIncomingEdges.get(i);

      tls = new TrafficLightStateList();

      for (j = 0; j < logicTable.getColumnCount()-1; j++) {
        item = ((TLSCellRenderer) logicTable.getDefaultRenderer(Object.class)).getTrafficLightStates().get(i).get(j);
View Full Code Here

          greensCorrect = false;
        }
        // if two, do they belong to the same way?
        if (greens.size() == 2) {
          // get corresponding edges
          EdgeModel firstEdge = currentIncomingEdges.get(greens.get(0));
          EdgeModel secondEdge = currentIncomingEdges.get(greens.get(1));
 
          // same way?
          if (!firstEdge.getParentWay().getDescription().equals(
              secondEdge.getParentWay().getDescription())) {
            greensCorrect = false;
          }
        }
        greens.clear();
      }
View Full Code Here

  @Test
  public void testWayItem() {
    WayModel way = new WayModel("Way");
    NodeModel from = new NodeModel(0, 0);
    NodeModel to = new NodeModel(1, 1);
    EdgeModel e = new EdgeModel("testModelID", from, to);
    way.addForwardEdge(e);
    AbstractView<Observable> viewObject = AbstractViewFactory.createView(way);
    Assert.assertNotNull(viewObject);
    Assert.assertTrue(viewObject instanceof AbstractView<?>);
    Assert.assertSame(way, viewObject.getModelElement());
View Full Code Here

 
  @Test
  public void testRoadEventItem() {
    NodeModel from = new NodeModel(0, 0);
    NodeModel to = new NodeModel(1, 1);
    EdgeModel e = new EdgeModel("testModelID", from, to);
    EdgeLocationModel edgeLocation = new EdgeLocationModel(e, 0, 0);
    RoadEventModel roadEvent = new RoadEventModel(RoadEventModel.Type.Accident, edgeLocation);
    AbstractView<Observable> viewItem = AbstractViewFactory.createView(roadEvent);
    Assert.assertNotNull(viewItem);
    Assert.assertTrue(viewItem instanceof AbstractView<?>);
View Full Code Here

    }

    if (!checkBelongToMap(edges, dataset, true))
      return;

    EdgeModel edge;
    StatLane statLane;

    for (StatInterval interval : dataset.getIntervals()) {
      for (StatEdge statEdge : interval.getStatEdges()) {

        if ((edge = edges.get(statEdge.getId())) == null) {
          continue;
        } else {
          // retrieve lane info
          List<LaneModel> lanes = edge.getLanes();
          List<StatLane> statLanes = statEdge.getStatLanes();
          if (((lanes.size() == 1) && (statEdge.numLanes() == 0))
              || (lanes.size() == statEdge.numLanes())) {
            for (int i = 0; i < statLanes.size(); i++) {
              statLane = statLanes.get(i);
              statLane.setStreetName(edge.getParentWay()
                  .getDescription());
              statLane.setMaxSpeed(lanes.get(i).getMaxSpeed() / 3.6);
              statLane.setMinSpeed(lanes.get(i).getMinSpeed() / 3.6);
            }
          } else {
            continue;
          }
          // retrieve edge info
          statEdge
              .setStreetName(edge.getParentWay().getDescription());
          statEdge.setMaxSpeed(edge.getMaxspeed() / 3.6);
          statEdge.setMinSpeed(edge.getMinspeed() / 3.6);
          statEdge.setRoadPriority(edge.getPriority());
        }// end else
      }// end for edges
    }// end for intervals

    logger.info("Addition of map data to new statistics data succesfull!");
View Full Code Here

   
    double lat;
    double lon;
    String key;
    for(ModelElement element : modelElements.values()) {
      EdgeModel min_edge=null;
      WayModel min_way=null;
      double min_dist = Double.MAX_VALUE;
     
      // check whether the model element is a point of interest and
      // the poi is of type crossing, gate or stop_sign
      if(!(element instanceof PointOfInterest))
        continue;
     
      PointOfInterest poi = (PointOfInterest) element;
     
      if(!(poi.getDescription().equals("crossing") || poi.getDescription().equals("gate") || poi.getDescription().equals("stop_sign")) )
        continue;
       
      lat = poi.getLatitude();
      lon = poi.getLongitude();
      String poi_lat = Double.toString(lat);
      String poi_long = Double.toString(lon);     
      double key_lat = Double.parseDouble(poi_lat.substring(0,(poi_lat.split("\\.")[0].length()) + 1 + MapSegmentationPrecission));
      double key_lon = Double.parseDouble(poi_long.substring(0, (poi_long.split("\\.")[0].length()) + 1 + MapSegmentationPrecission));
     
      // create a cluster around poi
      double[] keys_lat = new double[(LatitudeDifference * 2) + 1];
      keys_lat[0] = key_lat;
      int index_lat = 1;
     
      for (int i = 1; i < LatitudeDifference + 1; i++) {
        keys_lat[index_lat] = key_lat- i / Math.pow(10, (MapSegmentationPrecission));
        index_lat++;
        keys_lat[index_lat] = key_lat+ i / Math.pow(10, (MapSegmentationPrecission));
        index_lat++;
      }

      double[] keys_lon = new double[(LongitudeDifference * 2) + 1];
      keys_lon[0] = key_lon;
      int index_lon = 1;

      for (int j = 1; j < LongitudeDifference + 1; j++) {
        keys_lon[index_lon] = key_lon- j / Math.pow(10, (MapSegmentationPrecission));
        index_lon++;
        keys_lon[index_lon] = key_lon+ j / Math.pow(10, (MapSegmentationPrecission));
        index_lon++;
      }

      // search for all ways in the cluster and calculate the distance for each edge to poi
      for(double lati : keys_lat) {
        for(double longi : keys_lon) {
          String key1="";
          String lat_key = Double.toString(lati);
          String key2="";
          String long_key = Double.toString(longi);

          try{
            key1 = lat_key.substring(0, lat_key.split("\\.")[0].length() + 1 + MapSegmentationPrecission);
          } catch(Exception e) {
            while(key1.length()< lat_key.split("\\.")[0].length() + 1 + MapSegmentationPrecission-1)
              key1 =key1+"0";
          }

          try{
            key2 = long_key.substring(0, long_key.split("\\.")[0].length() + 1 + MapSegmentationPrecission);
          } catch(Exception e) {
            while(key2.length()< long_key.split("\\.")[0].length() + 1 + MapSegmentationPrecission-1)
              key2 =key2+"0";
          }

          key =key1+":" +key2;

          if(clusteredWays.containsKey(key)) {
            for(String wayId: clusteredWays.get(key)) {
              WayModel way =(WayModel)modelElements.get(wayId);
              if(way!=null) {
                for(EdgeModel edge:way.getForwardEdges()) {
                  double dist = Line2D.ptSegDist(
                    edge.getFromNode().getLatitude(),
                    edge.getFromNode().getLongitude(),
                    edge.getToNode().getLatitude(),
                    edge.getToNode().getLongitude(),
                    lat,
                    lon
                  );

                  if(dist < min_dist) {
                    min_dist = dist;
                    min_edge = edge;
                    min_way = way;
                  }
                }
              }
            }
          }
        }
      }

      if(min_dist > MinDistanceToPOI) {
        continue;
      }

      // check whether start or end point of an edge is the poi
      if(
          min_edge.getFromNode().getLatitude() == poi.getLatitude()
        &&  min_edge.getFromNode().getLongitude() == poi.getLongitude()
      ) {
        continue;
      }

      if(
          min_edge.getToNode().getLatitude() == poi.getLatitude()
        &&  min_edge.getToNode().getLongitude() == poi.getLongitude()
      ) {
        continue;
      }

      //create new Node on POI
      NodeModel new_Node=new NodeModel(poi.getLatitude(),poi.getLongitude());

      //create new Edges with remaining attributes
      EdgeModel firstForwardEdge = (EdgeModel) min_edge.clone();
      firstForwardEdge.setFromNode(min_edge.getFromNode());
      firstForwardEdge.setToNode(new_Node);

      EdgeModel firstBackwardEdge = (EdgeModel) min_edge.clone();
      firstBackwardEdge.setToNode(new_Node);
      firstBackwardEdge.setFromNode(min_edge.getToNode());

      EdgeModel secondForwardEdge = (EdgeModel) min_edge.clone();
      secondForwardEdge.setFromNode(new_Node);
      secondForwardEdge.setToNode(min_edge.getToNode());

      EdgeModel secondBackwardEdge = (EdgeModel) min_edge.clone();
      secondBackwardEdge.setToNode(min_edge.getFromNode());
      secondBackwardEdge.setFromNode(new_Node);

      //add edges to way
      if(min_edge.getComplementaryEdge()!=null){
        min_way.splitEdge(min_edge, firstForwardEdge, secondForwardEdge,true);
        min_way.splitEdge(min_edge.getComplementaryEdge(), firstBackwardEdge, secondBackwardEdge,false);
View Full Code Here

TOP

Related Classes of de.hpi.eworld.model.db.data.EdgeModel

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.