private void ExportMenuItem_Click(object sender, 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) { selectedLayer.Open(); RectangleShape bbox = selectedLayer.GetBoundingBox(); Collection <string> filters = ((Styles.Style)layerListItem.ConcreteObject).Filters; Collection <string> returningColumnNames = ((Styles.Style)layerListItem.ConcreteObject).GetRequiredColumnNames(); returningColumnNames = GetRequiredColumnNamesForLink(returningColumnNames, selectedLayer.FeatureSource); Collection <FeatureSourceColumn> featureColumns = selectedLayer.FeatureSource.GetColumns(); IEnumerable <string> allColumns = featureColumns.Select(c => c.ColumnName); ////LINK: //Collection<Feature> allDataFeatures = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, allColumns, filters); ////LINK: //Collection<Feature> features = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, returningColumnNames, filters); Collection <Feature> features = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, returningColumnNames); ////LINK: //List<string> linkSourceNameStarts = GetLinkSourceNameStarts(selectedLayer.FeatureSource.LinkSources); //if (filters != null && filters.Count() > 0 && CheckHasLinkColumns(returningColumnNames, filters, linkSourceNameStarts)) //{ // List<Feature> resultFeatureList = features.Where(f => CheckIsValidLinkFeature(f, linkSourceNameStarts)).ToList(); // features = new Collection<Feature>(resultFeatureList); //} Collection <Feature> resultFeatures = features; // new Collection<Feature>(allDataFeatures.Where(f => features.Any(t => t.Id.Equals(f.Id))).ToList()); FeatureLayerPlugin layerPlugin = (FeatureLayerPlugin)GisEditor.LayerManager.GetLayerPlugins(selectedLayer.GetType()).FirstOrDefault(); ExportToShapeFile(resultFeatures, featureColumns, layerPlugin, selectedLayer.FeatureSource.GetFirstFeaturesWellKnownType()); } }
private void ZoomToDataMenuItem_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) { selectedLayer.Open(); RectangleShape bbox = selectedLayer.GetBoundingBox(); Collection <string> filters = ((Styles.Style)layerListItem.ConcreteObject).Filters; Collection <string> returningColumnNames = ((Styles.Style)layerListItem.ConcreteObject).GetRequiredColumnNames(); returningColumnNames = GetRequiredColumnNamesForLink(returningColumnNames, selectedLayer.FeatureSource); // IEnumerable<string> allColumns = selectedLayer.FeatureSource.GetColumns().Select(c => c.ColumnName); // Collection<Feature> allDataFeatures = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, //GisEditor.ActiveMap.Height, allColumns, filters); Collection <Feature> features = selectedLayer.FeatureSource.GetFeaturesForDrawing(bbox, GisEditor.ActiveMap.Width, GisEditor.ActiveMap.Height, returningColumnNames); //List<string> linkSourceNameStarts = GetLinkSourceNameStarts(selectedLayer.FeatureSource.LinkSources); //if (filters != null && filters.Count() > 0 && CheckHasLinkColumns(returningColumnNames, filters, linkSourceNameStarts)) //{ // List<Feature> resultFeatureList = features.Where(f => CheckIsValidLinkFeature(f, linkSourceNameStarts)).ToList(); // features = new Collection<Feature>(resultFeatureList); //} Collection <Feature> resultFeatures = features;//new Collection<Feature>(allDataFeatures.Where(f => features.Any(t => t.Id.Equals(f.Id))).ToList()); if (resultFeatures.Count > 0) { RectangleShape boundingBox = ExtentHelper.GetBoundingBoxOfItems(resultFeatures); GisEditor.ActiveMap.CurrentExtent = boundingBox; GisEditor.ActiveMap.Refresh(); } } }
private void Initialize() { layerInformation.Add(new LayerInformationItem() { Key = "Layer Name", Value = targetFeatureLayer.Name }); layerInformation.Add(new LayerInformationItem() { Key = "Columns Count", Value = "Loading..." }); layerInformation.Add(new LayerInformationItem() { Key = "Rows Count", Value = "Loading..." }); layerInformation.Add(new LayerInformationItem() { Key = "Upper Left X:", Value = "Loading..." }); layerInformation.Add(new LayerInformationItem() { Key = "Upper Left Y:", Value = "Loading..." }); layerInformation.Add(new LayerInformationItem() { Key = "Lower Right X:", Value = "Loading..." }); layerInformation.Add(new LayerInformationItem() { Key = "Lower Right Y:", Value = "Loading..." }); layerInformation.Add(new LayerInformationItem() { Key = "Feature ID Column", Value = new List <string> { "Loading..." } }); Task.Factory.StartNew(() => { targetFeatureLayer.SafeProcess(() => { LayerInformationItem columnCountItem = GetLayerInformationItem("Columns Count"); try { columnCountItem.Value = targetFeatureLayer.QueryTools.GetColumns().Count.ToString(); } catch (Exception ex) { columnCountItem.Value = ex.Message; } LayerInformationItem rowCountItem = GetLayerInformationItem("Rows Count"); try { rowCountItem.Value = targetFeatureLayer.QueryTools.GetCount().ToString(); } catch (Exception ex) { rowCountItem.Value = ex.Message; } LayerInformationItem upperXItem = GetLayerInformationItem("Upper Left X:"); LayerInformationItem upperYItem = GetLayerInformationItem("Upper Left Y:"); LayerInformationItem lowerXItem = GetLayerInformationItem("Lower Right X:"); LayerInformationItem lowerYItem = GetLayerInformationItem("Lower Right Y:"); if (targetFeatureLayer.HasBoundingBox) { try { RectangleShape boundingBox = targetFeatureLayer.GetBoundingBox(); upperXItem.Value = boundingBox.UpperLeftPoint.X.ToString("N4"); upperYItem.Value = boundingBox.UpperLeftPoint.Y.ToString("N4"); lowerXItem.Value = boundingBox.LowerRightPoint.X.ToString("N4"); lowerYItem.Value = boundingBox.LowerRightPoint.Y.ToString("N4"); } catch (Exception ex) { upperXItem.Value = ex.Message; upperYItem.Value = ex.Message; lowerXItem.Value = ex.Message; lowerYItem.Value = ex.Message; } } else { upperXItem.Value = double.NaN.ToString(); upperYItem.Value = double.NaN.ToString(); lowerXItem.Value = double.NaN.ToString(); lowerYItem.Value = double.NaN.ToString(); } LayerInformationItem featureIdColumnItem = GetLayerInformationItem("Feature ID Column"); List <string> columns = targetFeatureLayer.FeatureSource.GetColumns().Select(c => c.ColumnName).ToList(); columns.Insert(0, PleaseSelectText); featureIdColumnItem.Value = columns; if (string.IsNullOrEmpty(FeatureIDColumn)) { FeatureIDColumn = GetFeatureIdColumn(targetFeatureLayer); } if (string.IsNullOrEmpty(FeatureIDColumn) && columns.Count > 0) { FeatureIDColumn = columns[0]; } }); }); }