コード例 #1
0
        private void CreateSeriesChart(FeatureSet fset, ChartQueryLayer chartLayer)
        {
            if (chartLayer.OutputFields != null)
            {
                string[] outFields = chartLayer.OutputFields.Split(',');
                string[] outLabels = (string.IsNullOrEmpty(chartLayer.OutputLabels)) ? outFields : chartLayer.OutputLabels.Split(',');

                bool   isPercentDependent   = chartLayer.ChartOutput.DependentIsPercentage;
                string dependentAxisTitle   = chartLayer.ChartOutput.DependentAxisTitle;
                string independentAxisTitle = chartLayer.ChartOutput.IndependentAxisTitle;
                string independentField     = chartLayer.ChartOutput.IndependentField;

                switch (chartLayer.ChartOutput.ChartType)
                {
                case "Bar":
                    CreateBarSeriesChart(fset, "Bar", outFields, outLabels, chartLayer.Title, independentField, dependentAxisTitle);
                    //CreateGroupBarChart(fset, outFields, outLabels, chartLayer.Title, independentField, independentAxisTitle, dependentAxisTitle);
                    break;

                case "Column":
                    //CreateBarSeriesChart(fset, "Column", outFields, outLabels, chartLayer.Title, independentField, dependentAxisTitle);
                    CreateGroupColumnChart(fset, outFields, outLabels, chartLayer.Title, independentField, independentAxisTitle, dependentAxisTitle);
                    break;

                case "Pie":
                    CreatePieSeriesChart(fset, outFields, outLabels, chartLayer.Title, independentField, dependentAxisTitle, isPercentDependent);
                    break;
                }
            }
            else
            {
                MessageBox.Show("Please enter Output Fields for the widget in the configuration file");
            }
        }
コード例 #2
0
        /// <summary>
        /// Create element chart and add it into an Elememt Layer in the Map
        /// </summary>
        private void CreateElementChart(Graphic graphic, string displayValue)
        {
            ChartQueryLayer chartLayer = queryTool.QueryLayer as ChartQueryLayer;

            string[] outFields = chartLayer.OutputFields.Split(',');
            string[] outLabels = chartLayer.OutputLabels.Split(',');

            string title = string.Format("{0} - {1}", displayValue, chartLayer.Title);
            bool   isPercentDependent = chartLayer.ChartOutput.DependentIsPercentage;
            string dependentAxisTitle = chartLayer.ChartOutput.DependentAxisTitle;

            Chart chart = null;

            switch (chartLayer.ChartOutput.ChartType)
            {
            case "Bar":
            case "Column":
                chart = CreateSingleBarChart(graphic, chartLayer.ChartOutput.ChartType, outFields, outLabels, title, dependentAxisTitle);
                break;

            case "Pie":
                chart            = CreateSinglePieChart(graphic, outFields, outLabels, title, dependentAxisTitle, isPercentDependent);
                chart.Background = new SolidColorBrush(Color.FromArgb(204, 240, 240, 255));
                break;
            }

            Envelope ext = GeometryTool.ExpandGeometryExtent(graphic.Geometry, 0.10);

            ElementLayer.SetEnvelope(chart, ext);
            elementLayer.Children.Clear();
            elementLayer.Children.Add(chart);
            this.MapControl.ZoomTo(ext);
        }
コード例 #3
0
        private void SubmitQueryButton_Click(object sender, RoutedEventArgs e)
        {
            string          sWhere     = txtAttQueryWhere.Text.Trim();
            ChartQueryLayer queryLayer = widgetConfig.ChartLayers[lstAttQueryLayer.SelectedIndex];

            if (!string.IsNullOrEmpty(sWhere))
            {
                this.IsBusy          = true;
                queryTool.QueryLayer = queryLayer;
                queryTool.LayerInfo  = (lstAttQueryLayer.SelectedItem as ComboBoxItem).Tag as ArcGISLayerInfo;
                queryTool.Search(sWhere, queryLayer.ChartOutput.IndependentField, this.MapSRWKID);
            }
        }
コード例 #4
0
        private void SearchLayer_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            txtAttQueryWhere.Text = "ST_ABBREV='KY' and NAME LIKE 'J%'";
            lstAttQueryField.Items.Clear();

            ComboBoxItem    item       = lstAttQueryLayer.SelectedItem as ComboBoxItem;
            ArcGISLayerInfo layerInfo  = item.Tag as ArcGISLayerInfo;
            ChartQueryLayer queryLayer = widgetConfig.ChartLayers[lstAttQueryLayer.SelectedIndex];

            if (layerInfo.IsReady)
            {
                string fieldType = "";

                if (!string.IsNullOrEmpty(queryLayer.QueryFields))
                {
                    string[] queryFields = queryLayer.QueryFields.Split(',');
                    foreach (ArcGISLayerField field in layerInfo.Fields)
                    {
                        if (queryFields.Contains(field.Name, StringComparer.CurrentCultureIgnoreCase))
                        {
                            fieldType = field.Type.Substring(13); // "esriFieldType".Length
                            lstAttQueryField.Items.Add(new ListBoxItem()
                            {
                                Content = string.Format("{0} ({1})", field.Name, fieldType), Tag = field, Height = 20
                            });
                        }
                    }
                }
                else
                {
                    foreach (ArcGISLayerField field in layerInfo.Fields)
                    {
                        fieldType = field.Type.Substring(13); // "esriFieldType".Length
                        if (!fieldType.Equals("Geometry") && !fieldType.Equals("Raster") && !fieldType.Equals("Blob"))
                        {
                            lstAttQueryField.Items.Add(new ListBoxItem()
                            {
                                Content = string.Format("{0} ({1})", field.Name, fieldType), Tag = field, Height = 20
                            });
                        }
                    }
                }
            }
        }