private static LayerOverlay GetFilterStyleOverlay(string accessId) { LayerOverlay layerOverlay = OverlayBuilder.GetOverlayWithFilterStyle(); Dictionary <string, string> savedFilterStyles = GetSavedStyle(accessId); if (savedFilterStyles == null) { return(layerOverlay); } string filterExpression = savedFilterStyles["filterExpression"]; string filterValue = savedFilterStyles["filterValue"]; if (filterExpressions.ContainsKey(filterExpression) && layerOverlay.Layers.Count > 0) { // Get the filter style applied to the drawing Overlay. FilterStyle filterStyle = ((FeatureLayer)layerOverlay.Layers[0]).ZoomLevelSet.ZoomLevel01.CustomStyles[0] as FilterStyle; if (filterStyle != null) { filterStyle.Conditions.Clear(); // Create the filter expression based on the values from client side. string expression = string.Format("{0}{1}{2}", filterExpressions[filterExpression].Item1, filterValue, filterExpressions[filterExpression].Item2); FilterCondition filterCondition = new FilterCondition("Population", expression); filterStyle.Conditions.Add(filterCondition); } } return(layerOverlay); }
private void ZoomToFilterMenuItem_Click(object sender, System.Windows.RoutedEventArgs e) { MenuItem menuItem = (MenuItem)sender; LayerListItem layerListItem = (LayerListItem)menuItem.Tag; LayerListItem tempItem = layerListItem; while (!(tempItem.ConcreteObject is FeatureLayer)) { tempItem = tempItem.Parent; } FeatureLayer selectedLayer = tempItem.ConcreteObject as FeatureLayer; if (selectedLayer != null) { Collection <Feature> resultFeatures = new Collection <Feature>(); selectedLayer.SafeProcess(() => { resultFeatures = selectedLayer.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns); }); FilterStyle filterStyle = (FilterStyle)layerListItem.ConcreteObject; foreach (var condition in filterStyle.Conditions) { resultFeatures = condition.GetMatchingFeatures(resultFeatures); } if (resultFeatures.Count > 0) { RectangleShape boundingBox = ExtentHelper.GetBoundingBoxOfItems(resultFeatures); GisEditor.ActiveMap.CurrentExtent = boundingBox; GisEditor.ActiveMap.Refresh(); } } }
private void ViewFilteredData(object sender, RoutedEventArgs e) { FilterStyle filterStyle = StyleItem.ConcreteObject as FilterStyle; if (filterStyle != null) { ShowFilteredData(styleArguments.FeatureLayer, filterStyle.Conditions); } }
private static void SetDrawingLevelForStyle(Style style) { AreaStyle areaStyle = style as AreaStyle; LineStyle lineStyle = style as LineStyle; PointStyle pointStyle = style as PointStyle; CompositeStyle compositeStyle = style as CompositeStyle; FilterStyle filterStyle = style as FilterStyle; ValueStyle valueStyle = style as ValueStyle; ClassBreakStyle classBreakStyle = style as ClassBreakStyle; if (areaStyle != null) { areaStyle.SetDrawingLevel(); } else if (lineStyle != null) { lineStyle.SetDrawingLevel(); } else if (pointStyle != null) { pointStyle.SetDrawingLevel(); } else if (filterStyle != null) { foreach (var item in filterStyle.Styles) { SetDrawingLevelForStyle(item); } } else if (classBreakStyle != null) { foreach (var item in classBreakStyle.ClassBreaks.SelectMany(v => v.CustomStyles)) { SetDrawingLevelForStyle(item); } } else if (valueStyle != null) { foreach (var item in valueStyle.ValueItems.SelectMany(v => v.CustomStyles)) { SetDrawingLevelForStyle(item); } } else if (compositeStyle != null) { foreach (var subStyle in compositeStyle.Styles) { SetDrawingLevelForStyle(subStyle); } } }
/// <summary> /// Adds a filter style to various categories of the Frisco Crime layer /// </summary> private void AddFilterStyle(ShapeFileFeatureLayer layer) { // Create a filter style based on the "Drugs" Offense Group var drugFilterStyle = new FilterStyle() { Conditions = { new FilterCondition("OffenseGro", "Drugs") }, Styles = { new PointStyle(PointSymbolType.Circle, 28, GeoBrushes.White, GeoPens.Red), new PointStyle(new GeoImage(@"../../../Resources/drugs_icon.png")) { ImageScale = .60 } } }; // Create a filter style based on the "Weapons" Offense Group var weaponFilterStyle = new FilterStyle() { Conditions = { new FilterCondition("OffenseGro", "Weapons") }, Styles = { new PointStyle(PointSymbolType.Circle, 28, GeoBrushes.White, GeoPens.Red), new PointStyle(new GeoImage(@"../../../Resources/weapon_icon.png")) { ImageScale = .25 } } }; // Create a filter style based on the "Vandalism" Offense Group var vandalismFilterStyle = new FilterStyle() { Conditions = { new FilterCondition("OffenseGro", "Vandalism") }, Styles = { new PointStyle(PointSymbolType.Circle, 28, GeoBrushes.White, GeoPens.Red), new PointStyle(new GeoImage(@"../../../Resources/vandalism_icon.png")) { ImageScale = .25 } } }; // Add the filter styles to the CustomStyles collection layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(drugFilterStyle); layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(weaponFilterStyle); layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(vandalismFilterStyle); layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; }
public FilterStyleItem(FilterStyle style) : base(style) { CanRename = true; CanAddInnerStyle = true; filterStyle = style; if (filterStyle != null) { foreach (var innerStyle in filterStyle.Styles.Reverse()) { StyleLayerListItem styleItem = GisEditor.StyleManager.GetStyleLayerListItem(innerStyle); Children.Add(styleItem); } } }
public FilterStyleViewModel(FilterStyle filterStyle, StyleBuilderArguments requiredValues) : base(filterStyle) { filterStyleMatchTypeToStringConverter = new FilterStyleMatchTypeToStringConverter(); HelpKey = "FilterStyleHelp"; this.actualFilterStyle = filterStyle; this.requiredValues = requiredValues; this.filterConditions = new ObservableCollection <FilterConditionViewModel>(); this.filterConditions.CollectionChanged += FilterConditions_CollectionChanged; this.availableStylePlugins = new Dictionary <StylePlugin, Style>(); this.InitializeConditions(filterStyle.Conditions); this.InitializeAvailablePlugins(requiredValues.FeatureLayer); this.InitializeCommands(); FilterConditions_CollectionChanged(null, null); InitializeColumnNameTypes(requiredValues); }
private void ViewDataMenuItem_Click(object sender, System.Windows.RoutedEventArgs e) { MenuItem menuItem = (MenuItem)sender; LayerListItem layerListItem = (LayerListItem)menuItem.Tag; LayerListItem tempItem = layerListItem; while (!(tempItem.ConcreteObject is FeatureLayer)) { tempItem = tempItem.Parent; } FeatureLayer selectedLayer = tempItem.ConcreteObject as FeatureLayer; if (selectedLayer != null) { FilterStyle filterStyle = (FilterStyle)layerListItem.ConcreteObject; FilterStyleViewModel.ShowFilteredData(selectedLayer, filterStyle.Conditions, layerListItem.Name); } }
public Settings( float panelPosX, float panelPosY, bool brushShapesOpen, bool brushEditOpen, bool brushOptionsOpen, bool showTreeMeshData, TreeSorting sorting, SortingOrder sortingOrder, FilterStyle filterStyle, IEnumerable <Brush> forestBrushes, string selectedBrush, SavedInputKey toggleTool, bool keepTreesInNewBrush, bool ignoreVanillaTrees, bool showInfoTooltip, bool playEffect, bool chargeMoney ) { this.PanelPosX = panelPosX; this.PanelPosY = panelPosY; this.BrushShapesOpen = brushShapesOpen; this.BrushEditOpen = brushEditOpen; this.BrushOptionsOpen = brushOptionsOpen; this.ShowTreeMeshData = showTreeMeshData; this.Sorting = sorting; this.SortingOrder = sortingOrder; this.FilterStyle = filterStyle; this.ToggleTool = toggleTool; this.KeepTreesInNewBrush = keepTreesInNewBrush; this.IgnoreVanillaTrees = ignoreVanillaTrees; this.ShowInfoTooltip = showInfoTooltip; this.PlayEffect = playEffect; this.ChargeMoney = chargeMoney; this.Brushes = forestBrushes.ToList(); if (this.Brushes.Count == 0) { var defaultBrush = Brush.Default(); this.Brushes.Add(defaultBrush); } this.SelectBrush(selectedBrush); }
private string SortString(bool htmltags) { string cssSet = ""; string cssClose = ""; if (htmltags) { cssSet = "<span class = \"filterset\">"; cssClose = "</span>"; } using (StringWriter sortWriter = new StringWriter()) { sortWriter.Write($"Sort: Atrribute-"); sortWriter.Write($" {CLEMModel.DisplaySummaryValueSnippet(AttributeTag, "Not set", HTMLSummaryStyle.Filter, htmlTags: htmltags)}"); sortWriter.Write($" {cssSet}{FilterStyle.ToString().ToLower()}{cssClose}"); sortWriter.Write($" {cssSet}{SortDirection.ToString().ToLower()}{cssClose}"); return(sortWriter.ToString()); } }
private void ExportItem_Click(object sender, System.Windows.RoutedEventArgs e) { MenuItem menuItem = (MenuItem)sender; LayerListItem layerListItem = (LayerListItem)menuItem.Tag; LayerListItem featureLayerItem = layerListItem; while (!(featureLayerItem.ConcreteObject is FeatureLayer)) { featureLayerItem = featureLayerItem.Parent; } GisEditor.LayerListManager.SelectedLayerListItem = featureLayerItem; FeatureLayer selectedLayer = featureLayerItem.ConcreteObject as FeatureLayer; if (selectedLayer != null) { Collection <Feature> resultFeatures = new Collection <Feature>(); selectedLayer.SafeProcess(() => { resultFeatures = selectedLayer.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns); }); FilterStyle filterStyle = (FilterStyle)layerListItem.ConcreteObject; foreach (var condition in filterStyle.Conditions) { resultFeatures = condition.GetMatchingFeatures(resultFeatures); } if (resultFeatures.Count > 0) { Collection <FeatureSourceColumn> columns = selectedLayer.FeatureSource.GetColumns(); FeatureLayerPlugin sourcePlugin = GisEditor.LayerManager.GetLayerPlugins(selectedLayer.GetType()).FirstOrDefault() as FeatureLayerPlugin; if (sourcePlugin != null) { WellKnownType type = selectedLayer.FeatureSource.GetFirstFeaturesWellKnownType(); ExportToShapeFile(resultFeatures, columns, sourcePlugin, type); } } } }
protected override void InitializeMap() { MapView.CurrentExtent = new RectangleShape(-13768645, 7689721, -9044012, 110621); ShapeFileFeatureLayer statesLayer = new ShapeFileFeatureLayer(SampleHelper.GetDataPath("states.shp")); LayerOverlay layerOverlay = new LayerOverlay(); layerOverlay.Layers.Add(statesLayer); MapView.Overlays.Add("LayerOverlay", layerOverlay); filterStyle = new FilterStyle(); SimpleFilterCondition newCondition = new SimpleFilterCondition("STATE_NAME", SimpleFilterConditionType.Equal, "Texas"); filterStyle.Conditions.Add(newCondition); GeoColor fillColor = GeoColor.FromArgb(130, GeoColor.FromHtml("#ffb74c")); GeoColor outlineColor = GeoColor.FromHtml("#333333"); filterStyle.Styles.Add(AreaStyles.CreateSimpleAreaStyle(fillColor, outlineColor)); statesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(filterStyle); statesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; }
/// <summary> /// Gets an overlay applied with Filter style. /// </summary> public static LayerOverlay GetOverlayWithFilterStyle() { // Get the file path name from its relative path. string shpFilePathName = GetFullPath(@"App_Data/usStatesCensus2010.shp"); ShapeFileFeatureLayer shapeFileFeatureLayer = new ShapeFileFeatureLayer(shpFilePathName); shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; // Create the FilterStyle. FilterStyle filterStyle = new FilterStyle(); filterStyle.Conditions.Add(new FilterCondition("Population", ">2967297")); filterStyle.Styles.Add(AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(130, GeoColor.FromHtml("#ffb74c")), GeoColor.FromHtml("#333333"))); shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(filterStyle); // Apply projection to the shape file which is used for display shapeFileFeatureLayer.FeatureSource.Projection = GetProjection(); LayerOverlay layerOverlay = new LayerOverlay(); layerOverlay.Layers.Add(shapeFileFeatureLayer); return(layerOverlay); }
public FilterStyleUserControl(FilterStyle style, StyleBuilderArguments requiredValues) { StyleBuilderArguments = requiredValues; InitializeComponent(); filterStyle = style; viewModel = new FilterStyleViewModel(style, requiredValues); DataContext = viewModel; textEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("C#"); string helpUri = GisEditor.LanguageManager.GetStringResource("FilterStyleHelp"); if (!string.IsNullOrEmpty(helpUri)) { HelpUri = new Uri(helpUri); } ScriptComboBox.ItemsSource = Enum.GetNames(typeof(FilterStyleScriptType)).Where(e => e != "None"); textEditor.TextArea.TextEntering += new TextCompositionEventHandler(TextArea_TextEntering); textEditor.TextArea.TextEntered += new TextCompositionEventHandler(TextArea_TextEntered); }
private static bool ValidateFeature(Feature feature, FilterStyle filterStyle) { return(filterStyle.Conditions.FirstOrDefault().GetMatchingFeatures(new Feature[] { feature }).Count > 0); }
public static bool CheckIsValid(this Style style) { AreaStyle areaStyle = style as AreaStyle; LineStyle lineStyle = style as LineStyle; PointStyle pointStyle = style as PointStyle; TextStyle textStyle = style as TextStyle; DotDensityStyle dotDensityStyle = style as DotDensityStyle; ClassBreakStyle classBreakStyle = style as ClassBreakStyle; RegexStyle regexStyle = style as RegexStyle; FilterStyle filterStyle = style as FilterStyle; CompositeStyle componentStyle = style as CompositeStyle; bool isStyleValid = style.IsActive && !string.IsNullOrEmpty(style.Name); if (areaStyle != null) { isStyleValid &= (!areaStyle.FillSolidBrush.Color.IsTransparent || !areaStyle.OutlinePen.Color.IsTransparent || areaStyle.Advanced.FillCustomBrush != null); } else if (lineStyle != null) { isStyleValid &= (!lineStyle.CenterPen.Color.IsTransparent || !lineStyle.OuterPen.Color.IsTransparent || !lineStyle.InnerPen.Color.IsTransparent); } else if (pointStyle != null) { switch (pointStyle.PointType) { case PointType.Symbol: isStyleValid &= (!pointStyle.SymbolPen.Color.IsTransparent || pointStyle.Image != null || !pointStyle.SymbolSolidBrush.Color.IsTransparent || pointStyle.Advanced.CustomBrush != null); break; case PointType.Bitmap: isStyleValid &= pointStyle.Image != null; break; case PointType.Character: isStyleValid &= pointStyle.CharacterFont != null && (!pointStyle.CharacterSolidBrush.Color.IsTransparent || pointStyle.Advanced.CustomBrush != null); break; default: break; } } else if (textStyle != null) { isStyleValid &= !string.IsNullOrEmpty(textStyle.TextColumnName) && (!textStyle.HaloPen.Color.IsTransparent || !textStyle.TextSolidBrush.Color.IsTransparent || textStyle.Advanced.TextCustomBrush != null); } else if (dotDensityStyle != null) { isStyleValid &= !string.IsNullOrEmpty(dotDensityStyle.ColumnName) && (dotDensityStyle.CustomPointStyle != null && CheckIsValid(dotDensityStyle.CustomPointStyle) && dotDensityStyle.PointToValueRatio != 0); } else if (classBreakStyle != null) { isStyleValid &= !string.IsNullOrEmpty(classBreakStyle.ColumnName) && classBreakStyle.ClassBreaks.Count != 0; } else if (regexStyle != null) { isStyleValid &= !string.IsNullOrEmpty(regexStyle.ColumnName) && regexStyle.RegexItems.Count != 0; } else if (filterStyle != null) { isStyleValid &= filterStyle.Conditions.Count > 0; } else if (componentStyle != null) { isStyleValid = true; } return(isStyleValid); }
private string GetErrorMessage() { StringBuilder errorMessage = new StringBuilder(); if (viewModel.FilterConditions.Where(f => f.MatchType.Key != FilterConditionType.DynamicLanguage).Any(c => string.IsNullOrEmpty(c.ColumnName))) { errorMessage.AppendLine("Column name cannot be empty."); } int bracketIndentify = 0; foreach (var condition in viewModel.FilterConditions) { if (condition.IsLeftBracket) { bracketIndentify += 1; } if (condition.IsRightBracket) { bracketIndentify -= 1; } if (bracketIndentify < 0) { break; } } if (bracketIndentify != 0) { errorMessage.AppendLine("The closing bracket must pair with the nearest preceding opening bracket."); } FilterStyle style = viewModel.ActualObject as FilterStyle; if (style != null) { try { var result = style.GetRequiredColumnNames().All(c => viewModel.RequiredValues.ColumnNames.Contains(c)); if (!result) { errorMessage.AppendLine(GisEditor.LanguageManager.GetStringResource("FilterStyleUserControlColumnMessage")); } else { Collection <Feature> features = new Collection <Feature>(); ScriptFilterCondition condition = style.Conditions.OfType <ScriptFilterCondition>().FirstOrDefault(); if (condition != null) { condition.GetMatchingFeatures(features); } } } catch (Exception ex) { errorMessage.AppendLine(ex.Message); GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex)); } } return(errorMessage.ToString()); }
public void AddFilterStyle(FilterStyle filterStyle) { filterStyles.Add(filterStyle); }
public void RemoveFilterStyle(FilterStyle filterStyle) { filterStyles.Remove(filterStyle); }