public void TestMethod1() { int percent = 0; var repository = new SdeRepository("srvprodist", "5151", "bdgd", "bdgd", "sde.DEFAULT"); var cache = new InMemoryCache(repository, repository.GetFullExtent("admgid.Switch_PT"), "admgid.Switch_PT"); cache.OnProgress += delegate(int i) { percent = i; }; cache.BuildAllCache(); IList<IGeometry> list = new List<IGeometry>(); var envelop = new Envelope(325017, 320003, 7392018, 7391712); IEnvelope affected = null; var inicio = DateTime.Now; var result = cache.RetriveData(envelop, ref list, ref affected); var tempo1 = (DateTime.Now - inicio).TotalMilliseconds; inicio = DateTime.Now; var fromSde = repository.GetByEnvelope("admgid.Switch_PT", envelop); var tempo2 = (DateTime.Now - inicio).TotalMilliseconds; Assert.AreEqual(list.Count, fromSde.Count()); Assert.IsTrue(tempo1 < tempo2); Assert.AreEqual(percent, 100); }
public void TestMethod1() { var manager = new CacheManager(); var envelop = new Envelope(325017, 320003, 7392018, 7391712); IList<IGeometry> list = new List<IGeometry>(); var start = DateTime.Now; manager.RetriveData(envelop, ref list); var first = (DateTime.Now - start).TotalMilliseconds; start = DateTime.Now; manager.RetriveData(envelop, ref list); var second = (DateTime.Now - start).TotalMilliseconds; Assert.IsTrue(first > second); }
public void Method01() { var sde = new SdeRepository("srvprodist", "5151", "bdgd", "bdgd", "sde.DEFAULT"); var nosql = new MongoRepository(); var cache = new NoSqlCache(sde, nosql, "admgid.Switch_PT"); cache.BuildAllCache(); IList<IGeometry> list = new List<IGeometry>(); var envelop = new Envelope(325017, 320003, 7392018, 7391712); IEnvelope affected = null; var inicio = DateTime.Now; var result = cache.RetriveData(envelop, ref list, ref affected); var tempo1 = (DateTime.Now - inicio).TotalMilliseconds; inicio = DateTime.Now; var fromSde = sde.GetByEnvelope("admgid.Switch_PT", envelop); var tempo2 = (DateTime.Now - inicio).TotalMilliseconds; Assert.AreEqual(list.Count, fromSde.Count()); Assert.IsTrue(tempo1 < tempo2); }
/// <summary> /// Retrive data from cache /// </summary> /// <param name="envelop">Envelope for search</param> /// <param name="outerData">Output data</param> /// <param name="affectedEnvelop">Affected envelop in the grid</param> /// <returns>True if data exists in cache</returns> public bool RetriveData(IEnvelope envelop, ref IList<IGeometry> outerData, ref IEnvelope affectedEnvelop) { affectedEnvelop = new Envelope(envelop.MaxX, envelop.MinX, envelop.MaxY, envelop.MinY); var result = this._noSqlRepository.GetByEnvelope(this._featureName, envelop); outerData = result.ToList(); return result.Count() > 0; }
/// <summary> /// Retrive data from cache /// </summary> /// <param name="envelop">Envelope for search</param> /// <param name="outerData">Output data</param> /// <param name="affectedEnvelop">Affected envelop in the grid</param> /// <returns>True if data exists in cache</returns> public bool RetriveData(IEnvelope envelop, ref IList<IGeometry> outerData, ref IEnvelope affectedEnvelop) { if(outerData == null) { outerData = new List<IGeometry>(); } outerData.Clear(); var box = new BoundingBox(envelop.MinX, envelop.MinY, envelop.MaxX, envelop.MaxY); var quad = this._indexBound.SearchData(box); foreach (var frame in quad) { var entry = frame as IndexEntry; var tree = entry.Data as DynamicRTree; if (tree != null) { var result = tree.Search(box); foreach (var item in result) { outerData.Add(item as IGeometry); } } } var fullBox = new BoundingBox(quad.Select(x => ((IndexEntry)x).Box).ToArray()); affectedEnvelop = new Envelope(fullBox.Max.X, fullBox.Min.X, fullBox.Max.Y, fullBox.Min.Y); return outerData.Count > 0; }