private static void ShapeFileMenuitem_Click(object sender, RoutedEventArgs e) { var overlay = GisEditor.SelectionManager.GetSelectionOverlay(); Dictionary <FeatureLayer, GeoCollection <Feature> > group = overlay.GetSelectedFeaturesGroup(); if (group.Count > 1) { ChooseExportLayerWindow chooseExportLayerWindow = new ChooseExportLayerWindow(overlay.TargetFeatureLayers, overlay.TargetFeatureLayers); if (chooseExportLayerWindow.ShowDialog().GetValueOrDefault()) { FeatureLayer sourceLayer = chooseExportLayerWindow.SelectedSourceFeatureLayer; sourceLayer.Open(); var allColumns = sourceLayer.FeatureSource.GetColumns(); Collection <Feature> features = GisEditor.SelectionManager.GetSelectedFeatures(sourceLayer); FeatureLayerPlugin plugin = (FeatureLayerPlugin)GisEditor.LayerManager.GetLayerPlugins(sourceLayer.GetType()).FirstOrDefault(); ExportToShapeFile(features, allColumns, plugin, sourceLayer.FeatureSource.GetFirstFeaturesWellKnownType()); } } else if (group.Count == 1) { FeatureLayer layer = group.First().Key; layer.Open(); Collection <Feature> features = group.First().Value; var allColumns = layer.FeatureSource.GetColumns(); FeatureLayerPlugin plugin = (FeatureLayerPlugin)GisEditor.LayerManager.GetLayerPlugins(layer.GetType()).FirstOrDefault(); ExportToShapeFile(features, allColumns, plugin, layer.FeatureSource.GetFirstFeaturesWellKnownType()); } }
private void InitializeColumnNameTypes(StyleBuilderArguments requiredValues) { columnNameTypes = new Dictionary <string, IntermediateColumnType>(); if (RequiredValues.FeatureLayer != null) { FeatureLayerPlugin resultLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(RequiredValues.FeatureLayer.GetType()).LastOrDefault() as FeatureLayerPlugin; if (resultLayerPlugin != null) { Collection <IntermediateColumn> columns = resultLayerPlugin.GetIntermediateColumns(requiredValues.FeatureLayer.FeatureSource); foreach (var item in columns) { columnNameTypes[item.ColumnName] = item.IntermediateColumnType; } } } }
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); } } } }
public ShapeFileBuildIndexAdapter(FeatureLayerPlugin layerPlugin) : base(layerPlugin) { layersInBuildingIndex = new Collection <FeatureLayer>(); }
private void InitializeCommands() { addConditionCommand = new RelayCommand(() => { FilterConditionWindow newFilterConditionWindow = new FilterConditionWindow(); FilterConditionViewModel itemViewModel = new FilterConditionViewModel(RequiredValues); itemViewModel.PropertyChanged += ItemViewModel_PropertyChanged; newFilterConditionWindow.DataContext = itemViewModel; foreach (var item in columnNameTypes) { newFilterConditionWindow.ViewModel.ColumnNameTypes[item.Key] = item.Value; } newFilterConditionWindow.ViewModel.SelectedColumnName = newFilterConditionWindow.ViewModel.ColumnNames.FirstOrDefault(); if (newFilterConditionWindow.ShowDialog().GetValueOrDefault()) { var stylePlugin = GisEditor.StyleManager.GetDefaultStylePlugin(requiredValues.AvailableStyleCategories); filterConditions.Add(newFilterConditionWindow.ViewModel); SyncConditions(); RaisePropertyChanged("FilterConditions"); } }); editConditionCommand = new RelayCommand <FilterConditionViewModel>(v => { var clonedViewModel = v.CloneDeep(); clonedViewModel.ColumnNameTypes.Clear(); foreach (var item in columnNameTypes) { clonedViewModel.ColumnNameTypes[item.Key] = item.Value; } FilterConditionWindow newFilterConditionWindow = new FilterConditionWindow(clonedViewModel); FeatureLayerPlugin resultLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(RequiredValues.FeatureLayer.GetType()).LastOrDefault() as FeatureLayerPlugin; if (resultLayerPlugin != null) { Collection <IntermediateColumn> columns = resultLayerPlugin.GetIntermediateColumns(requiredValues.FeatureLayer.FeatureSource); foreach (var item in columns) { newFilterConditionWindow.ViewModel.ColumnNameTypes[item.ColumnName] = item.IntermediateColumnType; } } if (newFilterConditionWindow.ShowDialog().Value) { var index = FilterConditions.IndexOf(v); if (index != -1) { v = clonedViewModel; FilterConditions.RemoveAt(index); FilterConditions.Insert(index, v); } } SyncConditions(); }); removeConditionCommand = new RelayCommand <FilterConditionViewModel>(v => { if (FilterConditions.Contains(v)) { var messageBoxResult = System.Windows.Forms.MessageBox.Show(GisEditor.LanguageManager.GetStringResource("FilterStyleViewModelConditionRemovedMessage") , "Alert" , System.Windows.Forms.MessageBoxButtons.YesNo); if (messageBoxResult == System.Windows.Forms.DialogResult.Yes) { FilterConditions.Remove(v); SyncConditions(); RaisePropertyChanged("FilterConditions"); } } }); testScriptCommand = new RelayCommand(() => { try { var result = actualFilterStyle.GetRequiredColumnNames().All(c => requiredValues.ColumnNames.Contains(c)); if (!result) { MessageBox.Show(GisEditor.LanguageManager.GetStringResource("FilterStyleUserControlColumnMessage")); } else { Collection <Feature> features = new Collection <Feature>(); ScriptFilterCondition condition = actualFilterStyle.Conditions.OfType <ScriptFilterCondition>().FirstOrDefault(); if (condition != null) { condition.GetMatchingFeatures(features); } MessageBox.Show(GisEditor.LanguageManager.GetStringResource("TestPassMessage")); } } catch (Exception ex) { GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex)); MessageBox.Show(ex.Message); } }); viewDataCommand = new RelayCommand(() => { DataViewerUserControl content = new DataViewerUserControl(); content.ShowDialog(); }); showResultsCommand = new ObservedCommand(() => { ShowFilteredData(requiredValues.FeatureLayer, FilterConditions.Select(f => f.FilterCondition), ""); }, () => filterConditions.Count > 0); }
public DelimitedTextBuildIndexAdapter(FeatureLayerPlugin layerPlugin) : base(layerPlugin) { }
protected BuildIndexAdapter(FeatureLayerPlugin layerPlugin) { this.layerPlugin = layerPlugin; this.backgroundBuildingCallbacks = new Dictionary <string, Action>(); }
private static void ExportToShapeFile(Collection <Feature> resultFeatures, Collection <FeatureSourceColumn> columns, FeatureLayerPlugin sourceLayerPlugin, WellKnownType type) { int count = resultFeatures.Count; if (count > 0) { ShapeFileFeatureLayerPlugin targetLayerPlugin = GisEditor.LayerManager.GetActiveLayerPlugins <ShapeFileFeatureLayerPlugin>().FirstOrDefault(); FeatureLayer resultLayer = null; GetLayersParameters getLayerParameters = new GetLayersParameters(); if (targetLayerPlugin != null) { ConfigureFeatureLayerParameters parameters = targetLayerPlugin.GetCreateFeatureLayerParameters(columns); if (parameters != null && sourceLayerPlugin != null) { bool needColumns = false; Collection <string> tempColumns = new Collection <string>(); if (parameters.CustomData.ContainsKey("Columns")) { tempColumns = parameters.CustomData["Columns"] as Collection <string>; } else { needColumns = true; } var featureColumns = columns.Where(c => needColumns || tempColumns.Contains(c.ColumnName)); if (targetLayerPlugin.CanCreateFeatureLayerWithSourceColumns(sourceLayerPlugin)) { foreach (var item in featureColumns) { FeatureSourceColumn column = new FeatureSourceColumn(item.ColumnName, item.TypeName, item.MaxLength); if (column.TypeName.Equals("c", StringComparison.InvariantCultureIgnoreCase)) { column.TypeName = "Character"; } parameters.AddedColumns.Add(column); } } else { var geoColumns = sourceLayerPlugin.GetIntermediateColumns(featureColumns); foreach (var item in geoColumns) { if (item.TypeName.Equals("c", StringComparison.InvariantCultureIgnoreCase)) { item.TypeName = "Character"; } parameters.AddedColumns.Add(item); } } parameters.WellKnownType = type; //parameters.CustomData["SourceLayer"] = featureLayer; getLayerParameters.LayerUris.Add(parameters.LayerUri); foreach (var item in parameters.CustomData) { getLayerParameters.CustomData[item.Key] = item.Value; } Proj4Projection proj4 = new Proj4Projection(); proj4.InternalProjectionParametersString = parameters.Proj4ProjectionParametersString; proj4.ExternalProjectionParametersString = GisEditor.ActiveMap.DisplayProjectionParameters; proj4.SyncProjectionParametersString(); proj4.Open(); foreach (var item in resultFeatures) { Feature feature = proj4.ConvertToInternalProjection(item); parameters.AddedFeatures.Add(feature); } if (parameters.MemoColumnConvertMode == MemoColumnConvertMode.ToCharacter) { foreach (var item in parameters.AddedColumns.Where(c => c.TypeName.Equals("Memo", StringComparison.InvariantCultureIgnoreCase)).ToList()) { //parameters.AddedColumns.Remove(item); item.TypeName = "Character"; item.MaxLength = 254; DbfColumn tmpDbfColumn = item as DbfColumn; if (tmpDbfColumn != null) { tmpDbfColumn.ColumnType = DbfColumnType.Character; tmpDbfColumn.Length = 254; } } } resultLayer = targetLayerPlugin.CreateFeatureLayer(parameters); resultLayer.FeatureSource.Projection = proj4; resultLayer = targetLayerPlugin.GetLayers(getLayerParameters).FirstOrDefault() as FeatureLayer; } } if (resultLayer != null) { GisEditorMessageBox messageBox = new GisEditorMessageBox(MessageBoxButton.YesNo); messageBox.Owner = Application.Current.MainWindow; messageBox.WindowStartupLocation = WindowStartupLocation.CenterOwner; messageBox.Title = GisEditor.LanguageManager.GetStringResource("NavigatePluginAddToMap"); messageBox.Message = GisEditor.LanguageManager.GetStringResource("DoYouWantToAddToMap"); messageBox.ErrorMessage = string.Empty; if (messageBox.ShowDialog().Value) { GisEditor.ActiveMap.AddLayerToActiveOverlay(resultLayer); GisEditor.ActiveMap.RefreshActiveOverlay(); RefreshArgs refreshArgs = new RefreshArgs(null, "LoadToMapCore"); InvokeRefreshPlugins(GisEditor.UIManager, refreshArgs); GisEditor.ActiveMap.Refresh(); } } } else { System.Windows.Forms.MessageBox.Show("There's no features in this layer.", "Export File"); } }
public TabFileBuildIndexAdapter(FeatureLayerPlugin layerPlugin) : base(layerPlugin) { }
private void AutoGenerate() { if (string.IsNullOrEmpty(ColumnName)) { System.Windows.Forms.MessageBox.Show(GisEditor.LanguageManager.GetStringResource("ValueStyleViewModelColumnCanntEmptyMessage"), "Column is Empty"); } else { FeatureLayer featureLayer = RequiredValues.FeatureLayer; FeatureLayerPlugin featureLayerPlugin = GisEditor.LayerManager.GetLayerPlugins(featureLayer.GetType()).FirstOrDefault() as FeatureLayerPlugin; if (featureLayerPlugin == null) { return; } string selectedColumnName = ColumnName; featureLayer.Open(); if (featureLayer.FeatureSource.CanGetCountQuickly()) { int count = featureLayer.FeatureSource.GetCount(); if (count > 500000) { //MessageBoxResult result = MessageBox.Show(string.Format("{0} contains a large amount of records, it might spend too much time to process. Do you want to continue?", featureLayer.Name), "Info", MessageBoxButton.YesNo, MessageBoxImage.Information); //if (result == MessageBoxResult.No) //{ // return; //} } } //Collection<DistinctColumnValue> distinctColumnValues = null; if (distinctColumnValues == null) { featureLayer.SafeProcess(() => { distinctColumnValues = featureLayer.FeatureSource.GetDistinctColumnValues(selectedColumnName); }); } if (distinctColumnValues != null && distinctColumnValues.Count() > 0) { SimpleShapeType shpType = SimpleShapeType.Unknown; featureLayer.SafeProcess(() => { shpType = featureLayerPlugin.GetFeatureSimpleShapeType(featureLayer); }); foreach (var columnValue in distinctColumnValues) { switch (shpType) { case SimpleShapeType.Point: InitValueItem <PointStyle>(StyleCategories.Point, columnValue, selectedColumnName); break; case SimpleShapeType.Line: InitValueItem <LineStyle>(StyleCategories.Line, columnValue, selectedColumnName); break; case SimpleShapeType.Area: InitValueItem <AreaStyle>(StyleCategories.Area, columnValue, selectedColumnName); break; case SimpleShapeType.Unknown: InitValueItem <Style>(StyleCategories.Composite, columnValue, selectedColumnName); break; } } var itemSourceList = ValueItems.OrderBy(itemValue => itemValue.ValueItem.Value).ToList(); ValueItems.Clear(); foreach (var item in itemSourceList.Where(i => !String.IsNullOrEmpty(i.MatchedValue))) { ValueItems.Add(item); } foreach (var item in itemSourceList.Where(i => String.IsNullOrEmpty(i.MatchedValue))) { ValueItems.Add(item); } SyncActualValueItems(); RaisePropertyChanged("ValueItems"); } else { System.Windows.Forms.MessageBox.Show(GisEditor.LanguageManager.GetStringResource("ValueStyleViewModelColumnNoValueMatchedMessage")); } } }
public TobinBasBuildIndexAdapter(FeatureLayerPlugin layerPlugin) : base(layerPlugin) { }