gpt4 book ai didi

java - STRtree 实现输出包含随机点

转载 作者:太空宇宙 更新时间:2023-11-04 15:15:30 26 4
gpt4 key购买 nike

我使用 JTS 和 Netbeans 来实现 STRtrees 。我正在尝试为一组点(坐标)构建一个 STRtree 。这是我的代码:

package example;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.index.ArrayListVisitor;
import com.vividsolutions.jts.index.strtree.STRtree;
import java.util.List;

public class Example {


public static void main(String[] args) {
//Getting input from the user as points

GeometryFactory gf = new GeometryFactory();
Coordinate coord = new Coordinate( 1, 1 );
Point point=gf.createPoint( coord );
coord = new Coordinate( 3,2 );
Point point2=gf.createPoint( coord );
coord = new Coordinate( 2,4 );
Point point3=gf.createPoint( coord );
coord = new Coordinate( 4,1 );
Point point4=gf.createPoint( coord );
coord = new Coordinate( 5,2);
Point point5=gf.createPoint( coord );
coord = new Coordinate( 4,5);
Point point6=gf.createPoint( coord );
coord = new Coordinate( 3,6 );
Point point7=gf.createPoint( coord );
coord = new Coordinate( 1,6 );
Point point8=gf.createPoint( coord );
coord = new Coordinate( 6,2 );
Point point9=gf.createPoint( coord );
coord = new Coordinate( 7,1 );
Point point10=gf.createPoint( coord );
coord = new Coordinate( 6,4 );
Point point11=gf.createPoint( coord );
coord = new Coordinate( 9,2);
Point point12=gf.createPoint( coord );
coord = new Coordinate( 3,8);
Point point13=gf.createPoint( coord );
coord = new Coordinate( 1,7);
Point point14=gf.createPoint( coord );
coord = new Coordinate( 3,7 );
Point point15=gf.createPoint( coord );
coord = new Coordinate( 5,7 );
Point point16=gf.createPoint( coord );
//Building the str object
STRtree strTree=new STRtree();
//inserting the points into the tree
strTree.insert(point.getEnvelopeInternal(), point);
strTree.insert(point2.getEnvelopeInternal(), point2);
strTree.insert(point3.getEnvelopeInternal(), point3);
strTree.insert(point4.getEnvelopeInternal(), point4);
strTree.insert(point5.getEnvelopeInternal(), point5);
strTree.insert(point6.getEnvelopeInternal(), point6);
strTree.insert(point7.getEnvelopeInternal(), point7);
strTree.insert(point8.getEnvelopeInternal(), point8);
strTree.insert(point9.getEnvelopeInternal(), point9);
strTree.insert(point10.getEnvelopeInternal(), point10);
strTree.insert(point11.getEnvelopeInternal(), point11);
strTree.insert(point12.getEnvelopeInternal(), point12);
strTree.insert(point13.getEnvelopeInternal(), point13);
strTree.insert(point14.getEnvelopeInternal(), point14);
strTree.insert(point15.getEnvelopeInternal(), point15);
strTree.insert(point16.getEnvelopeInternal(), point16);
//Building the tree
strTree.build();
Coordinate coord2 = new Coordinate( 0,0 );
Coordinate coord3 = new Coordinate( 5,5);
Envelope e1=new Envelope(coord2,coord3);
List List1 = strTree.query(e1);
System.out.println(List1);
}
}

代码符合并运行,但我期望点按此顺序排序(roots->children->leaves)。但我的输出包含包络区域中的随机点。我哪里出错了?

最佳答案

R 树存储叶节点中的所有点。

您要查找的“订单”不存在;所有结果必须来自叶子。

JTS API 看起来非常昂贵。坐标包裹在点中,包裹在信封中。您可能想看看 ELKI,我发现它具有非常高的性能。与普遍的看法相反,我发现 ELKI R 树(至少在 STR 批量加载时)在 32 维中仍然工作得很好(流行知识声称 R 树最多只能工作到 10 维)。

关于java - STRtree 实现输出包含随机点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com