org.locationtech.jts.index.quadtree.Quadtree.insert()方法的使用及代码示例

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

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

Quadtree.insert介绍

暂无

代码示例

代码示例来源:origin: geotools/geotools

/**
 * Adds a label into the index
 *
 * @param item
 * @param bounds
 */
public void addLabel(LabelCacheItem item, Rectangle2D bounds) {
  Envelope e = toEnvelope(bounds);
  index.insert(e, new InterferenceItem(e, item));
}

代码示例来源:origin: geotools/geotools

/**
   * Reserve the area indicated by these Geometry.
   *
   * @param reserved
   */
  public void reserveArea(List<Rectangle2D> reserved) {
    for (Rectangle2D area : reserved) {
      Envelope env = toEnvelope(area);

      InterferenceItem item = new InterferenceItem(env, null);
      index.insert(env, item);
    }
  }
}

代码示例来源:origin: geotools/geotools

protected Quadtree copySTRtreeFrom(Diff diff) {
  Quadtree tree = new Quadtree();
  synchronized (diff) {
    Iterator<Entry<String, SimpleFeature>> i = diff.added.entrySet().iterator();
    while (i.hasNext()) {
      Entry<String, SimpleFeature> e = i.next();
      SimpleFeature f = (SimpleFeature) e.getValue();
      if (!diff.modifiedFeatures.containsKey(f.getID())) {
        tree.insert(ReferencedEnvelope.reference(f.getBounds()), f);
      }
    }
    Iterator<Entry<String, SimpleFeature>> j = diff.getModified().entrySet().iterator();
    while (j.hasNext()) {
      Entry<String, SimpleFeature> e = j.next();
      SimpleFeature f = (SimpleFeature) e.getValue();
      tree.insert(ReferencedEnvelope.reference(f.getBounds()), f);
    }
  }
  return tree;
}

代码示例来源:origin: geotools/geotools

@Override
public boolean checkAndReserve(List<AffineTransform2D> transforms)
    throws MismatchedDimensionException, TransformException {
  List<Geometry> transformedConflictBounds = new ArrayList<Geometry>();
  boolean conflict = false;
  for (AffineTransform2D tx2d : transforms) {
    if (conflict) {
      break;
    }
    Geometry cbTransformed = JTS.transform(conflictBounds, tx2d);
    transformedConflictBounds.add(cbTransformed);
    List results = qt.query(cbTransformed.getEnvelopeInternal());
    for (Iterator it = results.iterator(); it.hasNext(); ) {
      Geometry candidate = (Geometry) it.next();
      if (candidate.intersects(cbTransformed)) {
        // location conflict
        conflict = true;
        break;
      }
    }
  }
  // reserve the area if no conflict
  if (!conflict) {
    for (Geometry tcb : transformedConflictBounds) {
      qt.insert(tcb.getEnvelopeInternal(), tcb);
    }
  }
  return !conflict;
}

代码示例来源:origin: geotools/geotools

public Graphable add(Object obj) {
  Node node = (Node) get(obj);
  if (node == null) {
    node = builder.buildNode();
    builder.addNode(node);
    node.setObject(obj);
    relate(node);
    // TODO: the envelope should be buffered by some tolerance
    index.insert(((Polygon) obj).getEnvelopeInternal(), node);
  }
  return node;
}

代码示例来源:origin: locationtech/jts

public void insert(Envelope itemEnv, Object item)
{
 index.insert(itemEnv, item);
}
public List query(Envelope searchEnv)

代码示例来源:origin: locationtech/jts

public void filter(Geometry geom) {
 // only insert atomic geometries
 if (geom instanceof GeometryCollection) return;
 index.insert(geom.getEnvelopeInternal(), geom);
}

代码示例来源:origin: locationtech/jts

public void add(LineSegment seg)
{
 index.insert(new Envelope(seg.p0, seg.p1), seg);
}

代码示例来源:origin: locationtech/jts

private void buildQuadtree()
 {
  quadtree = new Quadtree();

  for (int i = 0; i < rings.size(); i++) {
   LinearRing ring = (LinearRing) rings.get(i);
   Envelope env = ring.getEnvelopeInternal();
   quadtree.insert(env, ring);
  }
 }
}

代码示例来源:origin: org.jaitools/jt-vectorize

spIndex.insert(poly.getEnvelopeInternal(), poly);
    spIndex.insert(merged.getEnvelopeInternal(), merged);
    polys.add(merged);

代码示例来源:origin: locationtech/jts

void createGrid(int nGridCells)
{
 int gridSize = (int) Math.sqrt((double) nGridCells);
 gridSize += 1;
 double extent = MAX_EXTENT - MIN_EXTENT;
 double gridInc = extent / gridSize;
 double cellSize = 2 * gridInc;
 for (int i = 0; i < gridSize; i++) {
  for (int j = 0; j < gridSize; j++) {
   double x = MIN_EXTENT + gridInc * i;
   double y = MIN_EXTENT + gridInc * j;
   Envelope env = new Envelope(x, x + cellSize,
                 y, y + cellSize);
   q.insert(env, env);
   envList.add(env);
  }
 }
}

代码示例来源:origin: org.geotools/gt-graph

public Graphable add(Object obj) {
  Node node = (Node) get(obj);
  if (node == null) {
    node = builder.buildNode();
    builder.addNode(node);
    node.setObject(obj);
    relate(node);
    // TODO: the envelope should be buffered by some tolerance
    index.insert(((Polygon) obj).getEnvelopeInternal(), node);
  }
  return node;
}

代码示例来源:origin: orbisgis/h2gis

/**
 * Compute unique index for the coordinate
 * Index count from 0 to n
 * If the new vertex is closer than distMerge with an another vertex then it will return its index.
 * @return The index of the vertex
 */
private int getOrAppendVertex(Coordinate newCoord, Quadtree ptQuad) {
  Envelope queryEnv = new Envelope(newCoord);
  queryEnv.expandBy(epsilon);
  QuadTreeVisitor visitor = new QuadTreeVisitor(epsilon, newCoord);
  try {
    ptQuad.query(queryEnv, visitor);
  } catch (RuntimeException ex) {
    //ignore
  }
  if (visitor.getNearest() != null) {
    return visitor.getNearest().index;
  }
  // Not found then
  // Append to the list and QuadTree
  EnvelopeWithIndex ret = new EnvelopeWithIndex(triVertex.size(), newCoord);
  ptQuad.insert(queryEnv, ret);
  triVertex.add(ret);
  return ret.index;
}

代码示例来源:origin: locationtech/jts

@SuppressWarnings("rawtypes")
 public void testNullQuery() {
  Quadtree qt = new Quadtree();
  List result1 = qt.query(null); 
  assertTrue(result1.size() == 0);
  
  qt.insert(new Envelope(0, 10, 0, 10), "some data");
  List result2 = qt.query(null); 
  assertTrue(result2.size() == 0);
}

代码示例来源:origin: locationtech/jts

public void testSpatialIndex()
      throws Exception
 {
  Quadtree index = new Quadtree();
  assertTrue(index.size() == 0);
  assertTrue(index.isEmpty());

  index.insert(new Envelope(0,0,1,1), "test");
  assertTrue(index.size() == 1);
  assertTrue(!index.isEmpty());

  index.remove(new Envelope(0,0,1,1), "test");
  assertTrue(index.size() == 0);
  assertTrue(index.isEmpty());
 }
}

相关文章

微信公众号

最新文章

更多