1. 程式人生 > >Rtree實現多維空間搜索

Rtree實現多維空間搜索

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();
    }
}


本文出自 “12571026” 博客,請務必保留此出處http://12581026.blog.51cto.com/12571026/1931233

Rtree實現多維空間搜索