All Downloads are FREE. Search and download functionalities are using the official Maven repository.

technology.tabula.RectangleSpatialIndex Maven / Gradle / Ivy

package technology.tabula;

import java.util.ArrayList;
import java.util.List;

import org.locationtech.jts.geom.Envelope;
import org.locationtech.jts.index.strtree.STRtree;

public class RectangleSpatialIndex {
    

    private final STRtree si = new STRtree();
    private final List rectangles = new ArrayList<>();

    public void add(T te) {
        rectangles.add(te);
        si.insert(new Envelope(te.getLeft(), te.getRight(), te.getBottom(), te.getTop()), te);
    }
    
    public List contains(Rectangle r) {
        List intersection = si.query(new Envelope(r.getLeft(), r.getRight(), r.getTop(), r.getBottom()));
        List rv = new ArrayList();

        for (T ir: intersection) {
            if (r.contains(ir)) {
                rv.add(ir);
            }
        }

        Utils.sort(rv, Rectangle.ILL_DEFINED_ORDER);
        return rv;
    }
    
    public List intersects(Rectangle r) {
        List rv = si.query(new Envelope(r.getLeft(), r.getRight(), r.getTop(), r.getBottom()));
        return rv;
    }
    
    /**
     * Minimum bounding box of all the Rectangles contained on this RectangleSpatialIndex
     * 
     * @return a Rectangle
     */
    public Rectangle getBounds() {
        return Rectangle.boundingBoxOf(rectangles);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy