Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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");
        }
Esempio n. 4
0
        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);
            }
        }