public void MergeData(MapDb.VertexesDataTable vertexes) { try { _lockVr.EnterWriteLock(); _rVertexTree.MergeData(vertexes); } finally { _lockVr.ExitWriteLock(); } Update(new Rectangle(0, 0, Width, Height)); }
private void GenerateSampleData() { _netLayer.ClearData(); //--sample for show smothness var rnd = new Random(); var rangeX = Convert.ToInt32((Settings.Default.RightMapBound - Settings.Default.LeftMapBound) * 100000); var rangeY = Convert.ToInt32((Settings.Default.TopMapBound - Settings.Default.BottomMapBound) * 100000); var longitude1 = Convert.ToDecimal(Settings.Default.LeftMapBound + (double)rnd.Next(0, rangeX) / 100000); var latitude1 = Convert.ToDecimal(Settings.Default.BottomMapBound + (double)rnd.Next(0, rangeY) / 100000); var cableDbRows = new MapDb.CablesDataTable(); var vertexDbRows = new MapDb.VertexesDataTable(); while (cableDbRows.Count < 200) { var cableRow = cableDbRows.NewCablesRow(); cableRow.Longitude1 = longitude1; cableRow.Latitude1 = latitude1; cableRow.Longitude2 = Convert.ToDecimal(Settings.Default.LeftMapBound + (double)rnd.Next(0, rangeX) / 100000); cableRow.Latitude2 = Convert.ToDecimal(Settings.Default.BottomMapBound + (double)rnd.Next(0, rangeY) / 100000); var rect = new CoordinateRectangle(cableRow.Longitude1, cableRow.Latitude1, cableRow.Longitude2, cableRow.Latitude2); cableRow.Length = Convert.ToDecimal(rect.LineLength); if (cableRow.Length <= 5000 && cableRow.Length > 200) { longitude1 = cableRow.Longitude2; latitude1 = cableRow.Latitude2; cableRow.Caption = rect.ToString(); cableDbRows.AddCablesRow(cableRow); var vertexRow = vertexDbRows.NewVertexesRow(); vertexRow.Longitude = longitude1; vertexRow.Latitude = latitude1; var pt = new GeomCoordinate(vertexRow.Longitude, vertexRow.Latitude); vertexRow.Caption = pt.ToString(); vertexDbRows.AddVertexesRow(vertexRow); } } _netLayer.MergeData(vertexDbRows); _netLayer.MergeData(cableDbRows); //--end sample }
public void MergeData(MapDb.VertexesDataTable vertexes) { if (VertexDbRows == null) { return; } VertexDbRows.Merge(vertexes, false, MissingSchemaAction.Error); Parallel.ForEach(vertexes, row => { var newRow = VertexDbRows.FindByID(row.ID); Insert(newRow); }); //apply changes to db here }
public VertexTree() : base(SpatialSheetPowerTypes.Ultra, SpatialSheetPowerTypes.Extra, SpatialSheetPowerTypes.Medium, SpatialSheetPowerTypes.Low) { VertexDbRows = new MapDb.VertexesDataTable(); }