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. CF997D

    分析: 假设在第一个树上我们有一个长度为x的环,在第二树上我们有一个长度为y的环,那么可以在叉积树上构造出$\binom{x+y}{x}$个长度为x+y的环 问题的关键就变成了如何统计出在一个树上的长 ...

  2. spring lifeCycle

    Lifecycle接口定义了每个对象的生命周期.如下 public interface Lifecycle { void start(); void stop(); boolean isRunning ...

  3. FastDFS 使用经验分享

    原文:http://www.ttlsa.com/fastdfs/fastdfs-experience-sharing/ 应用背景 文件被上传到FastDFS后Storage服务端将返回的文件索引(FI ...

  4. ubuntu安装 uwsgi

    http://www.jianshu.com/p/e6ff4a28ab5a/ sudo apt-get install python-dev #不安装这个,下面的安装可能会失败 sudo pip in ...

  5. Html5学习笔记1 元素 标签 属性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. poj 1651 Multiplication Puzzle【区间DP】

    题目链接:http://poj.org/problem? id=1651 题意:初使ans=0,每次消去一个值,位置在pos(pos!=1 && pos !=n) 同一时候ans+=a ...

  7. 【LeetCode】Word Break 解题报告

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  8. python(8)- python基础数据类型

    数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视 频.网页等各种各样的数据,不同的数据,需要 ...

  9. 关于global和$GLOBALS[]的一道经典面试题

    在不执行程序的情况下,你觉得的输出结果是什么? <?php $var1 = 1; $var2 = 2; function test(){ global $var1,$var2; $var2 = ...

  10. caffe搭建--caffe在invidia+cpu 酷睿2Q9300 + ubuntu16.04.2上面的安装和编译过程

    本文原创,转载请注明出处. ------------------------------------------------分割线-------------------------------- 概要 ...