org.matsim.core.utils.collections.QuadTree.getDisk()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(9.6k)|赞(0)|评价(0)|浏览(80)

本文整理了Java中org.matsim.core.utils.collections.QuadTree.getDisk方法的一些代码示例,展示了QuadTree.getDisk的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。QuadTree.getDisk方法的具体详情如下:
包路径:org.matsim.core.utils.collections.QuadTree
类名称:QuadTree
方法名:getDisk

QuadTree.getDisk介绍

[英]Gets all objects within a certain distance around x/y
[中]获取x/y周围一定距离内的所有对象

代码示例

代码示例来源:origin: matsim-org/matsim

public Collection<T> getRing(final double x, final double y, final double outerRadius, final double innerradius) {
    Collection<T> locations = super.getDisk(x, y, outerRadius);
    Collection<T> innerLocations = super.getDisk(x, y, innerradius);
    locations.removeAll(innerLocations);
    return locations;
  }
}

代码示例来源:origin: matsim-org/matsim

public Collection<TransitRouterNetworkNode> getNearestNodes(final Coord coord, final double distance) {
  return this.qtNodes.getDisk(coord.getX(), coord.getY(), distance);
}

代码示例来源:origin: matsim-org/matsim

public Collection<TransitRouterNetworkNode> getNearestNodes(final Coord coord, final double distance) {
  return this.qtNodes.getDisk(coord.getX(), coord.getY(), distance);
}

代码示例来源:origin: matsim-org/matsim

public Collection<TransitStopFacility> getNearestTransitStopFacilities(final Coord coord, final double distance) {
  return this.quadTree.getDisk(coord.getX(), coord.getY(), distance);
}

代码示例来源:origin: matsim-org/matsim

/**
 * finds the nodes within distance to <code>coord</code>
 *
 * @param coord the coordinate around which nodes should be located
 * @param distance the maximum distance a node can have to <code>coord</code> to be found
 * @return all nodes within distance to <code>coord</code>
 */
@Override public Collection<Node> getNearestNodes(final Coord coord, final double distance) {
  if (this.nodeQuadTree == null) { buildQuadTree(); }
  return this.nodeQuadTree.getDisk(coord.getX(), coord.getY(), distance);
}

代码示例来源:origin: matsim-org/matsim

/**
 * finds the nodes within distance to <code>coord</code>
 *
 * @param coord the coordinate around which nodes should be located
 * @param distance the maximum distance a node can have to <code>coord</code> to be found
 * @return all nodes within distance to <code>coord</code>
 */
@Override public Collection<ActivityFacility> getNearestFacilities(final Coord coord, final double distance) {
  if (this.facilitiesQuadTree == null) { buildQuadTree(); }
  return this.facilitiesQuadTree.getDisk(coord.getX(), coord.getY(), distance);
}

代码示例来源:origin: matsim-org/matsim

private Map<TransitStopFacility, HashMap<WrappedTransitRouteStop, TransferEntryPointer>> createTransfers(Map<TransitStopFacility, Set<Id<TransitRoute>>> transitStopFacilities2RouteIdsServed, Map<WrappedTransitRouteStop, Id<TransitRoute>> routeStop2routeId, double maxBeelineWalkConnectionDistance) {
  Map<TransitStopFacility, HashMap<WrappedTransitRouteStop, TransferEntryPointer>> stop2TransitRouteStop2Transfers = new HashMap<>();
  
  QuadTree<WrappedTransitRouteStop> transitRouteStopQuadTree = this.createTransitRouteStopQuadTree(routeStop2routeId.keySet());
  
  // create transfers for all transit route stops if they're located less than beelineWalkConnectionDistance from each other
  for (TransitStopFacility sourceStop : transitStopFacilities2RouteIdsServed.keySet()) {
    // (just goes through all stops)
    HashMap<WrappedTransitRouteStop, TransferEntryPointer> transfersFromThis = new HashMap<WrappedTransitRouteStop, TransferEntryPointer>();
    
    for (WrappedTransitRouteStop destinationStop : transitRouteStopQuadTree.getDisk(sourceStop.getCoord().getX(), sourceStop.getCoord().getY(), maxBeelineWalkConnectionDistance)) {
      // (goes through all stops within walkConnectionDistance)
      double transferTime = this.raptorDisutility.getTransferTime(sourceStop.getCoord(), destinationStop.transitRouteStop.getStopFacility().getCoord());
      transfersFromThis.put(destinationStop, new TransferEntryPointer(-1, transferTime, destinationStop, routeStop2routeId.get(destinationStop)));
      // (memorize: (1) which stop the walk goes to; (2) route id associated with that stop (presumably one stop per route even at same location)
    }
    
    stop2TransitRouteStop2Transfers.put(sourceStop, transfersFromThis);
  }
  
  int transfersAdded = 0;
  for (HashMap<WrappedTransitRouteStop, TransferEntryPointer> routeStop2Transfers : stop2TransitRouteStop2Transfers.values()) {
    transfersAdded += routeStop2Transfers.size();
  }
  log.info("Added " + transfersAdded + " transfers (from each transit stop facility to each other transit route stop within " + maxBeelineWalkConnectionDistance + "m beeline distance.");
  
  return stop2TransitRouteStop2Transfers;
}

代码示例来源:origin: matsim-org/matsim

@Test
public void testGetDistance_fromOutsideExtent() {
  QuadTree<String> qt = getTestTree();
  assertContains(new String[] {"100.0, 0.0"}, qt.getDisk(160.0, 0, 60.1)); // E
  assertContains(new String[] {"15.0, 15.0", "15.0, 15.0 B"}, qt.getDisk(15.0, 160, 145.1)); // N
  assertContains(new String[] {"-15.0, 0.0"}, qt.getDisk(-60.0, 0, 45.1)); // W
  assertContains(new String[] {"100.0, 0.0"}, qt.getDisk(100.0, -60, 60.1)); // S
}

代码示例来源:origin: matsim-org/matsim

public ArrayList<ActivityFacility>  computeChoiceSetCircle(Coord coordStart, Coord coordEnd,
    double radius, String type) {
  double midPointX = (coordStart.getX()+coordEnd.getX())/2.0;
  double midPointY = (coordStart.getY()+coordEnd.getY())/2.0;
  return (ArrayList<ActivityFacility>) this.quadTreesOfType.get(this.defineFlexibleActivities.getConverter().convertType(type)).
      getDisk(midPointX, midPointY, radius);
}

代码示例来源:origin: matsim-org/matsim

@Test
public void testGetDistance_EntryOnDividingBorder() {
  QuadTree<String> qt = new QuadTree<>(0, 0, 40, 60);
  qt.put(10.0, 10.0, "10.0, 10.0");
  qt.put(20.0, 20.0, "20.0, 20.0"); // on vertical border
  qt.put(20.0, 30.0, "20.0, 30.0"); // exactly on center
  qt.put(30.0, 30.0, "30.0, 30.0"); // on horizontal border
  qt.put(12.0, 15.0, "12.0, 15.0");
  qt.put(10.0, 25.0, "10.0, 25.0");
  assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(10.0, 7.0, 3.0));
  assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(10.0, 12.0, 2.0));
  assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(7.0, 10.0, 3.0));
  assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(13.0, 10.0, 3.0));
  assertContains(new String[] {"20.0, 20.0"}, qt.getDisk(20.0, 23.0, 3.0));
  assertContains(new String[] {"20.0, 30.0"}, qt.getDisk(20.0, 27.0, 3.0));
  assertContains(new String[] {"30.0, 30.0"}, qt.getDisk(27.0, 30.0, 3.0));
  assertContains(new String[] {"12.0, 15.0"}, qt.getDisk(15.0, 15.0, 3.0));
  assertContains(new String[] {"10.0, 25.0"}, qt.getDisk(10.0, 28.0, 3.0));
}

代码示例来源:origin: matsim-org/matsim

Collection<ClusterActivity> neighbourhood = quadTree.getDisk(p.getCoord().getX(), p.getCoord().getY(), radius);
List<ClusterActivity> uN = new ArrayList<ClusterActivity>(neighbourhood.size());
List<ClusterActivity> cN = new ArrayList<ClusterActivity>(neighbourhood.size());

代码示例来源:origin: matsim-org/matsim

protected final boolean modifyLocation(Activity act, Coord startCoord, Coord endCoord, double radius) {
  double midPointX = (startCoord.getX() + endCoord.getX()) / 2.0;
  double midPointY = (startCoord.getY() + endCoord.getY()) / 2.0;
  ArrayList<ActivityFacility> facilitySet =
      (ArrayList<ActivityFacility>) this.quadTreesOfType.get(this.defineFlexibleActivities.getConverter().convertType(act.getType())).
          getDisk(midPointX, midPointY, radius);
  ActivityFacility facility = null;
  if (facilitySet.size() > 1) {
    facility = facilitySet.get(super.random.nextInt(facilitySet.size()));
  }
  else {
    return false;
  }
  act.setFacilityId(facility.getId());
    act.setLinkId(NetworkUtils.getNearestLink(((Network) this.scenario.getNetwork()), facility.getCoord()).getId());
    act.setCoord(facility.getCoord());
    return true;
}

代码示例来源:origin: matsim-org/matsim

@Test
public void testGetDistance_EntryOnOutsideBorder() {
  QuadTree<String> qt = new QuadTree<>(0.0, 0.0, 40.0, 60.0);
  // the 4 corners
  qt.put(0.0, 0.0, "SW");
  qt.put(40.0, 0.0, "SE");
  qt.put(0.0, 60.0, "NW");
  qt.put(40.0, 60.0, "NE");
  // the 4 sides
  qt.put(10.0, 60.0, "N");
  qt.put(40.0, 10.0, "E");
  qt.put(10.0, 0.0, "S");
  qt.put(0.0, 10.0, "W");
  assertContains(new String[] {"SW"}, qt.getDisk(3.0, 0.0, 3.0));
  assertContains(new String[] {"SE"}, qt.getDisk(40.0, 3.0, 3.0));
  assertContains(new String[] {"NW"}, qt.getDisk(3.0, 60.0, 3.0));
  assertContains(new String[] {"NE"}, qt.getDisk(40.0, 57.0, 3.0));
  assertContains(new String[] {"N"}, qt.getDisk(7.0, 60.0, 3.0));
  assertContains(new String[] {"E"}, qt.getDisk(40.0, 13.0, 3.0));
  assertContains(new String[] {"S"}, qt.getDisk(13.0, 0.0, 3.0));
  assertContains(new String[] {"W"}, qt.getDisk(3.0, 10.0, 3.0));
}

代码示例来源:origin: matsim-org/matsim

Collection<ActivityFacilityWithIndex> list = this.quadTreesOfType.get(convertedType).getDisk(center.getX(), center.getY(), maxRadius);

代码示例来源:origin: matsim-org/matsim

Collection<String> values = qt.getDisk(15.0, 15.0, 1.0);
assertEquals(2, values.size());
assertTrue(values.contains("15.0, 15.0"));
values = qt.getDisk(15.0, 15.0, 0.0);
assertEquals(2, values.size());
assertTrue(values.contains("15.0, 15.0"));
values = qt.getDisk(9.0, 9.0, 10.0);
assertEquals(3, values.size());
assertTrue(values.contains("10.0, 10.0"));
values = qt.getDisk(50.0, 0.0, 51.0);
assertEquals(5, values.size());
assertTrue(values.contains("100.0, 0.0"));
values = qt.getDisk(90.0, 0.0, 9.0);
assertEquals("test with distance 9.0", 0, values.size());
values = qt.getDisk(90.0, 0.0, 9.999);
assertEquals("test with distance 9.999", 0, values.size());
values = qt.getDisk(90.0, 0.0, 10.0);
assertEquals("test with distance 10.0", 1, values.size());
values = qt.getDisk(90.0, 0.0, 10.001);
assertEquals("test with distance 10.001", 1, values.size());
values = qt.getDisk(90.0, 0.0, 11.0);

相关文章