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()); } }
public static void CopyToEditLayer(Collection <FeatureLayer> selectionLayers) { GisEditorEditInteractiveOverlay overlay = GisEditor.ActiveMap.FeatureLayerEditOverlay; if (overlay != null) { FeatureLayer editingLayer = overlay.EditTargetLayer; Collection <FeatureLayer> sourceLayers = new Collection <FeatureLayer>(selectionLayers.Except(editingLayer).ToList()); if (sourceLayers.Count > 1) { ChooseExportLayerWindow chooseExportLayerWindow = new ChooseExportLayerWindow(sourceLayers, new Collection <FeatureLayer> { editingLayer }); chooseExportLayerWindow.SelectedTargetFeatureLayer = editingLayer; if (chooseExportLayerWindow.ShowDialog().GetValueOrDefault()) { AddSelectedFeaturesToEditingLayer(chooseExportLayerWindow.SelectedSourceFeatureLayer); } else { return; } } else if (selectionLayers.Count == 1) { AddSelectedFeaturesToEditingLayer(selectionLayers[0]); } else if (selectionLayers.Count == 2 && sourceLayers.Count == 1) { AddSelectedFeaturesToEditingLayer(sourceLayers[0]); } } }
private static void AddFeaturesToSelectedLayer(Collection <FeatureLayer> selectedFeaturesLayers, Collection <FeatureLayer> existLayers) { ChooseExportLayerWindow chooseExportLayerWindow = new ChooseExportLayerWindow(selectedFeaturesLayers, existLayers); if (chooseExportLayerWindow.ShowDialog().GetValueOrDefault()) { FeatureLayer sourceLayer = chooseExportLayerWindow.SelectedSourceFeatureLayer; Collection <Feature> features = GisEditor.SelectionManager.GetSelectedFeatures(sourceLayer); InMemoryFeatureLayer targetLayer = chooseExportLayerWindow.SelectedTargetFeatureLayer as InMemoryFeatureLayer; //foreach (var item in sourceLayer.FeatureSource.LinkSources) //{ // targetLayer.FeatureSource.LinkSources.Add(item); //} //foreach (var item in sourceLayer.FeatureSource.LinkExpressions) //{ // targetLayer.FeatureSource.LinkExpressions.Add(item); //} AddFeaturesToInMemoryFeatureLayer(targetLayer, features); if (GisEditor.ActiveMap.GetFeatureLayers().OfType <InMemoryFeatureLayer>().All(l => !l.Name.Equals(targetLayer.Name))) { if (targetLayer.Name.Equals("New layer")) { string name = "ExportResults"; IEnumerable <string> existingNames = GisEditor.ActiveMap.Overlays.OfType <LayerOverlay>() .SelectMany(o => o.Layers).OfType <InMemoryFeatureLayer>().Select(l => l.Name); int index = 0; while (existingNames.Contains(name)) { index++; name = "ExportResults" + index; } targetLayer.Name = name; } GisEditor.ActiveMap.AddLayerToActiveOverlay(targetLayer, TargetLayerOverlayType.Dynamic); } } }