RTree算法Java实现 JSI RTree Library的调用实例 标签:jsi-rtree-library
2014-08-18 17:24
267 查看
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/clxgt/窗帘效果图
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!");
}
}
}
/**
*
*/
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/clxgt/窗帘效果图
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!");
}
}
}
相关文章推荐
- RTree算法Java实现 JSI RTree Library的调用实例 标签:jsi-rtree-library
- jquery/js 实现 标签 条码 一维码 Web页面 区域打印解决方案 实例
- axis调用java实现webservice实例
- js简单实现标签云效果实例
- Java基于线程实现带有滚动效果的Label标签实例
- jquery/js 实现 标签 条码 一维码 Web页面 区域打印解决方案 实例
- js中调用C标签实现百度地图
- Java实现HMacMD5加密,用于淘宝客JS 组件 API 调用时生成 sign 的签名
- Android WebView js与Java调用实例
- 使用DWR实现JS调用服务端Java代码
- js 调用后台方法 ICallbackEventHandler 接口实现局部刷新实例 ClientScript的GetCallbackEventReference方法实现局部刷新
- java实现异步调用实例
- axis2 webservice入门学识(JS,Java,PHP调用实例源码)
- java实现异步调用实例
- javaapplet js调用applet实现上传下载
- 分享利用JS实现两个select标签中内容更换的小实例
- java调用js实现运算
- JS实现切换标签页效果实例代码
- 使用DWR实现JS调用服务端Java代码
- android Webview 实现js调用java代码实现Activity跳转