示例#1
0
        private async Task writeToFile(SelectedFeatures featureSelectionDataSource)
        {
            Task t = new Task(exportFeatures, featureSelectionDataSource);

            t.Start();
            await t;
        }
        private void FillFeaturesToDataTable(Collection <Feature> features, DataTable dataTable)
        {
            if (CalculatedDbfColumn.CalculatedColumns.ContainsKey(featureLayer.FeatureSource.Id))
            {
                CalculatedDbfColumn.UpdateCalculatedRecords(CalculatedDbfColumn.CalculatedColumns[featureLayer.FeatureSource.Id], features, GisEditor.ActiveMap.DisplayProjectionParameters);
            }

            FillUriColumnNames(uriColumnNames, dataTable);

            foreach (var feature in features)
            {
                DataRow newRow = dataTable.NewRow();
                newRow[FeatureIdColumnName]  = feature.Id;
                newRow[IsSelectedColumnName] = SelectedFeatures.Count > 0 && SelectedFeatures.ContainsKey(feature.Id);
                string tempPreviousValue = string.Empty;
                foreach (var item in feature.ColumnValues)
                {
                    if (!string.IsNullOrEmpty(item.Key) && dataTable.Columns.Contains(item.Key))
                    {
                        if (uriColumnNames.Contains(item.Key))
                        {
                            newRow[item.Key] = new Uri(item.Value, UriKind.RelativeOrAbsolute);
                        }
                        else
                        {
                            newRow[item.Key] = string.IsNullOrEmpty(item.Value) ? DBNull.Value : (object)item.Value;
                        }
                        int previousRowCount = tempPreviousValue.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Count();
                        int currentRowCount  = item.Value.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Count();
                        if (previousRowCount != currentRowCount)
                        {
                            EnableColumnVirtualization = false;
                        }
                        tempPreviousValue = item.Value;
                    }
                }
                //foreach (var linkColumnValue in feature.LinkColumnValues)
                //{
                //    newRow[linkColumnValue.Key] = string.Join(Environment.NewLine, linkColumnValue.Value.Select(v => v.Value));
                //}
                dataTable.Rows.Add(newRow);
            }
        }
示例#3
0
        private void exportFeatures(object parameters)
        {
            SelectedFeatures featureSelectionDataSource = (SelectedFeatures)parameters;

            string separator = ",";

            StreamWriter sw = new StreamWriter(_folderPath + "\\" + featureSelectionDataSource.Name + ".csv");

            // now add the header in csv file suffix with "," delimeter except last one

            for (int i = 0; i < featureSelectionDataSource.Fields.Count(); i++)
            {
                sw.Write(featureSelectionDataSource.Fields[i].Name);
                if (i != featureSelectionDataSource.Fields.Count() - 1)
                {
                    sw.Write(",");
                }
            }
            // add new line
            sw.Write(sw.NewLine);

            foreach (Graphic graphic in featureSelectionDataSource.SelectedGraphics)
            {
                StringBuilder sb         = new StringBuilder();
                string        fieldValue = string.Empty;
                for (int i = 0; i < featureSelectionDataSource.Fields.Count(); i++)
                {
                    if (i != featureSelectionDataSource.Fields.Count() - 1)
                    {
                        sb.Append(graphic.Attributes[featureSelectionDataSource.Fields[i].Name] != null ? graphic.Attributes[featureSelectionDataSource.Fields[i].Name] + separator : " " + separator);
                    }
                    else
                    {
                        sb.Append(graphic.Attributes[featureSelectionDataSource.Fields[i].Name] != null ? graphic.Attributes[featureSelectionDataSource.Fields[i].Name] + "" : " ");
                    }
                }
                sw.WriteLine(sb.ToString());
            }

            sw.Flush();
            sw.Close();
        }