Rtree实现多维空间搜索

好的,现在有这么一个需求。你所开发的应用的数据库中有全市所有饭店的经纬度坐标,现在你在某地定位了一个坐标,应用如何给你找出最近的饭店。多维空间搜索,使用RTree。这里只推荐已有的实现了RTree的jar包。

maven项目,可下载jar包,并且这是一个简单的例子:https://github.com/aled/jsi-examples

在线API:http://jsi.sourceforge.net/apidocs/index.html

下面附上自己很low的测试代码:

net.sf.jsi.examples;

gnu.trove.procedure.TIntProcedure;
net.sf.jsi.Point;
net.sf.jsi.Rectangle;
net.sf.jsi.SpatialIndex;
net.sf.jsi.rtree.RTree;

TestRTree {
    run() {
        Point point = Point(, );
        Rectangle[] rectangle = Rectangle[];
        rectangle[] = Rectangle(, , , );
        rectangle[] = Rectangle(, , , );
        rectangle[] = Rectangle(-, -, -, -);
        rectangle[] = Rectangle(-, -, -, -);
        SpatialIndex si = RTree();
        si.init();
        (i = ; i < rectangle.; i++) {
            si.add(rectangle[i], i);
        }
        si.nearestN(point, TIntProcedure() {
            execute(i) {
                System..println(+ i + + [i] + + [i].distance());
                ;
            }
        }, , Float.);

    }

    main(String[] args) {
        TestRTree().run();
    }
}
时间: 2024-09-27 09:35:12

Rtree实现多维空间搜索的相关文章

深入理解空间搜索算法 ——数百万数据中的瞬时搜索

转自 干货|深入理解空间搜索算法 ——数百万数据中的瞬时搜索 2017-05-01 10:50 全球人工智能:专注为AI开发者提供全球最新AI技术动态和社群交流.用户来源包括:北大.清华.中科院.复旦.麻省理工.卡内基梅隆.斯坦福.哈佛.牛津.剑桥等世界名校的AI技术硕士.博士和教授:以及谷歌.腾讯.百度.脸谱.微软.华为.阿里.海康威视.滴滴.英伟达等全球名企的AI开发者和AI科学家. 文章来源:medium 编译:孙菁 上图为全球138,000个热门地点的R-tree的可视化图示 我这个人沉

mysql索引小记

Mysql索引分为以下几类:FULLTEXT, HASH,BTREE,RTREE. FULLTEXT:全文搜索索引 主要是解决'ad%'这样的查询效率低的问题,只能是MyISAM和InnoDB引擎上使用 HASH:哈希索引 哈希索引与B索引的区别 1:hash索引只能进行等值过虑,不能进行范围查询.这是因为hash索引是基于hash算法的 2:hash索引无法被用来避免数据的排序操作. 3:hash索引不能利用部分索引键进行查询. 4:hash索引无法避免对表的扫描.因为多个行会对应同一个has

R-tree 一种空间搜索的动态索引结构

译林:R-tree 一种空间搜索的动态索引结构Antonm Guttman 摘要为了有效地处理空间数据,正如在计算机辅助设计和地理数据应用中所要求的那样,数据库需要一种索引机制能根据它们的空间位置快速地取得数据项.然而传统的索引方法并不能很好的适应位于多维空间中的非零大小的数据对象.在这篇论文中,我们描述一种被称之为R-树的动态索引结构来满足这种需求,并且给出了对应的搜索和更新算法.我们进行了一系列的测试,结果表明这种结构的性能很好,结论是它对于当前的数据库系统在空间应用十分有帮助. 1.引言

FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索.

R-Tree 主要用于三维空间的搜索, 据说这种搜索算法非常之快, 哪怕百万条记录也是眨眼间的事! SQLite 支持 1-5 维, FireDAC 也提供了 TFDSQLiteRTree 控件以方便定义回调函数. 为了简单, 我用二维表进行了成功的测试. 建立 R-Tree 表(索引)时需要使用特定语法, 譬如: FDConnection1.ExecSQL('CREATE VIRTUAL TABLE MyRTreeTable USING rtree(Id, minX, maxX, minY,

jQuery+HTML5弹出创意搜索框层

效果体验:http://hovertree.com/texiao/jquery/26/ 本效果适用于移动设备,可以使用手机等浏览效果. 代码下载:http://hovertree.com/h/bjaf/e14uccpw.htm HTML代码如下: 1 <!doctype html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-

LBS应用的兴趣点与名称搜索

目前LBS应用已在智能手机中占据了主导地位,但LBS技术覆盖范围太广,很少有能深入描述LBS技术的资料.所以作者在<程序员>杂志开辟专栏来描述LBS核心技术,本文为该专栏的第五篇.目前LBS应用已在智能手机中占据了主导地位,但LBS技术覆盖范围太广,很少有能深入描述LBS技术的资料.所以作者在<程序员>杂志开辟专栏来描述LBS核心技术,本文为该专栏的第五篇. 我们知道,美团与大众点评的涉及30亿美金的重量级合并是非常的吸引眼球的.在这一场合并中,美团主要看重的是大众点评的门店POI

Big Spatio temporal Data(R-tree Index and NN &amp; RNN &amp; Skyline)

一.简单介绍大数据技术产物 “大数据”一词首先出现在2008年9月<Nature>杂志发表的一篇名为“Big Data: Wikiomics”的文章上(Mitch,2008).“大数据科学”尚未有统一定义,但是科学家普遍认为它是以海量的多元异构数据为主要研究对象,以大数据的存储.处理和理解方法为主要研究内容,以新兴的计算技术为主要研究工具,以扩展人类对数据的利用能力为主要目标的一门新兴的综合性学科.它主要针对当前海量(volume).多元(variety)和高速更新(velocity)数据的处

地图索引 R-tree

http://blog.csdn.net/v_JULY_v/article/details/6530142 984年,加州大学伯克利分校的Guttman发表了一篇题为“R-trees: a dynamic index structure for spatial searching”的论文,向世人介绍了R树这种处理高维空间存储问题的数据结构.本文便是基于这篇论文写作完成的,因此如果大家对R树非常有兴趣,我想最好还是参考一下原著:).为表示对这位牛人的尊重,给个引用先: Guttman, A.; “

多维空间分割树--KD树

算法介绍 KD树的全称为k-Dimension Tree的简称,是一种分割K维空间的数据结构,主要应用于关键信息的搜索.为什么说是K维的呢,因为这时候的空间不仅仅是2维度的,他可能是3维,4维度的或者是更多.我们举个例子,如果是二维的空间,对于其中的空间进行分割的就是一条条的分割线,比如说下面这个样子. 如果是3维的呢,那么分割的媒介就是一个平面了,下面是3维空间的分割 这就稍稍有点抽象了,如果是3维以上,我们把这样的分割媒介可以统统叫做超平面 .那么KD树算法有什么特别之处呢,还有他与K-NN