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的更多相关文章

  1. 归并排序算法 java 实现

    归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...

  2. 快速排序算法 java 实现

    快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...

  3. 堆排序算法 java 实现

    堆排序算法 java 实现 白话经典算法系列之七 堆与堆排序 Java排序算法(三):堆排序 算法概念 堆排序(HeapSort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特 ...

  4. Atitit 电子商务订单号码算法(java c# php js 微信

    Atitit 电子商务订单号码算法(java c# php js  微信 1.1. Js版本的居然钱三爷里面没有..只好自己实现了. 1.2. 订单号标准化...长度16位 1.3. 订单号的结构 前 ...

  5. 无向图的最短路径算法JAVA实现

    一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...

  6. 无向图的最短路径算法JAVA实现(转)

    一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...

  7. 基于FP-Tree的关联规则FP-Growth推荐算法Java实现

    基于FP-Tree的关联规则FP-Growth推荐算法Java实现 package edu.test.ch8; import java.util.ArrayList; import java.util ...

  8. 双色球机选算法java实现

    双色球机选算法java实现 一.代码 package com.hdwang; import java.util.Random; /** * Created by admin on 2017/1/10. ...

  9. Floyd算法java实现demo

    Floyd算法java实现,如下: https://www.cnblogs.com/Halburt/p/10756572.html package a; /** * ┏┓ ┏┓+ + * ┏┛┻━━━ ...

随机推荐

  1. Geoserver跨域请求设置

    使用OpenLayers请求GeoServer发布的WFS服务时,如果不是相同的域可能会出现如下问题. 已拦截跨源请求:同源策略禁止读取位于 http://localhost:8080/geoserv ...

  2. Android Framework 记录之一

    简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4 ...

  3. webpack+vue起步

    本文基于vue1.x 基于vue2.x&webpack2.x请移步至 Vue2.x踩坑与总结Webpack2.x踩坑与总结 记得第一次知道Vue.js是在勾三股四大大的微博,那时候他开始翻译v ...

  4. cocos2d-x调用android内嵌浏览器打开网页

    cocos2d-x调用android内嵌浏览器打开网页,能够从入口传入网址,C++调用android 的api就可以实现. 方法也非常easy 1. 改动"cocos2dx\platform ...

  5. 蜗牛—Android基础之button监听器

    XML文件中有一个textView 和 一个button. <LinearLayout xmlns:android="http://schemas.android.com/apk/re ...

  6. python(21)- python内置函数练习

    题目一:用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sbname=['alex','wupeiqi','yuanhao'] name=['alex','wupeiqi','yu ...

  7. (利用DOM)在新打开的页面点击关闭当前浏览器窗口

    1.在开发过程中我们前端的用户体验中有时候会要求点击一个按钮,关闭当前浏览器窗口,用HTML DOM就可做到 2.注意:本次写法要求在新窗口中关闭.target="_blank" ...

  8. JavaScript 日期格式化 简单有用

    JavaScript 日期格式化 简单有用 代码例如以下,引入jquery后直接后增加下面代码刷新可測试 Date.prototype.Format = function (fmt) { //auth ...

  9. 【git】强制覆盖本地代码

    [git]强制覆盖本地代码(与git远程仓库保持一致) 2018年04月27日 23:53:57 不才b_d 阅读数:21145   版权声明:本文为博主不才b_d原创文章,未经允许不得转载. || ...

  10. 最简单的基于FFmpeg的移动端样例附件:SDL Android HelloWorld

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...