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. 如何使用ssh远程编辑定时任务crontab?

    linxu定时任务使用crontab,编辑crontab可以直接编辑:crontab -e:也可以直接读取文件 crontab file.这两种操作都不需要特殊权限sudo.区别在于,crontab ...

  2. 快讯 | FireEye在GitHub上开源密码破解工具GoCrack

    近日,FireEye 开源了一款密码破解工具 GoCrack,可在多机器上部署破解任务. GoCrack 是由 FireEye’s Innovation and Custom Engineering ...

  3. 【转载】Java NIO学习

    这篇文章介绍了NIO的基本概念: http://www.iteye.com/magazines/132-Java-NIO Java NIO提供了与标准IO不同的IO工作方式: Channels and ...

  4. Ubuntu+Apache+PHP+Mysql环境搭建(完整版)

    Ubuntu+Apache+PHP+Mysql环境搭建(完整版) 一.操作系统Ubuntu 14.04 64位,阿里云服务器 二.Apache 1.安装Apache,安装命令:sudo apt-get ...

  5. Hive UDF开发-简介

    Hive进行UDF开发十分简单,此处所说UDF为Temporary的function,所以需要hive版本在0.4.0以上才可以. Hive的UDF开发只需要重构UDF类的evaluate函数即可.例 ...

  6. yii框架:CDbConnection failed to open the DB connection: could not find driver的解决的方法

    这个问题是由于php中缺少pdo mysql造成的. 解决方法是为php加入此扩展.前往你最早的php安装文件,进入ext/pdo_mysql/文件夹下,然后./configure --with-ph ...

  7. PS 如何用PS制作GIF图像

    首先我们准备好要依次播放的图片(这里使用的是CS的光标缩放,只有两张图) 然后在窗口中打开动画,则下方会出现动画的面板. 点击图层按钮可以添加一帧,我们让第一帧显示为大图片,第二帧为小图片.还可以设置 ...

  8. VUE高仿饿了么app开发思维导图

    来自互联网 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing

  9. Java的泛型约束和限制

    不能用基本类型实例化类型参数 不能用类型参数代替基本类型:例如,没有Pair<double>,只有Pair<Double>,其原因是类型擦除.擦除之后,Pair类含有Objec ...

  10. 基于EfCore的一个多租户Demo

    六月份如愿的转入了架构组,先上手搞了个CI服务器,把架构组的几个项目撸到上面去了.效果不错,接着就把其他两个项目组有单元测试的项目撸上去了,在桌子上放了个显示器当大屏用. 因为公司准备进行一个大的系统 ...