rtree java_RTree算法Java实现 JSI RTree Library的调用实例 标签:jsi-rtree-library

汲雅珺
2023-12-01

1. [代码]jsi-rtree-library

/**

*

*/

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

{背景音乐http://www.huiyi8.com/bgm/

private Listids = new ArrayList();

@Override

public boolean execute(int id)

{

ids.add(id);

return true;

};

private ListgetIds()

{

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

ListintersectIds = insectMyProc.getIds();

for (Integer integer : intersectIds)

{

logger.info(rects[integer].toString() + "was intersected!");

}

}

}

阅读(846) | 评论(0) | 转发(0) |

 类似资料: