public void Measure_performance_query_items_from_GDB() { Polygon polygon = PolygonConstruction .StartPolygon(0, 0) .LineTo(0, 20) .LineTo(20, 20) .LineTo(20, 0) .ClosePolygon(); Polygon areaOfInterest = PolygonConstruction .StartPolygon(0, 0) .LineTo(0, 100) .LineTo(100, 100) .LineTo(100, 0) .ClosePolygon(); var rowCount = 10000; TestUtils.InsertRows(_emptyIssuesGdb, _featureClassName, polygon, rowCount); try { var uri = new Uri(_emptyIssuesGdb, UriKind.Absolute); var geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(uri)); var table = geodatabase.OpenDataset <Table>(_featureClassName); Dictionary <Geodatabase, List <Table> > tablesByGeodatabase = new Dictionary <Geodatabase, List <Table> > { { geodatabase, new List <Table> { table } } }; IRepository stateRepository = new XmlWorkItemStateRepository(@"C:\temp\states.xml", null, null); IWorkItemRepository repository = new IssueItemRepository(tablesByGeodatabase, stateRepository); IWorkList workList = new GdbQueryWorkList(repository, "work list"); workList.AreaOfInterest = areaOfInterest; var filter = GdbQueryUtils.CreateSpatialFilter(areaOfInterest); var watch = new Stopwatch(); watch.Start(); IEnumerable <IWorkItem> items = workList.GetItems(filter); watch.Stop(); Console.WriteLine($"{watch.ElapsedMilliseconds} ms"); Assert.AreEqual(rowCount, items.Count()); } finally { TestUtils.DeleteAllRows(_emptyIssuesGdb, _featureClassName); } }
public void Can_go_nearest() { MapPoint pt7 = PolygonConstruction.CreateMapPoint(7, 0, 0); MapPoint pt10 = PolygonConstruction.CreateMapPoint(10, 0, 0); MapPoint pt15 = PolygonConstruction.CreateMapPoint(15, 0, 0); var item7 = new WorkItemMock(7, pt7); var item10 = new WorkItemMock(10, pt10); var item15 = new WorkItemMock(15, pt15); var repository = new ItemRepositoryMock(new[] { item7, item10, item15 }); IWorkList wl = new MemoryQueryWorkList(repository, nameof(Can_go_nearest)); Geometry reference = PolygonConstruction.CreateMapPoint(11, 0, 0); // go to item10 Assert.True(wl.CanGoNearest()); wl.GoNearest(reference); Assert.AreEqual(item10, wl.Current); Assert.True(wl.Current?.Visited); // go to item7 Assert.True(wl.CanGoNearest()); Assert.NotNull(wl.Current); wl.GoNearest(wl.Current.Extent); Assert.AreEqual(item7, wl.Current); Assert.True(wl.Current?.Visited); // go to item15 Assert.True(wl.CanGoNearest()); Assert.NotNull(wl.Current); wl.GoNearest(wl.Current.Extent); Assert.AreEqual(item15, wl.Current); Assert.True(wl.Current?.Visited); // Now all are visited, what is the next item? None because there is no // more item *after* the last item15. // Now we need to go to item *before* the last one. Assert.False(wl.CanGoNearest()); Assert.True(wl.CanGoPrevious()); wl.GoPrevious(); Assert.AreEqual(item10, wl.Current); // Now we can go nearest again which is item7 (nearst to item10) Assert.True(wl.CanGoNearest()); Assert.NotNull(wl.Current); wl.GoNearest(wl.Current.Extent); Assert.AreEqual(item7, wl.Current); Assert.True(wl.Current?.Visited); }
public void Respect_AreaOfInterest_LearningTest() { Polygon polygon = PolygonConstruction .StartPolygon(0, 0) .LineTo(0, 20) .LineTo(20, 20) .LineTo(20, 0) .ClosePolygon(); Polygon areaOfInterest = PolygonConstruction .StartPolygon(100, 100) .LineTo(100, 120) .LineTo(120, 120) .LineTo(120, 100) .ClosePolygon(); var rowCount = 4; TestUtils.InsertRows(_emptyIssuesGdb, _featureClassName, polygon, rowCount); try { var uri = new Uri(_emptyIssuesGdb, UriKind.Absolute); var geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(uri)); var table = geodatabase.OpenDataset <Table>(_featureClassName); Dictionary <Geodatabase, List <Table> > tablesByGeodatabase = new Dictionary <Geodatabase, List <Table> > { { geodatabase, new List <Table> { table } } }; IRepository stateRepository = new XmlWorkItemStateRepository(@"C:\temp\states.xml", null, null); IWorkItemRepository repository = new IssueItemRepository(tablesByGeodatabase, stateRepository); IWorkList workList = new MemoryQueryWorkList(repository, "work list"); workList.AreaOfInterest = areaOfInterest; IEnumerable <IWorkItem> items = workList.GetItems(); Assert.AreEqual(0, items.Count()); } finally { TestUtils.DeleteAllRows(_emptyIssuesGdb, _featureClassName); } }
public void WorkItemService_LearningTest() { Polygon polygon = PolygonConstruction .StartPolygon(0, 0) .LineTo(0, 20) .LineTo(20, 20) .LineTo(20, 0) .ClosePolygon(); var rowCount = 4; TestUtils.InsertRows(_emptyIssuesGdb, _featureClassName, polygon, rowCount); try { var uri = new Uri(_emptyIssuesGdb, UriKind.Absolute); var geodatabase = new Geodatabase(new FileGeodatabaseConnectionPath(uri)); var table = geodatabase.OpenDataset <Table>(_featureClassName); Dictionary <Geodatabase, List <Table> > tablesByGeodatabase = new Dictionary <Geodatabase, List <Table> > { { geodatabase, new List <Table> { table } } }; IRepository stateRepository = new XmlWorkItemStateRepository(@"C:\temp\states.xml", null, null); IWorkItemRepository repository = new IssueItemRepository(tablesByGeodatabase, stateRepository); IWorkList workList = new GdbQueryWorkList(repository, "work list"); var items = workList.GetItems().Cast <IssueItem>().ToList(); Assert.AreEqual("Bart", items[0].IssueCodeDescription); Assert.AreEqual("Bart", items[1].IssueCodeDescription); Assert.AreEqual("Bart", items[2].IssueCodeDescription); Assert.AreEqual("Bart", items[3].IssueCodeDescription); } finally { TestUtils.DeleteAllRows(_emptyIssuesGdb, _featureClassName); } }
public void SetupFixture() { // Host must be initialized on an STA thread: //Host.Initialize(); Commons.AGP.Hosting.CoreHostProxy.Initialize(); _poly0 = PolygonConstruction .StartPolygon(0, 0, 0) .LineTo(0, 20, 0) .LineTo(20, 20, 0) .LineTo(20, 0, 0) .ClosePolygon(); _poly1 = PolygonConstruction .StartPolygon(0, 0, 0) .LineTo(0, 40, 0) .LineTo(40, 40, 0) .LineTo(40, 0, 0) .ClosePolygon(); }