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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值