Package org.geotools.caching.spatialindex

Examples of org.geotools.caching.spatialindex.Region


      // id++;
    } while (increment(pos, nextpos));
  }

  public List<Integer> getChildren(Shape shape) {
    Region mbr = (Region) getShape();
    Region childMBR = shape.getMBR();
    int dims = mbr.getDimension();
    int[] gridminindex = new int[dims];
    for (int i = 0; i < gridminindex.length; i++) {
      if (childMBR.getLow(i) <= mbr.getLow(i)) {
        gridminindex[i] = 0;
      } else {
        gridminindex[i] = (int) Math.floor((childMBR.getLow(i) - mbr.getLow(i))/ tiles_size);
      }
    }
    int[] gridmaxindex = new int[dims];
    for (int i = 0; i < gridminindex.length; i++) {
      if (childMBR.getHigh(i) >= mbr.getHigh(i)) {
        gridmaxindex[i] = tiles_number[i] - 1;
      } else {
        gridmaxindex[i] = (int) Math.floor((childMBR.getHigh(i) - mbr.getLow(i))/ tiles_size);
      }
    }

    // want to iterate from gridminindex to gridmaxindex
    int current[] = gridminindex.clone();
View Full Code Here


   * @param nextpos
   * @return false if the upperright corner of the grid has been reached, true
   *         otherwise
   */
  boolean increment(double[] pos, double[] nextpos) {
    Region mbr = (Region) getShape();
    int dims = pos.length;

    if ((dims != tiles_number.length)
        || (nextpos.length != tiles_number.length)) {
      throw new IllegalArgumentException(
          "Cursor has not the same dimension as grid.");
    }

    for (int i = 0; i < dims; i++) {
      if (((nextpos[i] - mbr.getHigh(i)) > 0)
          || (Math.abs(nextpos[i] - mbr.getHigh(i)) < AbstractSpatialIndex.EPSILON)) {
        pos[i] = mbr.getLow(i);
        nextpos[i] = pos[i] + tiles_size;

        if (i == (dims - 1)) {
          return false;
        }
View Full Code Here

     * @param e
     * @return null if e is null; otherwise a region
     */
    public static Region convert(Envelope e) {
        if (e == null) return null;
        return new Region(new double[] { e.getMinX(), e.getMinY() },
            new double[] { e.getMaxX(), e.getMaxY() });
    }
View Full Code Here

        String srs = this.featureType.getGeometryDescriptor().getCoordinateReferenceSystem().toString();
        ArrayList<Filter> filters = new ArrayList<Filter>(shapes.size());
     
        if (shapes.size() < MAX_FILTER_SIZE) {
            for( Iterator<NodeIdentifier> iterator = shapes.iterator(); iterator.hasNext(); ) {
                Region r = (Region) iterator.next().getShape();
                Filter bbox = filterFactory.bbox(geometryname, r.getLow(0), r.getLow(1), r.getHigh(0), r.getHigh(1), srs);
                filters.add(bbox);
            }
            return filterFactory.or(filters);
        } else {
            Region area = null;
            for( Iterator<NodeIdentifier> iterator = shapes.iterator(); iterator.hasNext(); ) {
                Region r = (Region) iterator.next().getShape();
                if (area == null) {
                    area = new Region(r);
                } else {
                    area = area.combinedRegion(r);
                }
            }
            return filterFactory.bbox(geometryname, area.getLow(0), area.getLow(1),area.getHigh(0), area.getHigh(1), srs);
View Full Code Here

    RegionNodeIdentifier id2;
    RegionNodeIdentifier id3;

    protected void setUp() {
        GridSpatialIndex grid = new GridSpatialIndex();
        r1 = new Region(new double[] { 0, 0 }, new double[] { 1, 1 });
        r2 = new Region(new double[] { -1, -1 }, new double[] { -2, -2 });
        node1 = new GridNode(new RegionNodeIdentifier(r1));
        node2 = new GridNode(new RegionNodeIdentifier(r2));
        node3 = new GridNode(new RegionNodeIdentifier(r1));
        //id1 = new RegionNodeIdentifier(node1);
        //id2 = new RegionNodeIdentifier(node2);
View Full Code Here

    public static Test suite() {
        return new TestSuite(GridRootNodeTest.class);
    }

    public void setUp() {
        mbr = new Region(new double[] { 0, 20 }, new double[] { 10, 30 });
        mbr3D = new Region(new double[] { 0, 20, 40 }, new double[] { 10, 30, 50 });

        index = new GridSpatialIndex(mbr, 100, MemoryStorage.createInstance(), 2000);
        node = new GridRootNode(size, new RegionNodeIdentifier( mbr));
        node3D = new GridRootNode(size3D, new RegionNodeIdentifier(mbr3D) );
        super.node = node;
View Full Code Here

    public static Test suite() {
        return new TestSuite(GridNodeTest.class);
    }

    public void setUp() {
        mbr = new Region(new double[] { 0, 1 }, new double[] { 2, 3 });
        node = new GridNode(new RegionNodeIdentifier(mbr));
    }
View Full Code Here

        node = new GridNode(new RegionNodeIdentifier(mbr));
    }

    public void testConstructor() {
        assertEquals(mbr, node.getShape());
        assertEquals(new Region(mbr), node.getShape());

        GridNode child = new GridNode(new RegionNodeIdentifier(mbr));
        assertEquals(0, child.getLevel());
        assertEquals(mbr, node.getShape());
        assertEquals(new Region(mbr), node.getShape());
    }
View Full Code Here

    public static Test suite() {
        return new TestSuite(GridTest.class);
    }

    protected AbstractSpatialIndex createIndex() {
        index = new GridSpatialIndex(new Region(universe), 100, MemoryStorage.createInstance(), 2000);

        return index;
    }
View Full Code Here

        //************************************
        //This section tests that duplicate items are added to
        //the grid correctly.
        //********************************
        String data = "My Feature";
        Region r = new Region(universe);
       
        long datacount = index.getStatistics().getNumberOfData();
        index.insertData(data, r);
        assertEquals(datacount+1, index.getStatistics().getNumberOfData());
       
View Full Code Here

TOP

Related Classes of org.geotools.caching.spatialindex.Region

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.