本文整理了Java中org.locationtech.jts.index.quadtree.Quadtree.insert
方法的一些代码示例,展示了Quadtree.insert
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Quadtree.insert
方法的具体详情如下:
包路径:org.locationtech.jts.index.quadtree.Quadtree
类名称: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());
}
}
内容来源于网络,如有侵权,请联系作者删除!