RTreeJava JSI RTree Library jsi-rtree-library,rtreejavajsi,/** * */pac
分享于 点击 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
用户点评