• 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!");
            }
             
        }
    }

  • 相关阅读:
    mini2440烧写nor flash
    mini2440系统引导(五)串口UART
    mini2440系统引导(四)存储控制器
    mini2440系统引导(三)当前状态寄存器CPSR
    mini2440系统引导(二)中断寄存器
    mini2440系统引导(一)看门狗
    filebeat版本问题导致logstash无法处理接收到的日志
    kernel: possible SYN flooding on port 80. Sending cookies
    grok正则
    【转载】kafka 基础知识
  • 原文地址:https://www.cnblogs.com/xkzy/p/3920044.html
Copyright © 2020-2023  润新知