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/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的更多相关文章
- 归并排序算法 java 实现
归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...
- 快速排序算法 java 实现
快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...
- 堆排序算法 java 实现
堆排序算法 java 实现 白话经典算法系列之七 堆与堆排序 Java排序算法(三):堆排序 算法概念 堆排序(HeapSort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特 ...
- Atitit 电子商务订单号码算法(java c# php js 微信
Atitit 电子商务订单号码算法(java c# php js 微信 1.1. Js版本的居然钱三爷里面没有..只好自己实现了. 1.2. 订单号标准化...长度16位 1.3. 订单号的结构 前 ...
- 无向图的最短路径算法JAVA实现
一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...
- 无向图的最短路径算法JAVA实现(转)
一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...
- 基于FP-Tree的关联规则FP-Growth推荐算法Java实现
基于FP-Tree的关联规则FP-Growth推荐算法Java实现 package edu.test.ch8; import java.util.ArrayList; import java.util ...
- 双色球机选算法java实现
双色球机选算法java实现 一.代码 package com.hdwang; import java.util.Random; /** * Created by admin on 2017/1/10. ...
- Floyd算法java实现demo
Floyd算法java实现,如下: https://www.cnblogs.com/Halburt/p/10756572.html package a; /** * ┏┓ ┏┓+ + * ┏┛┻━━━ ...
随机推荐
- Geoserver跨域请求设置
使用OpenLayers请求GeoServer发布的WFS服务时,如果不是相同的域可能会出现如下问题. 已拦截跨源请求:同源策略禁止读取位于 http://localhost:8080/geoserv ...
- Android Framework 记录之一
简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4 ...
- webpack+vue起步
本文基于vue1.x 基于vue2.x&webpack2.x请移步至 Vue2.x踩坑与总结Webpack2.x踩坑与总结 记得第一次知道Vue.js是在勾三股四大大的微博,那时候他开始翻译v ...
- cocos2d-x调用android内嵌浏览器打开网页
cocos2d-x调用android内嵌浏览器打开网页,能够从入口传入网址,C++调用android 的api就可以实现. 方法也非常easy 1. 改动"cocos2dx\platform ...
- 蜗牛—Android基础之button监听器
XML文件中有一个textView 和 一个button. <LinearLayout xmlns:android="http://schemas.android.com/apk/re ...
- python(21)- python内置函数练习
题目一:用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sbname=['alex','wupeiqi','yuanhao'] name=['alex','wupeiqi','yu ...
- (利用DOM)在新打开的页面点击关闭当前浏览器窗口
1.在开发过程中我们前端的用户体验中有时候会要求点击一个按钮,关闭当前浏览器窗口,用HTML DOM就可做到 2.注意:本次写法要求在新窗口中关闭.target="_blank" ...
- JavaScript 日期格式化 简单有用
JavaScript 日期格式化 简单有用 代码例如以下,引入jquery后直接后增加下面代码刷新可測试 Date.prototype.Format = function (fmt) { //auth ...
- 【git】强制覆盖本地代码
[git]强制覆盖本地代码(与git远程仓库保持一致) 2018年04月27日 23:53:57 不才b_d 阅读数:21145 版权声明:本文为博主不才b_d原创文章,未经允许不得转载. || ...
- 最简单的基于FFmpeg的移动端样例附件:SDL Android HelloWorld
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...