public void Test_TileEventArgs() { var mdfId = "Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition"; var conn = new Mock <IServerConnection>(); var mockResSvc = new Mock <IResourceService>(); var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "Sheboygan"); mdf.ResourceID = mdfId; mdf.InitBaseMap(); var group = mdf.BaseMap.AddBaseLayerGroup("Base Layer Group"); group.Visible = true; foreach (double scale in SCALE_LIST.Reverse()) { mdf.BaseMap.AddFiniteDisplayScale(scale); } mdf.SetExtents(-87.764986990962839, 43.691398128787782, -87.695521510899724, 43.797520000480347); mockResSvc.Setup(r => r.GetResource(It.Is <string>(arg => arg == mdfId))).Returns(mdf); conn.Setup(c => c.ResourceService).Returns(mockResSvc.Object); var tileRuns = new TilingRunCollection(conn.Object); tileRuns.Config.DPI = 96; tileRuns.Config.MetersPerUnit = 111319.490793274; tileRuns.Config.RandomizeTileSequence = false; tileRuns.Config.RetryCount = 5; tileRuns.Config.ThreadCount = 1; tileRuns.Config.TileWidth = 300; tileRuns.Config.TileHeight = 300; var tileConf = new MapTilingConfiguration(tileRuns, mdfId); var tileRun = new TilingRunCollection(conn.Object); var conf = new MapTilingConfiguration(tileRun, mdfId); var args4 = new TileProgressEventArgs(CallbackStates.StartRenderTile, conf, "Base Layer Group", 1, 2, 3, false); Assert.Equal(CallbackStates.StartRenderTile, args4.State); Assert.Equal(conf, args4.Map); Assert.Equal("Base Layer Group", args4.Group); Assert.Equal(1, args4.ScaleIndex); Assert.Equal(2, args4.Row); Assert.Equal(3, args4.Column); Assert.False(args4.Cancel); var args5 = new TileRenderingErrorEventArgs(CallbackStates.StartRenderAllMaps, conf, "Base Layer Group", 1, 2, 3, new Exception("uh-oh")); Assert.Equal(CallbackStates.StartRenderAllMaps, args5.State); Assert.Equal(conf, args5.Map); Assert.Equal("Base Layer Group", args5.Group); Assert.Equal(1, args5.ScaleIndex); Assert.Equal(2, args5.Row); Assert.Equal(3, args5.Column); Assert.NotNull(args5.Error); Assert.Equal("uh-oh", args5.Error.Message); }
private void btnBuild_Click(object sender, EventArgs e) { IServerConnection con = m_connection; try { TilingRunCollection bx = new TilingRunCollection(con); if (LimitTileset.Checked) { if (MaxRowLimit.Value > 0) { bx.LimitRows((int)MaxRowLimit.Value); } if (MaxColLimit.Value > 0) { bx.LimitCols((int)MaxColLimit.Value); } } bx.Config.MetersPerUnit = (double)MetersPerUnit.Value; bx.Config.ThreadCount = (int)ThreadCount.Value; bx.Config.RandomizeTileSequence = RandomTileOrder.Checked; foreach (Config c in ReadTree()) { MapTilingConfiguration bm = new MapTilingConfiguration(bx, c.MapDefinition); bm.SetGroups(c.Group); bm.SetScalesAndExtend(c.ScaleIndexes, c.ExtentOverride); bx.Maps.Add(bm); } if (bx.Maps.Count == 0) { MessageBox.Show(Strings.NoMapsOrTileSetsSelected); return; } Progress p = new Progress(bx); if (p.ShowDialog(this) != DialogResult.Cancel) { var ts = p.TotalTime; MessageBox.Show(string.Format(Strings.TileGenerationCompleted, ((ts.Days * 24) + ts.Hours), ts.Minutes, ts.Seconds)); } } catch (Exception ex) { string msg = NestedExceptionMessageProcessor.GetFullMessage(ex); MessageBox.Show(this, string.Format(Strings.InternalError, msg), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void Test_MapTilingConfiguration_WithCustomBounds_TotalCalculation() { var mdfId = "Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition"; var conn = new Mock <IServerConnection>(); var mockResSvc = new Mock <IResourceService>(); var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "Sheboygan"); mdf.ResourceID = mdfId; mdf.InitBaseMap(); var group = mdf.BaseMap.AddBaseLayerGroup("Base Layer Group"); group.Visible = true; foreach (double scale in SCALE_LIST.Reverse()) { mdf.BaseMap.AddFiniteDisplayScale(scale); } mdf.SetExtents(-87.764986990962839, 43.691398128787782, -87.695521510899724, 43.797520000480347); mockResSvc.Setup(r => r.GetResource(It.Is <string>(arg => arg == mdfId))).Returns(mdf); conn.Setup(c => c.ResourceService).Returns(mockResSvc.Object); var tileRuns = new TilingRunCollection(conn.Object); tileRuns.Config.DPI = 96; tileRuns.Config.MetersPerUnit = 111319.490793274; tileRuns.Config.RandomizeTileSequence = false; tileRuns.Config.RetryCount = 5; tileRuns.Config.ThreadCount = 1; tileRuns.Config.TileWidth = 300; tileRuns.Config.TileHeight = 300; var tileConf = new MapTilingConfiguration(tileRuns, mdfId); var customExtents = ObjectFactory.CreateEnvelope(-87.764986990962839, 43.691398128787782, -87.695521510899724, 43.797520000480347); tileConf.SetGroups("Base Layer Group"); tileConf.SetScalesAndExtend(Enumerable.Range(0, 10).ToArray(), customExtents); tileRuns.Maps.Add(tileConf); Assert.Equal(127472, tileConf.TotalTiles); customExtents = ObjectFactory.CreateEnvelope(-87.7278601614039, 43.7443959276596, -87.7135994943579, 43.7592852552018); tileConf.SetScalesAndExtend(Enumerable.Range(0, 10).ToArray(), customExtents); //I don't know the exact number here, but it should be less than the original and //greater than the bogus amount of 10 tiles Assert.True(tileConf.TotalTiles < 127472); Assert.True(tileConf.TotalTiles > 10); }
public void Test_MapTilingConfiguration_TotalCalculation() { var mdfId = "Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition"; var conn = new Mock <IServerConnection>(); var mockResSvc = new Mock <IResourceService>(); var mdf = ObjectFactory.CreateMapDefinition(new Version(1, 0, 0), "Sheboygan"); mdf.ResourceID = mdfId; mdf.InitBaseMap(); var group = mdf.BaseMap.AddBaseLayerGroup("Base Layer Group"); group.Visible = true; foreach (double scale in SCALE_LIST.Reverse()) { mdf.BaseMap.AddFiniteDisplayScale(scale); } mdf.SetExtents(-87.764986990962839, 43.691398128787782, -87.695521510899724, 43.797520000480347); mockResSvc.Setup(r => r.GetResource(It.Is <string>(arg => arg == mdfId))).Returns(mdf); conn.Setup(c => c.ResourceService).Returns(mockResSvc.Object); var tileRuns = new TilingRunCollection(conn.Object); tileRuns.Config.DPI = 96; tileRuns.Config.MetersPerUnit = 111319.490793274; tileRuns.Config.RandomizeTileSequence = false; tileRuns.Config.RetryCount = 5; tileRuns.Config.ThreadCount = 1; tileRuns.Config.TileWidth = 300; tileRuns.Config.TileHeight = 300; var tileConf = new MapTilingConfiguration(tileRuns, mdfId); tileConf.SetGroups("Base Layer Group"); tileConf.SetScalesAndExtend(Enumerable.Range(0, 10).ToArray(), null); tileRuns.Maps.Add(tileConf); Assert.Equal(127472, tileConf.TotalTiles); }
public Progress(TilingRunCollection bx) : this() { m_bx = bx; bx.BeginRenderingMap += OnBeginRenderingMap; bx.BeginRenderingGroup += OnBeginRenderingGroup; bx.BeginRenderingScale += OnBeginRenderingScale; bx.BeginRenderingTile += OnBeginRenderingTile; bx.FinishRenderingTile += OnFinishRenderingTile; bx.FinishRenderingMaps += OnFinishRenderingMaps; bx.FailedRenderingTile += OnFailedRenderingTile; m_tileRuns = new List <TimeSpan>(); m_grandTotalTiles = 0; foreach (MapTilingConfiguration bm in m_bx.Maps) { m_grandTotalTiles += bm.TotalTiles; } m_grandBegin = DateTime.Now; }
public static void Main(string[] args) { System.Windows.Forms.Application.EnableVisualStyles(); System.Windows.Forms.Application.DoEvents(); PreferredSiteList.InitCulture(); //Init the Maestro connection registry with additional providers from ConnectionProviders.xml ConnectionProviderRegistry.InitRegistry(); //Parameters: //mapagent= //username= //password= //mapdefinition= //scaleindex=0,1,2,3,4,5 //basegroups="x","y" //extentoverride=minx,miny,maxx,maxy bool cmdLineMode = false; string mapdefinitions = string.Empty; string scaleindex = string.Empty; string basegroups = string.Empty; string limitRows = string.Empty; string limitCols = string.Empty; string tileWidth = string.Empty; string tileHeight = string.Empty; string DPI = string.Empty; string metersPerUnit = string.Empty; IEnvelope overrideExtents = null; List <string> largs = new List <string>(args); Dictionary <string, string> opts = CommandLineParser.ExtractOptions(largs); if (opts.ContainsKey(TileRunParameters.MAPDEFINITIONS)) { mapdefinitions = opts[TileRunParameters.MAPDEFINITIONS]; } if (opts.ContainsKey(TileRunParameters.SCALEINDEX)) { scaleindex = opts[TileRunParameters.SCALEINDEX]; } if (opts.ContainsKey(TileRunParameters.BASEGROUPS)) { basegroups = opts[TileRunParameters.BASEGROUPS]; } if (opts.ContainsKey(TileRunParameters.LIMITROWS)) { limitRows = opts[TileRunParameters.LIMITROWS]; } if (opts.ContainsKey(TileRunParameters.LIMITCOLS)) { limitCols = opts[TileRunParameters.LIMITCOLS]; } if (opts.ContainsKey(TileRunParameters.TILEWIDTH)) { tileWidth = opts[TileRunParameters.TILEWIDTH]; } if (opts.ContainsKey(TileRunParameters.TILEHEIGHT)) { tileHeight = opts[TileRunParameters.TILEHEIGHT]; } if (opts.ContainsKey(TileRunParameters.DOTSPERINCH)) { DPI = opts[TileRunParameters.DOTSPERINCH]; } if (opts.ContainsKey(TileRunParameters.METERSPERUNIT)) { metersPerUnit = opts[TileRunParameters.METERSPERUNIT]; } if (opts.ContainsKey(TileRunParameters.EXTENTOVERRIDE)) { string[] parts = opts[TileRunParameters.EXTENTOVERRIDE].Split(','); if (parts.Length == 4) { double minx; double miny; double maxx; double maxy; if ( double.TryParse(parts[0], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out minx) && double.TryParse(parts[1], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out miny) && double.TryParse(parts[2], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out maxx) && double.TryParse(parts[3], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out maxy) ) { overrideExtents = ObjectFactory.CreateEnvelope(minx, miny, maxx, maxy); } } } if (largs.IndexOf("batch") >= 0 || largs.IndexOf("/batch") >= 0 || largs.IndexOf("commandline") >= 0 || largs.IndexOf("/commandline") >= 0) { cmdLineMode = true; } try { Console.Clear(); m_loggableProgress = true; } catch { hasConsole = false; m_loggableProgress = false; } IServerConnection connection = null; string[] maps = mapdefinitions.Split(','); string username = string.Empty; string password = string.Empty; if (opts.ContainsKey(TileRunParameters.PROVIDER) && opts.ContainsKey(TileRunParameters.CONNECTIONPARAMS)) { var initP = ConnectionProviderRegistry.ParseConnectionString(opts[TileRunParameters.CONNECTIONPARAMS]); connection = ConnectionProviderRegistry.CreateConnection(opts[TileRunParameters.PROVIDER], initP); } else { if (cmdLineMode) { throw new ArgumentException(string.Format(Strings.MissingRequiredConnectionParameters, TileRunParameters.PROVIDER, TileRunParameters.CONNECTIONPARAMS)); } var frm = new LoginDialog(); if (frm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } username = frm.Username; password = frm.Password; connection = frm.Connection; } if (connection == null) { if (opts.ContainsKey(TileRunParameters.PROVIDER) && opts.ContainsKey(TileRunParameters.CONNECTIONPARAMS)) { var initP = ConnectionProviderRegistry.ParseConnectionString(opts[TileRunParameters.CONNECTIONPARAMS]); connection = ConnectionProviderRegistry.CreateConnection(opts[TileRunParameters.PROVIDER], initP); } else { throw new ArgumentException(string.Format(Strings.MissingRequiredConnectionParameters, TileRunParameters.PROVIDER, TileRunParameters.CONNECTIONPARAMS)); } } if (!cmdLineMode) { SetupRun sr = null; if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password)) { sr = new SetupRun(username, password, connection, maps, opts); } else { sr = new SetupRun(connection, maps, opts); } using (sr) { sr.ShowDialog(); return; } } TilingRunCollection bx = new TilingRunCollection(connection); int x; if (!string.IsNullOrEmpty(limitCols) && int.TryParse(limitCols, out x)) { bx.LimitCols(x); } if (!string.IsNullOrEmpty(limitRows) && int.TryParse(limitRows, out x)) { bx.LimitRows(x); } if (!string.IsNullOrEmpty(tileWidth) && int.TryParse(tileWidth, out x)) { bx.Config.TileWidth = x; } if (!string.IsNullOrEmpty(tileHeight) && int.TryParse(tileHeight, out x)) { bx.Config.TileHeight = x; } if (!string.IsNullOrEmpty(DPI) && int.TryParse(DPI, out x)) { bx.Config.DPI = x; } double d; if (!string.IsNullOrEmpty(metersPerUnit) && double.TryParse(metersPerUnit, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.CurrentCulture, out d)) { bx.Config.MetersPerUnit = d; } if (opts.ContainsKey(TileRunParameters.RANDOMTILEORDER)) { bx.Config.RandomizeTileSequence = true; } if (opts.ContainsKey(TileRunParameters.THREADCOUNT) && int.TryParse(opts[TileRunParameters.THREADCOUNT], out x) && x > 0) { bx.Config.ThreadCount = x; } //Now that all global parameters are set, we can now add the map definitions bx.AddMapDefinitions(maps); //basegroups must be set in each mapdefinition if (!string.IsNullOrEmpty(basegroups)) { List <string> groups = new List <string>(); foreach (string s in basegroups.Split(',')) { string f = s; if (f.StartsWith("\"")) { f = f.Substring(1); } if (f.EndsWith("\"")) { f = f.Substring(0, f.Length - 1); } groups.Add(f); } bx.SetGroups(groups.ToArray()); } if (overrideExtents != null) { List <int> scales = new List <int>(); int tmp; foreach (string s in scaleindex.Split(',')) { if (int.TryParse(s, out tmp)) { scales.Add(tmp); } } foreach (MapTilingConfiguration bm in bx.Maps) { bm.SetScalesAndExtend(scales.ToArray(), overrideExtents); } } else if (!string.IsNullOrEmpty(scaleindex)) { List <int> scales = new List <int>(); int tmp; foreach (string s in scaleindex.Split(',')) { if (int.TryParse(s, out tmp)) { scales.Add(tmp); } } bx.SetScales(scales.ToArray()); } if (!cmdLineMode) { Progress pg = new Progress(bx); pg.ShowDialog(); } else { bx.BeginRenderingMap += OnBeginRenderingMap; bx.FinishRenderingMap += OnFinishRenderingMap; bx.BeginRenderingGroup += OnBeginRenderingGroup; bx.FinishRenderingGroup += OnFinishRenderingGroup; bx.BeginRenderingScale += OnBeginRenderingScale; bx.FinishRenderingScale += OnFinishRenderingScale; bx.BeginRenderingTile += OnBeginRenderingTile; bx.FinishRenderingTile += OnFinishRenderingTile; bx.FailedRenderingTile += OnFailedRenderingTile; mapCount = 0; lastUpdate = DateTime.Now; bx.RenderAll(); } }