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();
                }
            }
        }
Ejemplo n.º 3
0
        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];
                    }
                });
            });
        }