public AppSettings(Configuration.SettingDataTable settingTable) { // load settings from table into a dictionary for quick access _configSetting = new Dictionary <string, string>(); foreach (Configuration.SettingRow settingRow in settingTable) { _configSetting.Add(settingRow.Setting, !settingRow.IsValueNull() ? settingRow.Value : null); } // load projections try { string proj4String = GetConfigSetting("MapProjection"); if (String.IsNullOrWhiteSpace(proj4String)) { _mapCoordinateSystem = new CoordinateSystem("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"); } else { _mapCoordinateSystem = new CoordinateSystem(proj4String); } proj4String = GetConfigSetting("MeasureProjection"); if (String.IsNullOrWhiteSpace(proj4String)) { _measureCoordinateSystem = MapCoordinateSystem; } else { _measureCoordinateSystem = new CoordinateSystem(proj4String); } } catch { } // extract full extent from source setting and project if necessary if (_configSetting["FullExtent"] != null) { try { _fullExtent = EnvelopeExtensions.FromDelimitedString(_configSetting["FullExtent"]); if (_mapCoordinateSystem != null && _measureCoordinateSystem != null && !_mapCoordinateSystem.Equals(_measureCoordinateSystem)) { _fullExtent = _mapCoordinateSystem.ToProjected(_measureCoordinateSystem.ToGeodetic(_fullExtent)); } } catch { } } }
public Envelope GetFullExtentEnvelope() { Envelope fullExtent; if (IsFullExtentNull()) { fullExtent = Configuration.AppSettings.DefaultFullExtent; } else { fullExtent = EnvelopeExtensions.FromDelimitedString(FullExtent); AppSettings appSettings = Configuration.AppSettings; if (!appSettings.MapCoordinateSystem.Equals(appSettings.MeasureCoordinateSystem)) { fullExtent = appSettings.MapCoordinateSystem.ToProjected(appSettings.MeasureCoordinateSystem.ToGeodetic(fullExtent)); } } return(fullExtent); }
private void DeleteMarkup() { int groupId = Request.Form["id"] != null?Convert.ToInt32(Request.Form["id"]) : -1; AppState appState = AppState.FromJson(Request.Form["state"]); double[] geo = Request.Form["geo"].Split(',').Select(o => Convert.ToDouble(o)).ToArray(); double scale = Convert.ToDouble(Request.Form["scale"]); IGeometry searchShape; double distance = 0; if (geo.Length == 4) { searchShape = EnvelopeExtensions.FromArray(geo).ToPolygon(); } else { searchShape = new Point(geo[0], geo[1]); distance = geo[2]; } bool deleted = false; List <int> markupIndexes = new List <int>(); for (int i = 0; i < appState.Markup.Count; ++i) { HitType hitType = MarkupHitTest(appState.Markup[i], searchShape, distance, scale); if (hitType != HitType.None) { markupIndexes.Add(i); deleted = true; } } if (groupId > -1) { try { using (OleDbConnection connection = AppContext.GetDatabaseConnection()) { bool deletedInGroup = false; string sql = String.Format("select MarkupID, Shape, Text, Measured from {0}Markup where GroupID = ?", WebConfigSettings.ConfigurationTablePrefix); using (OleDbCommand command = new OleDbCommand(sql, connection)) { command.Parameters.Add("@1", OleDbType.Integer).Value = groupId; DataTable table = new DataTable(); using (OleDbDataAdapter adapter = new OleDbDataAdapter(command)) { adapter.Fill(table); } command.Parameters.Clear(); for (int i = table.Rows.Count - 1; i >= 0; --i) { DataRow row = table.Rows[i]; HitType hitType = MarkupHitTest(row, searchShape, distance, scale); if (hitType != HitType.None) { command.CommandText = String.Format("update {0}Markup set Deleted = 1 where MarkupID = {1}", WebConfigSettings.ConfigurationTablePrefix, row["MarkupID"]); command.ExecuteNonQuery(); deletedInGroup = true; } } } if (deletedInGroup) { UpdateMarkupGroupLastAccessed(groupId, connection); deleted = true; } } } catch { } } Dictionary <string, object> result = new Dictionary <string, object>(); result["deleted"] = deleted; if (markupIndexes.Count >= 0) { result["markup"] = markupIndexes; } ReturnJson(result); }
public static AppState FromString(string stateString) { Queue values = new Queue(stateString.Split(Separator)); AppState appState = new AppState(); string version = ((string)values.Peek())[0] != VersionMarker ? "2.0" : ((string)values.Dequeue()).Substring(1); int tab; FunctionTab functionTabs; switch (version) { case "2.0": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.TargetLayer = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); values.Dequeue(); // skip SelectionDistance appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); tab = Convert.ToInt32((string)values.Dequeue()); functionTabs = FunctionTab.All; switch (tab) { case 1: functionTabs = FunctionTab.Selection; break; case 2: functionTabs = FunctionTab.Markup; break; case 3: functionTabs = FunctionTab.None; break; } appState.FunctionTabs = functionTabs; appState.ActiveFunctionTab = functionTabs == FunctionTab.All ? FunctionTab.Selection : functionTabs; appState.Extent = EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2); break; case "2.1": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); tab = Convert.ToInt32((string)values.Dequeue()); functionTabs = FunctionTab.All; switch (tab) { case 0: functionTabs = FunctionTab.None; break; case 1: functionTabs = FunctionTab.Selection; break; case 2: functionTabs = FunctionTab.Markup; break; } appState.FunctionTabs = functionTabs; appState.ActiveFunctionTab = functionTabs == FunctionTab.All ? FunctionTab.Selection : functionTabs; appState.Extent = EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2); appState.Coordinates = CoordinatesFromString((string)values.Dequeue()); break; case "2.4": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2); appState.Coordinates = CoordinatesFromString((string)values.Dequeue()); break; case "2.5": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2); appState.Coordinates = CoordinatesFromString((string)values.Dequeue()); appState.VisibleLayers = LayersFromString((string)values.Dequeue()); break; case "3.1": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2); appState.Coordinates = CoordinatesFromString((string)values.Dequeue()); appState.VisibleLayers = LayersFromString((string)values.Dequeue()); appState.Level = (string)values.Dequeue(); if (values.Count > 0) { appState.CoordinateLabels = StringCollection.FromString((string)values.Dequeue()); } break; } return(appState); }
public Envelope GetFullExtentEnvelope() { return(IsFullExtentNull() ? AppSettings.DefaultFullExtent : EnvelopeExtensions.FromDelimitedString(FullExtent)); }
private void SelectFeatures() { AppState appState = AppState.FromJson(Request.Form["state"]); bool updated = false; bool truncated = false; if (Request.Form["geo"] == null) { appState.SelectionManager.SelectTargets(); updated = true; } else { double[] geo = Request.Form["geo"].Split(',').Select(o => Convert.ToDouble(o)).ToArray(); CommonDataFrame dataFrame = AppContext.GetDataFrame(appState.MapTab); Configuration.LayerRow layer = Configuration.Layer.First(o => o.LayerID == (appState.Action == Action.Select ? appState.TargetLayer : appState.SelectionLayer)); CommonLayer commonLayer = dataFrame.Layers.FirstOrDefault(o => String.Compare(o.Name, layer.LayerName, true) == 0); CommonField keyField = commonLayer.FindField(layer.KeyField); string levelQuery = layer.GetLevelQuery(commonLayer, appState.Level); DataTable table = null; if (geo.Length == 4) { Envelope box = EnvelopeExtensions.FromArray(geo); if (!layer.IsMaxSelectionAreaNull() && layer.MaxSelectionArea > 0 && box.Width * box.Height > layer.MaxSelectionArea) { throw new AppException("The selection shape was too large; try again with a smaller shape"); } table = commonLayer.GetFeatureTable(keyField.Name, levelQuery, box.ToPolygon()); } else { table = commonLayer.GetFeatureTable(keyField.Name, levelQuery, geo[0], geo[1], geo[2]); } UpdateMode mode = (UpdateMode)Enum.Parse(typeof(UpdateMode), Request.Form["mode"], true); if (table != null && table.Rows.Count > 0) { if (appState.Action == Action.Select) { updated = UpdateIds(appState.TargetIds, table, mode); if (!layer.IsMaxNumberSelectedNull()) { truncated = appState.TargetIds.Truncate(layer.MaxNumberSelected); } if (mode != UpdateMode.Remove && table.Rows.Count == 1) { updated = UpdateActive(appState, table.Rows[0][0].ToString()) || updated; } } else { updated = UpdateIds(appState.SelectionIds, table, mode); if (!layer.IsMaxNumberSelectedNull()) { appState.SelectionIds.Truncate(layer.MaxNumberSelected); } if (updated) { truncated = appState.SelectionManager.SelectTargets(); } } } else if (mode == UpdateMode.New) { updated = appState.Action == Action.Select ? appState.TargetIds.Count > 0 : appState.SelectionIds.Count > 0; appState.TargetIds.Clear(); appState.SelectionIds.Clear(); appState.ActiveMapId = ""; appState.ActiveDataId = ""; } } if (!updated) { ReturnJson(null); } if (!appState.TargetIds.Contains(appState.ActiveMapId)) { appState.ActiveMapId = ""; appState.ActiveDataId = ""; } Dictionary <String, Object> state = new Dictionary <String, Object>(); state.Add("ActiveMapId", appState.ActiveMapId); state.Add("ActiveDataId", appState.ActiveDataId); state.Add("TargetIds", appState.TargetIds); state.Add("SelectionIds", appState.SelectionIds); Dictionary <String, Object> result = new Dictionary <String, Object>(); result.Add("state", state); result.Add("truncated", truncated); ReturnJson(result); }
public static AppState FromString(string stateString) { Queue values = new Queue(stateString.Split(Separator)); AppState appState = new AppState(); string version = ((string)values.Peek())[0] != VersionMarker ? "2.0" : ((string)values.Dequeue()).Substring(1); int tab; FunctionTab functionTabs; switch (version) { case "2.0": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.TargetLayer = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); values.Dequeue(); // skip SelectionDistance appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); tab = Convert.ToInt32((string)values.Dequeue()); functionTabs = FunctionTab.All; switch (tab) { case 1: functionTabs = FunctionTab.Selection; break; case 2: functionTabs = FunctionTab.Markup; break; case 3: functionTabs = FunctionTab.None; break; } appState.FunctionTabs = functionTabs; appState.ActiveFunctionTab = functionTabs == FunctionTab.All ? FunctionTab.Selection : functionTabs; appState.Extent = ProjectExtent(EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2)); break; case "2.1": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); tab = Convert.ToInt32((string)values.Dequeue()); functionTabs = FunctionTab.All; switch (tab) { case 0: functionTabs = FunctionTab.None; break; case 1: functionTabs = FunctionTab.Selection; break; case 2: functionTabs = FunctionTab.Markup; break; } appState.FunctionTabs = functionTabs; appState.ActiveFunctionTab = functionTabs == FunctionTab.All ? FunctionTab.Selection : functionTabs; appState.Extent = ProjectExtent(EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2)); appState.Markup = CoordinateMarkupFromString((string)values.Dequeue()); break; case "2.4": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = ProjectExtent(EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2)); appState.Markup = CoordinateMarkupFromString((string)values.Dequeue()); break; case "2.5": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = ProjectExtent(EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2)); appState.Markup = CoordinateMarkupFromString((string)values.Dequeue()); appState.VisibleLayers = LayersFromString((string)values.Dequeue()); break; case "3.1": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = ProjectExtent(EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2)); appState.Markup = CoordinateMarkupFromString((string)values.Dequeue()); appState.VisibleLayers = LayersFromString((string)values.Dequeue()); appState.Level = (string)values.Dequeue(); if (values.Count > 0) { var text = (string)values.Dequeue(); if (!String.IsNullOrEmpty(text) && text != "1") { appState.Markup[0].Text = text; } } break; case "4.2": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.Markup = FromJson <List <Markup> >((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = ProjectExtent(EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2)); appState.VisibleLayers = LayersFromString((string)values.Dequeue()); appState.Level = (string)values.Dequeue(); break; case "5.0": appState.Application = (string)values.Dequeue(); appState.MapTab = (string)values.Dequeue(); appState.Search = (string)values.Dequeue(); appState.SearchCriteria = FromJson <Dictionary <String, Object> >((string)values.Dequeue()); appState.Action = (Action)(Convert.ToInt32((string)values.Dequeue())); appState.TargetLayer = (string)values.Dequeue(); appState.TargetIds = StringCollection.FromString((string)values.Dequeue()); appState.ActiveMapId = (string)values.Dequeue(); appState.ActiveDataId = (string)values.Dequeue(); appState.Proximity = (string)values.Dequeue(); appState.SelectionLayer = (string)values.Dequeue(); appState.SelectionIds = StringCollection.FromString((string)values.Dequeue()); appState.Query = (string)values.Dequeue(); appState.DataTab = (string)values.Dequeue(); appState.MarkupCategory = (string)values.Dequeue(); appState.MarkupGroups = StringCollection.FromString((string)values.Dequeue()); appState.Markup = FromJson <List <Markup> >((string)values.Dequeue()); appState.FunctionTabs = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.ActiveFunctionTab = (FunctionTab)(Convert.ToInt32((string)values.Dequeue())); appState.Extent = EnvelopeExtensions.FromDelimitedString((string)values.Dequeue(), Separator2); appState.VisibleLayers = LayersFromString((string)values.Dequeue()); appState.VisibleTiles = LayersFromString((string)values.Dequeue()); appState.Level = (string)values.Dequeue(); break; } return(appState); }