示例#1
0
        private void DeleteSelection(EditParameters parameters)
        {
            DF3DApplication app = DF3DApplication.Application;

            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            CommandManagerServices.Instance().StartCommand();
            FDECommand cmd = new FDECommand(false, true);

            foreach (DF3DFeatureClass featureClassInfo in SelectCollection.Instance().FeatureClassInfoMap.Keys)
            {
                ResultSetInfo resultSetInfo = SelectCollection.Instance().FeatureClassInfoMap[featureClassInfo] as ResultSetInfo;
                if (resultSetInfo != null)
                {
                    IFeatureClass featureClass = featureClassInfo.GetFeatureClass();
                    int[]         array        = new int[resultSetInfo.ResultSetTable.Rows.Count];
                    int           num          = 0;
                    foreach (DataRow dataRow in resultSetInfo.ResultSetTable.Rows)
                    {
                        int num2 = int.Parse(dataRow[featureClass.FidFieldName].ToString());
                        array[num++] = num2;
                    }
                    if (featureClass.HasTemporal() && CommonUtils.Instance().EnableTemproalEdit)
                    {
                        TemporalFilter temporalFilter = new TemporalFilterClass();
                        temporalFilter.AddSubField(featureClass.FidFieldName);
                        temporalFilter.IdsFilter = array;
                        ITemporalManager temporalManager = featureClass.TemporalManager;
                        ITemporalCursor  temporalCursor  = temporalManager.Search(temporalFilter);
                        while (temporalCursor.MoveNext())
                        {
                            temporalCursor.Dead(parameters.TemproalTime);
                        }
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalCursor);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalManager);
                        app.Current3DMapControl.FeatureManager.RefreshFeatureClass(featureClass);
                    }
                    else
                    {
                        CommonUtils.Instance().FdeUndoRedoManager.DeleteFeatures(featureClass, array);
                        app.Current3DMapControl.FeatureManager.DeleteFeatures(featureClass, array);
                    }
                }
            }
            SelectCollection.Instance().Clear();
            CommandManagerServices.Instance().CallCommand(cmd);
            app.Workbench.UpdateMenu();
        }
示例#2
0
        private void DeleteFeatures(EditParameters parameters)
        {
            DF3DApplication app = DF3DApplication.Application;

            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            string featureClassGuid = parameters.featureClassGuid;

            if (string.IsNullOrEmpty(featureClassGuid))
            {
                return;
            }
            DF3DFeatureClass featureClassInfo = DF3DFeatureClassManager.Instance.GetFeatureClassByID(featureClassGuid);

            if (featureClassInfo == null)
            {
                return;
            }
            FDECommand cmd = new FDECommand(false, true);

            CommandManagerServices.Instance().StartCommand();
            IFeatureClass featureClass = featureClassInfo.GetFeatureClass();

            if (featureClass.HasTemporal() && CommonUtils.Instance().EnableTemproalEdit)
            {
                System.DateTime temproalTime   = parameters.TemproalTime;
                TemporalFilter  temporalFilter = new TemporalFilterClass();
                temporalFilter.AddSubField(featureClass.FidFieldName);
                temporalFilter.IdsFilter = parameters.fidList;
                ITemporalManager temporalManager = featureClass.TemporalManager;
                ITemporalCursor  temporalCursor  = temporalManager.Search(temporalFilter);
                while (temporalCursor.MoveNext())
                {
                    temporalCursor.Dead(temproalTime);
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalCursor);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalManager);
                app.Current3DMapControl.FeatureManager.RefreshFeatureClass(featureClass);
            }
            else
            {
                CommonUtils.Instance().FdeUndoRedoManager.DeleteFeatures(featureClass, parameters.fidList);
                app.Current3DMapControl.FeatureManager.DeleteFeatures(featureClass, parameters.fidList);
            }
            CommonUtils.Instance().Delete(featureClassInfo, parameters.fidList);
            CommandManagerServices.Instance().CallCommand(cmd);
            app.Workbench.UpdateMenu();
        }
示例#3
0
        private void DeleteFeatures(object param)
        {
            DF3DApplication app = DF3DApplication.Application;

            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            EditParameters   editParameters   = (EditParameters)param;
            string           featureClassGuid = editParameters.featureClassGuid;
            DF3DFeatureClass featureClassInfo = DF3DFeatureClassManager.Instance.GetFeatureClassByID(featureClassGuid);
            string           fcName           = editParameters.fcName;

            if (string.IsNullOrEmpty(fcName) || featureClassInfo == null)
            {
                return;
            }
            int nTotalCount = editParameters.nTotalCount;
            int num         = 0;

            CommandManagerServices.Instance().StartCommand();
            object[] args = null;
            if (featureClassInfo.GetFeatureClass().HasTemporal() && CommonUtils.Instance().EnableTemproalEdit)
            {
                IConnectionInfo connectionInfo = new ConnectionInfoClass();
                connectionInfo.FromConnectionString(featureClassInfo.GetFeatureClass().DataSource.ConnectionInfo.ToConnectionString());
                IDataSource     dataSource     = ((IDataSourceFactory) new DataSourceFactoryClass()).OpenDataSource(connectionInfo);
                IFeatureDataSet featureDataSet = dataSource.OpenFeatureDataset(CommonUtils.Instance().GetCurrentFeatureDataset().Name);
                IFeatureClass   featureClass   = featureDataSet.OpenFeatureClass(featureClassInfo.GetFeatureClass().Name);
                System.DateTime temproalTime   = editParameters.TemproalTime;
                TemporalFilter  temporalFilter = new TemporalFilterClass();
                temporalFilter.AddSubField(featureClass.FidFieldName);
                temporalFilter.IdsFilter = editParameters.fidList;
                ITemporalManager temporalManager = featureClass.TemporalManager;
                ITemporalCursor  temporalCursor  = temporalManager.Search(temporalFilter);
                while (temporalCursor.MoveNext())
                {
                    this._manualResult.WaitOne();
                    System.Threading.Thread.Sleep(1);
                    num++;
                    string userState       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, nTotalCount);
                    int    percentProgress = num * 100 / nTotalCount;
                    this._bgWorker.ReportProgress(percentProgress, userState);
                    temporalCursor.Dead(temproalTime);
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalCursor);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalManager);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(featureClass);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(featureDataSet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(dataSource);
                args = new object[]
                {
                    featureClassInfo,
                    editParameters.fidList
                };
            }
            else
            {
                IFeatureClass featureClass2 = featureClassInfo.GetFeatureClass();
                FDECommand    cmd           = new FDECommand(false, true);
                System.Collections.Generic.List <int> list  = new System.Collections.Generic.List <int>();
                System.Collections.Generic.List <int> list2 = new System.Collections.Generic.List <int>();
                int[] fidList = editParameters.fidList;
                int   i       = 0;
                while (i < fidList.Length)
                {
                    int item = fidList[i];
                    if (this._bgWorker.CancellationPending)
                    {
                        if (list.Count > 0)
                        {
                            CommonUtils.Instance().Delete(featureClassInfo, list.ToArray());
                            list.Clear();
                            break;
                        }
                        break;
                    }
                    else
                    {
                        this._manualResult.WaitOne();
                        System.Threading.Thread.Sleep(1);
                        num++;
                        string userState2       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, nTotalCount);
                        int    percentProgress2 = num * 100 / nTotalCount;
                        this._bgWorker.ReportProgress(percentProgress2, userState2);
                        list2.Add(item);
                        list.Add(item);
                        i++;
                    }
                }
                if (list.Count > 0)
                {
                    CommonUtils.Instance().FdeUndoRedoManager.DeleteFeatures(featureClass2, list.ToArray());
                    list.Clear();
                    CommandManagerServices.Instance().CallCommand(cmd);
                    app.Workbench.UpdateMenu();
                }
                args = new object[]
                {
                    featureClassInfo,
                    list2.ToArray()
                };
            }
            //System.IAsyncResult asyncResult = MainFrmService.ResultSetPanel.BeginInvoke(this._deleteSelection, args);
            //MainFrmService.ResultSetPanel.EndInvoke(asyncResult);
        }
示例#4
0
        private void DeleteSelection(object param)
        {
            DF3DApplication app = DF3DApplication.Application;

            if (app == null || app.Current3DMapControl == null)
            {
                return;
            }
            EditParameters editParameters = (EditParameters)param;

            if (editParameters == null)
            {
                return;
            }
            CommandManagerServices.Instance().StartCommand();
            FDECommand cmd   = new FDECommand(false, true);
            int        count = SelectCollection.Instance().GetCount(false);
            int        num   = 0;

            foreach (DF3DFeatureClass featureClassInfo in SelectCollection.Instance().FeatureClassInfoMap.Keys)
            {
                if (this._bgWorker.CancellationPending)
                {
                    break;
                }
                ResultSetInfo resultSetInfo = SelectCollection.Instance().FeatureClassInfoMap[featureClassInfo] as ResultSetInfo;
                if (resultSetInfo != null)
                {
                    System.Collections.Generic.List <int> list = new System.Collections.Generic.List <int>();
                    if (featureClassInfo.GetFeatureClass().HasTemporal() && CommonUtils.Instance().EnableTemproalEdit)
                    {
                        IConnectionInfo connectionInfo = new ConnectionInfoClass();
                        connectionInfo.FromConnectionString(featureClassInfo.GetFeatureClass().DataSource.ConnectionInfo.ToConnectionString());
                        IDataSource     dataSource     = ((IDataSourceFactory) new DataSourceFactoryClass()).OpenDataSource(connectionInfo);
                        IFeatureDataSet featureDataSet = dataSource.OpenFeatureDataset(CommonUtils.Instance().GetCurrentFeatureDataset().Name);
                        IFeatureClass   featureClass   = featureDataSet.OpenFeatureClass(featureClassInfo.GetFeatureClass().Name);
                        foreach (DataRow dataRow in resultSetInfo.ResultSetTable.Rows)
                        {
                            int item = int.Parse(dataRow[featureClass.FidFieldName].ToString());
                            list.Add(item);
                        }
                        TemporalFilter temporalFilter = new TemporalFilterClass();
                        temporalFilter.AddSubField(featureClass.FidFieldName);
                        temporalFilter.IdsFilter = list.ToArray();
                        ITemporalManager temporalManager = featureClass.TemporalManager;
                        ITemporalCursor  temporalCursor  = temporalManager.Search(temporalFilter);
                        while (temporalCursor.MoveNext())
                        {
                            this._manualResult.WaitOne();
                            System.Threading.Thread.Sleep(1);
                            temporalCursor.Dead(editParameters.TemproalTime);
                            num++;
                            string userState       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, count);
                            int    percentProgress = num * 100 / count;
                            this._bgWorker.ReportProgress(percentProgress, userState);
                        }
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalCursor);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalManager);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(featureClass);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(featureDataSet);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(dataSource);
                    }
                    else
                    {
                        IFeatureClass featureClass2 = featureClassInfo.GetFeatureClass();
                        foreach (DataRow dataRow2 in resultSetInfo.ResultSetTable.Rows)
                        {
                            if (this._bgWorker.CancellationPending)
                            {
                                break;
                            }
                            this._manualResult.WaitOne();
                            System.Threading.Thread.Sleep(1);
                            int item2 = int.Parse(dataRow2[featureClass2.FidFieldName].ToString());
                            list.Add(item2);
                            num++;
                            string userState2       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, count);
                            int    percentProgress2 = num * 100 / count;
                            this._bgWorker.ReportProgress(percentProgress2, userState2);
                        }
                        if (list.Count > 0)
                        {
                            CommonUtils.Instance().FdeUndoRedoManager.DeleteFeatures(featureClass2, list.ToArray());
                            list.Clear();
                        }
                    }
                }
            }
            CommandManagerServices.Instance().CallCommand(cmd);
            app.Workbench.UpdateMenu();
            //System.IAsyncResult asyncResult = MainFrmService.ResultSetPanel.BeginInvoke(this._clearSelection);
            //MainFrmService.ResultSetPanel.EndInvoke(asyncResult);
        }
示例#5
0
        private void DeleteFeatures(object param)
        {
            IFeatureClass   featureClass   = null;
            IDataSource     dataSource     = null;
            IFeatureDataSet featureDataSet = null;

            try
            {
                EditParameters   editParameters   = (EditParameters)param;
                DF3DFeatureClass featureClassInfo = DF3DFeatureClassManager.Instance.GetFeatureClassByID(editParameters.featureClassGuid);
                string           fcName           = editParameters.fcName;
                if (!string.IsNullOrEmpty(fcName) && featureClassInfo != null)
                {
                    dataSource     = ((IDataSourceFactory) new DataSourceFactoryClass()).OpenDataSourceByString(editParameters.connectionInfo);
                    featureDataSet = dataSource.OpenFeatureDataset(editParameters.datasetName);
                    int nTotalCount = editParameters.nTotalCount;
                    int num         = 0;
                    featureClass = featureDataSet.OpenFeatureClass(fcName);
                    string geometryFieldName = featureClassInfo.GetFeatureLayer().GeometryFieldName;
                    featureClass.SetRenderIndexEnabled(geometryFieldName, false);
                    if (featureClass.HasTemporal() && CommonUtils.Instance().EnableTemproalEdit)
                    {
                        System.DateTime temproalTime   = editParameters.TemproalTime;
                        TemporalFilter  temporalFilter = new TemporalFilterClass();
                        temporalFilter.AddSubField(featureClass.FidFieldName);
                        temporalFilter.IdsFilter = editParameters.fidList;
                        ITemporalManager temporalManager = featureClass.TemporalManager;
                        ITemporalCursor  temporalCursor  = temporalManager.Search(temporalFilter);
                        while (temporalCursor.MoveNext())
                        {
                            temporalCursor.Dead(temproalTime);
                            num++;
                            string userState       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, nTotalCount);
                            int    percentProgress = num * 100 / nTotalCount;
                            this._bgWorker.ReportProgress(percentProgress, userState);
                        }
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalCursor);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalManager);
                    }
                    else
                    {
                        featureClass.FeatureDataSet.DataSource.StartEditing();
                        IFdeCursor fdeCursor = featureClass.Update(new QueryFilterClass
                        {
                            IdsFilter = editParameters.fidList
                        });
                        while (fdeCursor.NextRow() != null && !this._bgWorker.CancellationPending)
                        {
                            fdeCursor.DeleteRow();
                            num++;
                            string userState2       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, nTotalCount);
                            int    percentProgress2 = num * 100 / nTotalCount;
                            this._bgWorker.ReportProgress(percentProgress2, userState2);
                        }
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(fdeCursor);
                        featureClass.FeatureDataSet.DataSource.StopEditing(true);
                    }
                    if (this._progressDlg.Created)
                    {
                        string userState3       = StringParser.Parse("${res:feature_progress_updateindex}");
                        int    percentProgress3 = num * 100 / nTotalCount;
                        this._bgWorker.ReportProgress(percentProgress3, userState3);
                    }
                    featureClass.SetRenderIndexEnabled(geometryFieldName, true);
                    featureClass.RebuildRenderIndex(geometryFieldName, gviRenderIndexRebuildType.gviRenderIndexRebuildWithData);
                    object[] args = new object[]
                    {
                        featureClassInfo,
                        editParameters.fidList
                    };
                    //System.IAsyncResult asyncResult = MainFrmService.ResultSetPanel.BeginInvoke(this._deleteSelection, args);
                    //MainFrmService.ResultSetPanel.EndInvoke(asyncResult);
                }
            }
            catch (System.Exception)
            {
                if (featureClass != null)
                {
                    featureClass.FeatureDataSet.DataSource.StopEditing(false);
                }
            }
            finally
            {
                //if (featureClass != null)
                //{
                //    System.Runtime.InteropServices.Marshal.ReleaseComObject(featureClass);
                //    featureClass = null;
                //}
                if (featureDataSet != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(featureDataSet);
                    featureDataSet = null;
                }
                if (dataSource != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataSource);
                    dataSource = null;
                }
            }
        }
示例#6
0
        private void DeleteSelection(object param)
        {
            EditParameters editParameters = (EditParameters)param;

            if (editParameters == null)
            {
                return;
            }
            try
            {
                int             count          = SelectCollection.Instance().GetCount(false);
                int             num            = 0;
                IDataSource     dataSource     = ((IDataSourceFactory) new DataSourceFactoryClass()).OpenDataSourceByString(editParameters.connectionInfo);
                IFeatureDataSet featureDataSet = dataSource.OpenFeatureDataset(editParameters.datasetName);
                foreach (DF3DFeatureClass featureClassInfo in SelectCollection.Instance().FeatureClassInfoMap.Keys)
                {
                    if (this._bgWorker.CancellationPending)
                    {
                        break;
                    }
                    ResultSetInfo resultSetInfo = SelectCollection.Instance().FeatureClassInfoMap[featureClassInfo] as ResultSetInfo;
                    if (resultSetInfo != null)
                    {
                        string        geometryFieldName            = featureClassInfo.GetFeatureLayer().GeometryFieldName;
                        IFeatureClass featureClass                 = featureDataSet.OpenFeatureClass(featureClassInfo.GetFeatureClass().Name);
                        string        fidFieldName                 = featureClass.FidFieldName;
                        System.Collections.Generic.List <int> list = new System.Collections.Generic.List <int>();
                        foreach (DataRow dataRow in resultSetInfo.ResultSetTable.Rows)
                        {
                            int item = int.Parse(dataRow[fidFieldName].ToString());
                            list.Add(item);
                        }
                        featureClass.SetRenderIndexEnabled(geometryFieldName, false);
                        if (featureClass.HasTemporal() && CommonUtils.Instance().EnableTemproalEdit)
                        {
                            TemporalFilter temporalFilter = new TemporalFilterClass();
                            temporalFilter.AddSubField(featureClass.FidFieldName);
                            temporalFilter.IdsFilter = list.ToArray();
                            ITemporalManager temporalManager = featureClass.TemporalManager;
                            ITemporalCursor  temporalCursor  = temporalManager.Search(temporalFilter);
                            while (temporalCursor.MoveNext())
                            {
                                this._manualResult.WaitOne();
                                System.Threading.Thread.Sleep(1);
                                num++;
                                string userState       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, count);
                                int    percentProgress = num * 100 / count;
                                this._bgWorker.ReportProgress(percentProgress, userState);
                                temporalCursor.Dead(editParameters.TemproalTime);
                            }
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalCursor);
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(temporalManager);
                        }
                        else
                        {
                            featureClass.FeatureDataSet.DataSource.StartEditing();
                            IFdeCursor fdeCursor = featureClass.Update(new QueryFilterClass
                            {
                                IdsFilter = list.ToArray()
                            });
                            while (fdeCursor.NextRow() != null && !this._bgWorker.CancellationPending)
                            {
                                System.Threading.Thread.Sleep(1);
                                fdeCursor.DeleteRow();
                                num++;
                                string userState2       = string.Format(StringParser.Parse("${res:feature_progress_delete}"), num, count);
                                int    percentProgress2 = num * 100 / count;
                                this._bgWorker.ReportProgress(percentProgress2, userState2);
                            }
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(fdeCursor);
                            featureClass.FeatureDataSet.DataSource.StopEditing(true);
                        }
                        if (this._progressDlg.Created)
                        {
                            string userState3       = StringParser.Parse("${res:feature_progress_updateindex}");
                            int    percentProgress3 = num * 100 / count;
                            this._bgWorker.ReportProgress(percentProgress3, userState3);
                        }
                        featureClass.SetRenderIndexEnabled(geometryFieldName, true);
                        featureClass.RebuildRenderIndex(geometryFieldName, gviRenderIndexRebuildType.gviRenderIndexRebuildWithData);
                        //System.Runtime.InteropServices.Marshal.ReleaseComObject(featureClass);
                    }
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(featureDataSet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(dataSource);
                //System.IAsyncResult asyncResult = MainFrmService.ResultSetPanel.BeginInvoke(this._clearSelection);
                //MainFrmService.ResultSetPanel.EndInvoke(asyncResult);
            }
            catch (System.Exception)
            {
            }
        }