R树使用说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R树API:(写了半天才发现自己逻辑多混乱…我不知道API具体怎么写突然发现写的基本上就是javadoc的内容只能拿这个改的测试来说了,细节可以再讨论,xxl-library 在线javadoc /svn/javadoc/v2/index.html直接从index里查找RTree() 就可以了)
首先要把建立的R树放在文件里面,该XXL-Libray是存储在其工程文件夹下的.ctr文件里面,如果运行的话要设置一下args的参数,在run configuration里面设置第一个参数为随便的一个变量名。
“boolean reopen = (new File(args[0]+".ctr")).canRead();”
//用于标示是否已存在R树结构了
在simpleRtreeTest.class里面基本上把R树的相关操作全部完成了,包括新建、插入、删除、查询、NN查询等。
下面通过一个RTree的简单测试,配置好上面的参数,再加上jar包,就可以直接运行了。需要说明的是:数据是随机产生的,但是插入的时候是以
publicvoid insert (Object data) {
insert(data, (Descriptor)getDescriptor.invoke(data), 0);
}
这种形式存储的。
(以二维为例)查询是通过左下角的一个点和右上角的一个点确定一个矩形来查询的。
此测试没有涉及到删除,但RTree提供的有remove()和clear()分别用来删除一个数据和整个R树结构的。
Copyright (C) 2000-2011 Prof. Dr. BernhardSeeger
Head of the Database Research Group
Department of Mathematics and Computer Science
University of Marburg
Germany
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; If not, see
.
/p/xxl/
*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import parator;
import java.util.Iterator;
import java.util.Random;
import xxl.core.collections.containers.Container;
import xxl.core.collections.containers.io.BlockFileContainer; import xxl.core.collections.containers.io.BufferedContainer; import xxl.core.collections.containers.io.ConverterContainer; import xxl.core.collections.queues.DynamicHeap;
import xxl.core.cursors.Cursor;
import xxl.core.cursors.filters.Taker;
import xxl.core.functions.AbstractFunction;
import xxl.core.functions.Function;
import xxl.core.indexStructures.ORTree;
import xxl.core.indexStructures.RTree;
import xxl.core.indexStructures.Tree.Query.Candidate;
import xxl.core.io.LRUBuffer;
import xxl.core.io.converters.ConvertableConverter;
import xxl.core.io.converters.Converter;
import xxl.core.io.converters.IntegerConverter;
import xxl.core.io.converters.LongConverter;
import xxl.core.spatial.points.DoublePoint;
import xxl.core.spatial.rectangles.DoublePointRectangle; import xxl.core.spatial.rectangles.Rectangle;
publicclass SimpleRTreeTest {
/**Dimensionofthedata.
*/
publicstaticfinalint dimension = 3;
/**Sizeofablockinbytes.
*/
publicstaticint blockSize = 1536;