欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

RTreeJava JSI RTree Library jsi-rtree-library,rtreejavajsi,/** * */pac

来源: javaer 分享于  点击 19574 次 点评:178

RTreeJava JSI RTree Library jsi-rtree-library,rtreejavajsi,/** * */pac


/** *  */package com.mycompany.project;//package net.sourceforge.jsi.examples;import java.util.ArrayList;import java.util.List;import org.apache.log4j.Logger;//import org.slf4j.*;import com.infomatiq.jsi.*;import gnu.trove.*;import com.infomatiq.jsi.Rectangle;import com.infomatiq.jsi.rtree.RTree;public class Contains{    private static Logger logger = Logger.getLogger(Contains.class);    public static void main(String[] args)    {        new Contains().run();    }    private void run()    {        // Create and initialize an rtree        SpatialIndex si = new RTree();        si.init(null);        // We have some points or rectangles in some other data structure.        // The rtree can handle millions of these.        Rectangle[] rects = new Rectangle[] { new Rectangle(0, 0, 0, 0),                new Rectangle(0, 1, 0, 1), new Rectangle(1, 0, 1, 0),                new Rectangle(1, 1, 1, 1),                 new Rectangle(0.0f, 0.25f, 0.5f, 0.75f),                };        // Add our data to the rtree. Every time we add a rectangle we give it        // an ID. This ID is what is returned by querying the rtree. In this        // example we use the array index as the ID.        for (int i = 0; i < rects.length; i++)        {            si.add(rects[i], i);        }        // Now see which of these points is contained by some        // other rectangle. The rtree returns the results of a query        // by calling the execute() method on a TIntProcedure.        // In this example we want to save the results of the query        // into a list, so that's what the execute() method does.        class SaveToListProcedure implements TIntProcedure        {            private List<Integer> ids = new ArrayList<Integer>();            @Override            public boolean execute(int id)            {                ids.add(id);                return true;            };            private List<Integer> getIds()            {                return ids;            }        }        ;        SaveToListProcedure myProc = new SaveToListProcedure();        si.contains(new Rectangle(-0.5f, -0.5f, 1.5f, 0.5f), myProc);        SaveToListProcedure insectMyProc = new SaveToListProcedure();        si.intersects(new Rectangle(-0.5f, -0.5f, 1.5f, 0.5f), insectMyProc);        List<Integer> intersectIds = insectMyProc.getIds();        for (Integer integer : intersectIds)        {            logger.info(rects[integer].toString() + "was intersected!");        }    }}//该片段来自于http://byrx.net
相关栏目:

用户点评