Пример #1
0
        public void TestSearchResultAndTimeLarge()
        {
            Rectangle searchedArea = new Rectangle(new crawlPoint3d(115184, 29374, 0), new crawlPoint3d(133962, 35634, 0));

            DbMongo       sqlDB      = new DbMongo("SingleFile");
            List <string> recsCoords = sqlDB.GetRectanglesFromLines();

            int numberOfLinesInsideSearchedArea = 0;

            foreach (string coords in recsCoords)
            {
                Rectangle    rec  = new Rectangle(coords);
                crawlPoint3d pntA = rec.pointA;
                crawlPoint3d pntC = rec.pointC;

                rt.Add(rec);

                // Counting lines fully included in searched area
                if (searchedArea.Includes(pntA) && searchedArea.Includes(pntC))
                {
                    numberOfLinesInsideSearchedArea++;
                }
            }

            Stopwatch        timer  = Stopwatch.StartNew();
            List <Rectangle> result = rt.Inclusions(searchedArea);

            timer.Stop();

            Assert.AreEqual(numberOfLinesInsideSearchedArea, result.Count);
            Assert.IsTrue(timer.ElapsedMilliseconds < Math.Log(recsCoords.Count));
        }
Пример #2
0
        public void TestBigClusterTree()
        {
            DbMongo          sqlDB  = new DbMongo("SingleFile");
            List <Rectangle> rects  = new List <Rectangle>();
            List <string>    coords = sqlDB.GetRectanglesFromLines();

            foreach (string coord in coords)
            {
                rects.Add(new Rectangle(coord));
            }

            Stopwatch   timer = Stopwatch.StartNew();
            ClusterTree ct    = new ClusterTree(rects.ToArray());

            timer.Stop();

            Assert.IsTrue(timer.ElapsedMilliseconds < 3 * rects.Count);

            for (int i = 0; i < ct.Clusters.Count; i++)
            {
                for (int j = 0; j < ct.Clusters.Count; j++)
                {
                    Rectangle rec1 = ct.Clusters[i].BoundBox;
                    Rectangle rec2 = ct.Clusters[j].BoundBox;

                    if (rec1.Equals(rec2))
                    {
                        continue;
                    }

                    Rectangle notRound1 = new Rectangle(9571.0563, 11257.8221, 12095.1892, 13879.5525);
                    Rectangle notRound2 = new Rectangle(6559.4258, 4018.8264, 16465.4917, 13169.6058);

                    if (Math.Round(rec1.MinPoint.X, 0) == 3704)
                    {
                        //throw new System.ExecutionEngineException();

                        if (Math.Round(rec2.MinPoint.X, 0) == 9571)
                        {
                            Debug.WriteLine("Here we should intersect");
                        }
                    }

                    if (rec1.Intersects(rec2))
                    {
                        Assert.Fail("There's an interesection between clusters");
                    }
                }
            }
        }
Пример #3
0
        public void TestCreateBigTree()
        {
            DbMongo       sqlDB            = new DbMongo("geometry");
            List <string> RectanglesCoords = sqlDB.GetRectanglesFromLines();

            Stopwatch timer = Stopwatch.StartNew();

            foreach (string coords in RectanglesCoords)
            {
                Rectangle rec = new Rectangle(coords);
                rt.Add(rec);
            }

            timer.Stop();
            Assert.IsTrue(timer.ElapsedMilliseconds < RectanglesCoords.Count);
            Debug.WriteLine("Number of lines " + RectanglesCoords.Count);
        }
Пример #4
0
        public void TestSearchResultAndTimeMedium()
        {
            Rectangle searchedArea = new Rectangle(new crawlPoint3d(-24, -34, 0), new crawlPoint3d(401, 74, 0));

            DbMongo       sqlDB  = new DbMongo("rectangles");
            List <string> coords = sqlDB.GetRectanglesFromLines();

            foreach (string coord in coords)
            {
                Rectangle rec = new Rectangle(coord);
                rt.Add(rec);
            }

            Stopwatch        timer  = Stopwatch.StartNew();
            List <Rectangle> result = rt.Inclusions(searchedArea);

            timer.Stop();
            Assert.IsTrue(timer.ElapsedMilliseconds < Math.Log(coords.Count));

            Assert.AreEqual(2, result.Count);

            int grade = 0;

            foreach (var rect in result)
            {
                if (rect.pointA.Equals(new crawlPoint3d(0, 0, 0)) && rect.pointC.Equals(new crawlPoint3d(100, 0, 0)))
                {
                    grade++;
                }
                if (rect.pointA.Equals(new crawlPoint3d(50, 50, 0)) && rect.pointC.Equals(new crawlPoint3d(350, 50, 0)))
                {
                    grade++;
                }
            }

            Assert.AreEqual(2, grade);
        }