public static void test1() { com.esri.core.geometry.Polyline polyline; polyline = makePolyline(); com.esri.core.geometry.MultiPathImpl polylineImpl = (com.esri.core.geometry.MultiPathImpl )polyline._getImpl(); com.esri.core.geometry.QuadTree quadtree = buildQuadTree_(polylineImpl); com.esri.core.geometry.Line queryline = new com.esri.core.geometry.Line(34, 9, 66 , 46); com.esri.core.geometry.QuadTree.QuadTreeIterator qtIter = quadtree.getIterator(); NUnit.Framework.Assert.IsTrue(qtIter.next() == -1); qtIter.resetIterator(queryline, 0.0); int element_handle = qtIter.next(); while (element_handle > 0) { int index = quadtree.getElement(element_handle); NUnit.Framework.Assert.IsTrue(index == 6 || index == 8 || index == 14); element_handle = qtIter.next(); } com.esri.core.geometry.Envelope2D envelope = new com.esri.core.geometry.Envelope2D (34, 9, 66, 46); com.esri.core.geometry.Polygon queryPolygon = new com.esri.core.geometry.Polygon( ); queryPolygon.addEnvelope(envelope, true); qtIter.resetIterator(queryline, 0.0); element_handle = qtIter.next(); while (element_handle > 0) { int index = quadtree.getElement(element_handle); NUnit.Framework.Assert.IsTrue(index == 6 || index == 8 || index == 14); element_handle = qtIter.next(); } }
internal static com.esri.core.geometry.QuadTree buildQuadTree_(com.esri.core.geometry.MultiPathImpl multipathImpl) { com.esri.core.geometry.Envelope2D extent = new com.esri.core.geometry.Envelope2D( ); multipathImpl.queryEnvelope2D(extent); com.esri.core.geometry.QuadTree quadTree = new com.esri.core.geometry.QuadTree(extent , 8); int hint_index = -1; com.esri.core.geometry.Envelope2D boundingbox = new com.esri.core.geometry.Envelope2D (); com.esri.core.geometry.SegmentIteratorImpl seg_iter = multipathImpl.querySegmentIterator (); while (seg_iter.nextPath()) { while (seg_iter.hasNextSegment()) { com.esri.core.geometry.Segment segment = seg_iter.nextSegment(); int index = seg_iter.getStartPointIndex(); segment.queryEnvelope2D(boundingbox); hint_index = quadTree.insert(index, boundingbox, hint_index); } } return(quadTree); }