protected override TaskPlugin GetTaskPluginCore() { List <FeatureSource> featureSources = null; if (OnlyMergeSelectedFeatures) { SaveSelectedFeaturesToTempFile(); featureSources = new List <FeatureSource> { new ShapeFileFeatureSource(tempFilePath) }; } else { featureSources = SelectedLayers.Select(featureLayer => featureLayer.FeatureSource).ToList(); foreach (var featureSource in featureSources) { featureSource.Close(); if (featureSource.Projection != null) { featureSource.Projection.Close(); } } } var columns = IncludedColumns.Select(c => c.ToFeatureSourceColumn()).ToArray(); var plugin = GisEditor.TaskManager.GetActiveTaskPlugins <MergeTaskPlugin>().FirstOrDefault(); if (plugin != null) { InitializePlugin(plugin, featureSources, columns); } return(plugin); }
override public bool Execute() { var image = ActiveImage; var group = new LayerGroup(image); image.InsertLayer(group, -1); SelectedLayers.ForEach(layer => MoveLayerToGroup(layer, group)); return(true); }
// Re-orders the selected layers private void orderSelectedLayers() { List <FeatureLayer> preSortLayers = SelectedLayers.ToList(); SelectedLayers.Clear(); foreach (FeatureLayer fLayer in AvailableLayers) { if (preSortLayers.Contains(fLayer)) { SelectedLayers.Add(fLayer); } } OnPropertyChanged("SelectedLayers"); }
private void SaveSelectedFeaturesToTempFile() { string tempDir = Path.Combine(GisEditor.InfrastructureManager.TemporaryPath, TempPath); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } tempFilePath = Path.Combine(tempDir, "MergeTemp.shp"); var selectionOverlay = GisEditor.SelectionManager.GetSelectionOverlay(); if (selectionOverlay != null) { var selectedFeatures = selectionOverlay.HighlightFeatureLayer.InternalFeatures .Where(tmpFeature => SelectedLayers.Contains((Layer)tmpFeature.Tag)); string projectionInWKT = Proj4Projection.ConvertProj4ToPrj(GisEditor.ActiveMap.DisplayProjectionParameters); FileExportInfo info = new FileExportInfo(selectedFeatures, GetColumnsOfSelectedLayers(), tempFilePath, projectionInWKT); ShapeFileExporter exporter = new ShapeFileExporter(); exporter.ExportToFile(info); } }
// Initializes the available layers based on the parent service and clears the selected layers private void initializeLayers() { AvailableLayers.Clear(); SelectedLayers.Clear(); // Make sure the service is a type that contains sublayers if (!(Service is FeatureService) && !(Service is MapService)) { return; // Other service types don't have sublayers } // Loop through each sublayer in the service dynamic serviceAsDynamic = Service; foreach (FeatureLayerDescription layer in serviceAsDynamic.Layers) { // Create a feature layer for the sublayer string id = Guid.NewGuid().ToString("N"); FeatureLayer fLayer = new FeatureLayer() { Url = string.Format("{0}/{1}", Service.Url, layer.Id), OutFields = new OutFields() { "*" }, ProxyUrl = ProxyUrl, ID = id }; // Initialize the layer's name string name = !string.IsNullOrEmpty(layer.Name) ? layer.Name : id; MapApplication.SetLayerName(fLayer, name); // Add the layer to the set of available layers AvailableLayers.Add(fLayer); } }