예제 #1
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile();

            file.AddFilter(new MyGxFilterTablesAndFeatureClasses(), true);
            file.AllowMultiSelect = false;
            this.btnSelectInputFeatures.Enabled = false;
            if (file.DoModalOpen() == DialogResult.OK)
            {
                this.igxDataset_0 = null;
                if (file.Items.Count != 0)
                {
                    IGxDataset dataset = file.Items.get_Element(0) as IGxDataset;
                    if (dataset != null)
                    {
                        this.igxDataset_0   = dataset;
                        this.textEdit1.Text = (this.igxDataset_0 as IGxObject).Name;
                        this.btnSelectInputFeatures.Enabled = true;
                    }
                    else
                    {
                        this.igxDataset_0   = null;
                        this.textEdit1.Text = "";
                    }
                }
            }
        }
예제 #2
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "选择要素"
            };

            file.RemoveAllFilters();
            file.AddFilter(new MyGxFilterDatasets(), true);
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count == 0)
                {
                    return;
                }
                IGxObject obj2 = items.get_Element(0) as IGxObject;
                this.txtInputFeatureClass.Text = obj2.FullName;
                this.txtInputFeatureClass.Tag  = obj2;
            }
            if (this.txtInputFeatureClass.Text.Length > 0)
            {
                this.btnAdd.Enabled = true;
            }
        }
예제 #3
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            switch (ExportType)
            {
            case EnumExportType.FeatureClass:
            {
                frmOpenFile frm = new frmOpenFile();
                frm.AllowMultiSelect = false;
                frm.AddFilter(new MyGxFilterWorkspaces(), false);
                frm.AddFilter(new MyGxFilterDatasets(), true);
                frm.Text = @"选择输出位置";
                if (frm.DoModalOpen() == DialogResult.OK)
                {
                    IGxObject gxObject = frm.Items.get_Element(0) as IGxObject;
                    if (gxObject is IGxDatabase)
                    {
                        IGxDatabase gxDatabase = gxObject as IGxDatabase;
                        _dataset   = null;
                        _workspace = gxDatabase.Workspace;
                        _saveType  = EnumSaveType.Workspace;
                    }
                    else if (gxObject is IGxDataset)
                    {
                        IGxDataset gxDataset = gxObject as IGxDataset;
                        _dataset   = gxDataset.Dataset;
                        _workspace = _dataset.Workspace;
                        _saveType  = EnumSaveType.Dataset;
                    }
                }
            }
            break;

            case EnumExportType.Shapefile:
            {
                FolderBrowserDialog dialog = new FolderBrowserDialog();
                dialog.ShowNewFolderButton = true;
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    this.txtPath.Text = dialog.SelectedPath;

                    Type factoryType = Type.GetTypeFromProgID("esriDataSourcesFile.ShapefileWorkspaceFactory");
                    IWorkspaceFactory shapefileWorkspaceFactory = Activator.CreateInstance(factoryType) as IWorkspaceFactory;
                    if (shapefileWorkspaceFactory == null)
                    {
                        return;
                    }
                    _dataset   = null;
                    _workspace = shapefileWorkspaceFactory.OpenFromFile(dialog.SelectedPath, 0);
                    _saveType  = EnumSaveType.Workspace;
                }
            }
            break;
            }
        }
예제 #4
0
        private void btnSelectGDB_Click(object sender, EventArgs e)
        {
            frmOpenFile _frmOpenFile = new frmOpenFile();

            _frmOpenFile.AddFilter(new MyGxFilterEnteripesGeoDatabases(), true);
            if (_frmOpenFile.DoModalOpen() == System.Windows.Forms.DialogResult.OK)
            {
                this.textBox1.Tag  = _frmOpenFile.SelectedItems[0];
                this.textBox1.Text = (_frmOpenFile.SelectedItems[0] as IGxObject).FullName;
            }
        }
예제 #5
0
        private void btnSelectIn_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                AllowMultiSelect = false,
                Text             = "选择要素"
            };

            file.RemoveAllFilters();
            file.AddFilter(new MyGxFilterDatasets(), true);
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    this.igxDataset_0      = items.get_Element(0) as IGxDataset;
                    this.idataset_0        = this.igxDataset_0.Dataset;
                    this.txtInputFeat.Text = (this.igxDataset_0 as IGxObject).FullName;
                    this.iworkspace_0      = this.idataset_0.Workspace;
                    string        tableName = this.idataset_0.Name + "_Project1";
                    IFieldChecker checker   = new FieldCheckerClass
                    {
                        InputWorkspace = this.iworkspace_0
                    };
                    checker.ValidateTableName(tableName, out this.string_0);
                    this.txtOutFeat.Text = this.iworkspace_0.PathName + @"\" + this.string_0;
                    if ((this.iworkspace_0.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) ||
                        (this.iworkspace_0.Type == esriWorkspaceType.esriLocalDatabaseWorkspace))
                    {
                        if (((IWorkspace2)this.iworkspace_0).get_NameExists(esriDatasetType.esriDTFeatureClass,
                                                                            this.string_0))
                        {
                            this.bool_0 = true;
                        }
                        else
                        {
                            this.bool_0 = false;
                        }
                    }
                    else if (this.iworkspace_0.Type == esriWorkspaceType.esriFileSystemWorkspace)
                    {
                        if (File.Exists(this.txtOutFeat.Text + ".shp"))
                        {
                            this.bool_0 = true;
                        }
                        else
                        {
                            this.bool_0 = false;
                        }
                    }
                }
            }
        }
예제 #6
0
        private void btnImportFC_Click(object sender, EventArgs e)
        {
            frmOpenFile frm = new frmOpenFile();

            frm.AddFilter(new MyGxFilterFeatureClasses(), true);
            if (frm.DoModalOpen() != DialogResult.OK)
            {
                return;
            }
            IGxDataset gxObject = frm.SelectedItems[0] as IGxDataset;

            if (gxObject == null)
            {
                return;
            }
            DialogResult result = MessageBox.Show("导入字段时是否清空已有字段?", "询问", MessageBoxButtons.YesNoCancel,
                                                  MessageBoxIcon.Question);

            if (result == DialogResult.Cancel)
            {
                return;
            }
            if (result == DialogResult.Yes)
            {
                _fieldTable.Rows.Clear();
            }
            IFeatureClass pClass = gxObject.Dataset as IFeatureClass;

            for (int i = 0; i < pClass.Fields.FieldCount; i++)
            {
                IField pField = pClass.Fields.Field[i];
                if (pField.Type == esriFieldType.esriFieldTypeGeometry || pField.Type == esriFieldType.esriFieldTypeOID)
                {
                    continue;
                }
                string pFldName = pField.Name;
                if (_fieldTable.Select("FieldName='" + pFldName + "'").Length > 0)
                {
                    continue;
                }
                DataRow pRow = _fieldTable.NewRow();
                pRow["FieldName"] = pField.Name;
                pRow["AliasName"] = pField.AliasName;
                pRow["AllowNull"] = pField.IsNullable;
                pRow["FieldType"] = FieldHelper.ConvertToSimpleString(pField.Type);
                //pRow["IsKey"] = pField.DefaultValue==null ? "": pField.DefaultValue;
                pRow["FieldLength"] = pField.Length;
                pRow["Precision"]   = pField.Precision;
                _fieldTable.Rows.Add(pRow);
            }
        }
예제 #7
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "选择表"
            };

            file.AddFilter(new MyGxFilterTables(), true);
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    IGxObject obj2    = items.get_Element(0) as IGxObject;
                    ITable    dataset = (obj2 as IGxDataset).Dataset as ITable;
                    this.txtTable.Tag = dataset;
                    if (dataset != null)
                    {
                        this.txtTable.Text = obj2.FullName;
                        string[] strArray = obj2.Name.Split(new char[] { '.' });
                        string   str      = strArray[strArray.Length - 1];
                        this.txtDomainName.Text = str;
                        IFields fields = dataset.Fields;
                        for (int i = 0; i < fields.FieldCount; i++)
                        {
                            IField field = fields.get_Field(i);
                            if ((((field.Type != esriFieldType.esriFieldTypeBlob) &&
                                  (field.Type != esriFieldType.esriFieldTypeGeometry)) &&
                                 (field.Type != esriFieldType.esriFieldTypeRaster)) &&
                                (field.Type != esriFieldType.esriFieldTypeOID))
                            {
                                this.cdoCodeField.Properties.Items.Add(field.AliasName);
                                if (field.Type == esriFieldType.esriFieldTypeString)
                                {
                                    this.cboNameField.Properties.Items.Add(field.AliasName);
                                }
                            }
                        }
                        if (this.cdoCodeField.Properties.Items.Count > 0)
                        {
                            this.cdoCodeField.SelectedIndex = 0;
                        }
                        if (this.cboNameField.Properties.Items.Count > 0)
                        {
                            this.cboNameField.SelectedIndex = 0;
                        }
                    }
                }
            }
        }
예제 #8
0
        private void btnImportStruct_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile();

            file.AddFilter(new MyGxFilterTablesAndFeatureClasses(), true);
            file.AllowMultiSelect = false;
            if ((file.DoModalOpen() == DialogResult.OK) && (file.Items.Count != 0))
            {
                IGxDataset dataset = file.Items.get_Element(0) as IGxDataset;
                if (dataset != null)
                {
                    ITable table = dataset.Dataset as ITable;
                    if (table != null)
                    {
                        int    num;
                        IField field;
                        for (num = this.ifields_0.FieldCount - 1; num > 1; num--)
                        {
                            field = this.ifields_0.get_Field(num);
                            if ((field.Type != esriFieldType.esriFieldTypeOID) &&
                                (field.Type != esriFieldType.esriFieldTypeGeometry))
                            {
                                (this.ifields_0 as IFieldsEdit).DeleteField(field);
                                if (this.bool_2)
                                {
                                    this.ifieldsEdit_1.AddField(field);
                                }
                            }
                        }
                        IFields fields = table.Fields;
                        for (num = 0; num < fields.FieldCount; num++)
                        {
                            field = fields.get_Field(num);
                            if ((field.Type != esriFieldType.esriFieldTypeOID) &&
                                (field.Type != esriFieldType.esriFieldTypeGeometry))
                            {
                                (this.ifields_0 as IFieldsEdit).AddField(field);
                                if (this.bool_2)
                                {
                                    this.ifieldsEdit_0.AddField(field);
                                }
                            }
                        }
                    }
                    this.method_2(this.listView2, this.ifields_0);
                    this.method_5(this.listView2.Items[0].Tag as IField, true);
                }
            }
        }
예제 #9
0
        public static IFeatureClass SelectFeatureClassDialog()
        {
            frmOpenFile frm = new frmOpenFile();

            frm.AllowMultiSelect = false;
            frm.AddFilter(new MyGxFilterFeatureClasses(), true);
            frm.Text = @"选择要素类";
            if (frm.DoModalOpen() == DialogResult.OK)
            {
                IGxObject         gxObject  = frm.Items.get_Element(0) as ArcGIS.Catalog.IGxObject;
                IFeatureClassName className = gxObject.InternalObjectName as IFeatureClassName;
                return(((IName)className).Open() as IFeatureClass);
            }
            return(null);
        }
예제 #10
0
        public override void OnClick()
        {
            frmOpenFile frmOpenFile = new frmOpenFile();

            frmOpenFile.Text             = "添加数据";
            frmOpenFile.AllowMultiSelect = true;
            frmOpenFile.AddFilter(new MyGxFilterDatasets(), true);
            if (frmOpenFile.DoModalOpen() == System.Windows.Forms.DialogResult.OK)
            {
                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
                this.add3DDataHelper_0 = new Add3DDataHelper(this.method_0());
                this.ilist_0           = frmOpenFile.SelectedItems;
                this.add3DDataHelper_0.LoadData(this.ilist_0);
                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
            }
        }
예제 #11
0
        private void AddConnection()
        {
            frmOpenFile frm = new frmOpenFile();

            frm.AddFilter(new MyGxFilterGeoDatabases(), true);
            frm.Text = "选择数据库";
            if (frm.DoModalOpen() == DialogResult.OK)
            {
                Cursor.Current = Cursors.WaitCursor;
                IGxDatabase database = frm.Items.get_Element(0) as IGxDatabase;
                if (database != null)
                {
                    ITemplateDatabase findDB =
                        _databases.FirstOrDefault(c => c.DatabaseName == (database as IGxObject).FullName);
                    if (findDB != null)
                    {
                        MessageService.Current.Warn("数据库已经连接,无需再次连接!");
                        return;
                    }
                    IFeatureWorkspace pWorkspace =
                        Yutai.ArcGIS.Common.Helpers.WorkspaceHelper.GetWorkspace((database as IGxObject).FullName);
                    if (pWorkspace == null)
                    {
                        return;
                    }
                    bool isExists1 = ((IWorkspace2)pWorkspace).get_NameExists(esriDatasetType.esriDTTable, "YT_TEMPLATE_FEATURECLASS");
                    // bool isExists2 = ((IWorkspace2)pWorkspace).get_NameExists(esriDatasetType.esriDTTable, "YT_TEMPLATE_FIELD");
                    bool isExists3 = ((IWorkspace2)pWorkspace).get_NameExists(esriDatasetType.esriDTTable, "YT_TEMPLATE_DOMAIN");
                    bool isExists4 = ((IWorkspace2)pWorkspace).get_NameExists(esriDatasetType.esriDTTable, "YT_TEMPLATE_DATASET");
                    ITemplateDatabase templateDatabase = new TemplateDatabase();
                    templateDatabase.DatabaseName = (database as IGxObject).FullName;
                    templateDatabase.Workspace    = pWorkspace;
                    _databases.Add(templateDatabase);
                    LoadDatabases();
                    //if (isExists4 && isExists1 && isExists3 && isExists2)
                    //{
                    //    this.txtDB.Text = BuildConnectionString((database as IGxObject).FullName);
                    //}
                    //else
                    //{
                    //    MessageService.Current.Warn("该数据库内没有地图制图模板数据!请重新选择!");
                    //}
                }
                Cursor.Current = Cursors.Default;
            }
            // LoadDatabases();
        }
예제 #12
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile();

            file.AddFilter(new MyGxFilterTablesAndFeatureClasses(), true);
            file.AllowMultiSelect = false;
            if ((file.DoModalOpen() == DialogResult.OK) && (file.Items.Count != 0))
            {
                IGxDataset dataset = file.Items.get_Element(0) as IGxDataset;
                if (dataset != null)
                {
                    if ((this.igxDataset_0.Type == esriDatasetType.esriDTFeatureClass) &&
                        (dataset.Type == esriDatasetType.esriDTFeatureClass))
                    {
                        if ((this.igxDataset_0.Dataset as IFeatureClass).ShapeType ==
                            (dataset.Dataset as IFeatureClass).ShapeType)
                        {
                            if (
                                this.method_0(this.igxDataset_0.DatasetName.WorkspaceName,
                                              dataset.DatasetName.WorkspaceName) &&
                                (this.igxDataset_0.DatasetName.Name == dataset.DatasetName.Name))
                            {
                                MessageBox.Show("源对象类和目标对象类必须不同!");
                            }
                            else
                            {
                                this.igxDataset_1   = dataset;
                                this.textEdit1.Text = (this.igxDataset_1 as IGxObject).Name;
                            }
                        }
                        else
                        {
                            MessageBox.Show("装载数据必须和源数据有相同的几何数据类型!");
                        }
                    }
                    else
                    {
                        this.igxDataset_1   = dataset;
                        this.textEdit1.Text = (this.igxDataset_1 as IGxObject).Name;
                    }
                }
                else
                {
                    this.textEdit1.Text = "";
                }
            }
        }
예제 #13
0
        private void cmdLayerBrowse_Click(object sender, EventArgs e)
        {
            frmOpenFile frmOpenFile = new frmOpenFile();

            frmOpenFile.AddFilter(new MyGxFilterPolygonFeatureClasses(), true);
            frmOpenFile.Text = "选择要素";
            if (frmOpenFile.DoModalOpen() == System.Windows.Forms.DialogResult.OK)
            {
                IArray items = frmOpenFile.Items;
                for (int i = 0; i < items.Count; i++)
                {
                    IGxDataset gxDataset = items.get_Element(i) as IGxDataset;
                    this.cmbBuildingLayer.Items.Add(new ObjectWrap(gxDataset.Dataset));
                }
                this.cmbBuildingLayer.SelectedIndex = this.cmbBuildingLayer.Items.Count - 1;
            }
        }
예제 #14
0
        public static IWorkspace SelectWorkspaceDialog()
        {
            frmOpenFile frm = new frmOpenFile();

            frm.AllowMultiSelect = false;
            frm.AddFilter(new MyGxFilterWorkspaces(), true);
            frm.Text = @"选择地理数据库";
            if (frm.DoModalOpen() == DialogResult.OK)
            {
                IGxObject gxObject = frm.Items.get_Element(0) as ArcGIS.Catalog.IGxObject;
                if (gxObject is IGxDatabase)
                {
                    IGxDatabase gxDatabase = gxObject as IGxDatabase;
                    return(gxDatabase.Workspace);
                }
            }
            return(null);
        }
예제 #15
0
        public static IFeatureClass SelectFeatureClassDialog()
        {
            frmOpenFile frm = new frmOpenFile()
            {
                Text             = @"添加数据",
                AllowMultiSelect = false
            };

            frm.AddFilter(new MyGxFilterFeatureClasses(), true);
            if (frm.DoModalOpen() == DialogResult.OK)
            {
                IGxObject         gxObject     = frm.Items.get_Element(0) as IGxObject;
                IFeatureClassName className    = gxObject.InternalObjectName as IFeatureClassName;
                IFeatureClass     featureClass = ((IName)className).Open() as IFeatureClass;
                return(featureClass);
            }
            return(null);
        }
예제 #16
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            int         num;
            frmOpenFile file = new frmOpenFile
            {
                Text = "添加数据"
            };

            file.RemoveAllFilters();
            file.AllowMultiSelect = true;
            if (this.iarray_0.Count != 0)
            {
                for (num = 0; num < this.iarray_0.Count; num++)
                {
                    if (num == 0)
                    {
                        file.AddFilter(this.iarray_0.get_Element(num) as IGxObjectFilter, true);
                    }
                    else
                    {
                        file.AddFilter(this.iarray_0.get_Element(num) as IGxObjectFilter, false);
                    }
                }
            }
            else
            {
                file.AddFilter(new MyGxFilterDatasets(), true);
            }
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    for (num = 0; num < items.Count; num++)
                    {
                        IGxObject obj2 = items.get_Element(num) as IGxObject;
                        this.ilist_0.Add(obj2.InternalObjectName);
                        this.listView1.Items.Add(obj2.FullName);
                    }
                }
            }
        }
예제 #17
0
        public override void OnClick()
        {
            frmOpenFile _frmOpenFile = new frmOpenFile()
            {
                Text             = "添加数据",
                AllowMultiSelect = true
            };

            _frmOpenFile.AddFilter(new MyGxFilterDatasets(), true);
            if (_frmOpenFile.DoModalOpen() == DialogResult.OK)
            {
                Cursor.Current      = Cursors.WaitCursor;
                this.pHelper        = new AddDataHelper(this.GetMap() as IActiveView);
                this.ilist_0        = _frmOpenFile.SelectedItems;
                this.pHelper.m_pApp = _context;
                this.pHelper.LoadData(this.ilist_0);

                Cursor.Current = Cursors.Default;
            }
        }
예제 #18
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile();

            if (this.int_0 == 0)
            {
                file.AddFilter(new MyGxFilterGeoDatabases(), true);
            }
            else
            {
                file.AddFilter(new MyGxFilterPersonalGeodatabases(), true);
            }
            if ((file.DoModalOpen() == DialogResult.OK) && (file.Items.Count > 0))
            {
                IGxObject obj2 = file.Items.get_Element(0) as IGxObject;
                if (obj2 is IGxDatabase)
                {
                    if (this.int_0 == 0)
                    {
                        this.iversionedWorkspace_0 = (obj2 as IGxDatabase).Workspace as IVersionedWorkspace;
                        if (this.iversionedWorkspace_0 == null)
                        {
                            MessageBox.Show("请选择企业数据库!");
                            this.textEdit1.Text = "";
                            this.btnOK.Enabled  = false;
                        }
                        else
                        {
                            this.textEdit1.Text = obj2.FullName;
                            this.btnOK.Enabled  = true;
                        }
                    }
                    else
                    {
                        this.textEdit1.Text     = obj2.FullName;
                        this.idatabaseCompact_0 = (obj2 as IGxDatabase).Workspace as IDatabaseCompact;
                        this.btnOK.Enabled      = this.idatabaseCompact_0 != null;
                    }
                }
            }
        }
예제 #19
0
        public override void OnClick()
        {
            frmOpenFile frmOpenFile = new frmOpenFile();

            frmOpenFile.Text             = "添加数据";
            frmOpenFile.AllowMultiSelect = false;
            frmOpenFile.AddFilter(new MyGxFilterPolylineFeatureClasses(), true);
            if (frmOpenFile.DoModalOpen() == System.Windows.Forms.DialogResult.OK)
            {
                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
                IArray        items        = frmOpenFile.Items;
                IGxDataset    gxDataset    = items.get_Element(0) as IGxDataset;
                IFeatureClass featureClass = gxDataset.Dataset as IFeatureClass;
                new frmDGXFeatureClassToTin
                {
                    FeatureClass = featureClass,
                    m_pMap       = this._plugin.Scene as IBasicMap
                }.ShowDialog();
                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
            }
        }
        private void btnSetDatasources_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text             = "设置数据源",
                AllowMultiSelect = false
            };

            if (this.idataLayer_0 is IFeatureLayer)
            {
                file.AddFilter(new MyGxFilterFeatureClasses(), true);
            }
            if ((file.DoModalOpen() == DialogResult.OK) && (file.Items.Count == 1))
            {
                IGxObject obj2 = file.Items.get_Element(0) as IGxObject;
                IName     internalObjectName = obj2.InternalObjectName;
                bool      flag = false;
                if ((this.idataLayer_0.get_DataSourceSupported(internalObjectName) &&
                     (this.idataLayer_0 is IFeatureLayer)) && (obj2 is IGxDataset))
                {
                    IDataset dataset = (obj2 as IGxDataset).Dataset;
                    if (dataset is IFeatureClass)
                    {
                        try
                        {
                            (this.idataLayer_0 as IFeatureLayer).FeatureClass = dataset as IFeatureClass;
                            flag = true;
                            this.method_0();
                        }
                        catch
                        {
                        }
                    }
                }
                if (!flag)
                {
                    MessageBox.Show("无法把图层数据源设置为选择的数据!");
                }
            }
        }
예제 #21
0
        public override void OnClick(object sender, EventArgs args)
        {
            if (_command == null)
            {
                _command = new ESRI.ArcGIS.Controls.ControlsAddDataCommandClass();
                _command.OnCreate(_context.MapControl);
            }
            object parentObject = null;

            if (_view.SelectedLayer != null && _view.SelectedLayer is IGroupLayer)
            {
                parentObject = _view.SelectedLayer;
            }
            else
            {
                parentObject = _context.FocusMap as IActiveView;
            }

            frmOpenFile _frmOpenFile = new frmOpenFile()
            {
                Text             = "添加数据",
                AllowMultiSelect = true
            };

            _frmOpenFile.AddFilter(new MyGxFilterDatasets(), true);
            if (_frmOpenFile.DoModalOpen() == DialogResult.OK)
            {
                Cursor.Current      = Cursors.WaitCursor;
                this.pHelper        = new AddDataHelper(this.GetMap() as IActiveView);
                this.ilist_0        = _frmOpenFile.SelectedItems;
                this.pHelper.m_pApp = _context;
                if (_view.SelectedLayer != null && _view.SelectedLayer is IGroupLayer)
                {
                    pHelper.ParentLayer = _view.SelectedLayer as IGroupLayer;
                }
                this.pHelper.LoadData(this.ilist_0);
                Cursor.Current = Cursors.Default;
            }
        }
예제 #22
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            frmOpenFile _frmOpenFile = new frmOpenFile()
            {
                Text = "添加数据"
            };

            _frmOpenFile.RemoveAllFilters();
            _frmOpenFile.AllowMultiSelect = true;
            _frmOpenFile.AddFilter(new MyGxFilterRasterDatasets(), true);
            if (_frmOpenFile.DoModalOpen() == System.Windows.Forms.DialogResult.OK)
            {
                IArray items = _frmOpenFile.Items;
                if (items.Count != 0)
                {
                    for (int i = 0; i < items.Count; i++)
                    {
                        IGxObject element = items.Element[i] as IGxObject;
                        this.m_pInNames.Add(element.InternalObjectName);
                        this.listView1.Items.Add(element.FullName);
                    }
                }
            }
        }
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            int         num;
            frmOpenFile file = new frmOpenFile
            {
                Text = "添加数据"
            };

            file.RemoveAllFilters();
            file.AllowMultiSelect = true;
            if (this.iarray_1.Count != 0)
            {
                for (num = 0; num < this.iarray_1.Count; num++)
                {
                    if (num == 0)
                    {
                        file.AddFilter(this.iarray_1.get_Element(num) as IGxObjectFilter, true);
                    }
                    else
                    {
                        file.AddFilter(this.iarray_1.get_Element(num) as IGxObjectFilter, false);
                    }
                }
            }
            else
            {
                file.AddFilter(new MyGxFilterFeatureClasses(), true);
            }
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    for (num = 0; num < items.Count; num++)
                    {
                        IGxObject obj2 = items.get_Element(num) as IGxObject;
                        if (obj2 is IGxDataset)
                        {
                            if ((obj2 as IGxDataset).Type == esriDatasetType.esriDTCadDrawing)
                            {
                                IDatasetName unk = this.method_3((obj2 as IGxDataset).DatasetName, "Point");
                                this.iarray_0.Add(unk);
                                this.listView1.Items.Add(obj2.FullName + ":" + unk.Name);
                                unk = this.method_3((obj2 as IGxDataset).DatasetName, "Polyline");
                                this.iarray_0.Add(unk);
                                this.listView1.Items.Add(obj2.FullName + ":" + unk.Name);
                                unk = this.method_3((obj2 as IGxDataset).DatasetName, "Polygon");
                                this.iarray_0.Add(unk);
                                this.listView1.Items.Add(obj2.FullName + ":" + unk.Name);
                                unk = this.method_3((obj2 as IGxDataset).DatasetName, "Annotation");
                                this.iarray_0.Add(unk);
                                this.listView1.Items.Add(obj2.FullName + ":" + unk.Name);
                            }
                            else
                            {
                                this.iarray_0.Add(obj2.InternalObjectName);
                                this.listView1.Items.Add(obj2.FullName);
                            }
                        }
                    }
                }
            }
        }
예제 #24
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "添加数据"
            };

            file.RemoveAllFilters();
            file.AllowMultiSelect = true;
            file.AddFilter(new MyGxFilterDatasets(), true);
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    for (int i = 0; i < items.Count; i++)
                    {
                        IGxObject obj2 = items.get_Element(i) as IGxObject;
                        if (obj2 is IGxDataset)
                        {
                            IGxDataset dataset = obj2 as IGxDataset;
                            if ((this.igxDataset_0.Type == esriDatasetType.esriDTFeatureClass) &&
                                (dataset.Type == esriDatasetType.esriDTFeatureClass))
                            {
                                if ((this.igxDataset_0.Dataset as IFeatureClass).ShapeType ==
                                    (dataset.Dataset as IFeatureClass).ShapeType)
                                {
                                    if (
                                        this.method_0(this.igxDataset_0.DatasetName.WorkspaceName,
                                                      dataset.DatasetName.WorkspaceName) &&
                                        (this.igxDataset_0.DatasetName.Name == dataset.DatasetName.Name))
                                    {
                                        MessageBox.Show("源对象类和目标对象类必须不同!" + obj2.FullName + "不能导入");
                                    }
                                    else
                                    {
                                        this.ilist_0.Add(obj2.InternalObjectName);
                                        this.listView1.Items.Add(obj2.FullName);
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("装载数据必须和源数据有相同的几何数据类型!" + obj2.FullName + "不能导入");
                                }
                            }
                            else if ((this.igxDataset_0.Type == esriDatasetType.esriDTTable) &&
                                     (dataset.Type == esriDatasetType.esriDTTable))
                            {
                                this.ilist_0.Add(obj2.InternalObjectName);
                                this.listView1.Items.Add(obj2.FullName);
                            }
                            else if ((this.igxDataset_0.Type == esriDatasetType.esriDTFeatureClass) &&
                                     (dataset.Type == esriDatasetType.esriDTTable))
                            {
                                this.ilist_0.Add(obj2.InternalObjectName);
                                this.listView1.Items.Add(obj2.FullName);
                            }
                            else
                            {
                                MessageBox.Show("装载数据必须和源数据有相同的几何数据类型!" + obj2.FullName + "不能导入");
                            }
                        }
                    }
                }
            }
        }
예제 #25
0
        private void method_3(object object_0)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text             = "添加数据",
                AllowMultiSelect = true
            };

            file.AddFilter(new MyGxFilterDatasets(), true);
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IFeatureClass featureClass;
                IFeatureLayer layer;
                System.Windows.Forms.Cursor.Current = Cursors.WaitCursor;
                IArray array = new ArrayClass();
                IArray items = file.Items;
                int    index = 0;
                while (true)
                {
                    if (index >= items.Count)
                    {
                        break;
                    }
                    IGxDataset dataset = items.get_Element(index) as IGxDataset;
                    if (dataset != null)
                    {
                        IDataset dataset2 = dataset.Dataset;
                        if (dataset2 != null)
                        {
                            if (dataset2.Type == esriDatasetType.esriDTFeatureClass)
                            {
                                featureClass = (IFeatureClass)dataset2;
                                if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation)
                                {
                                    layer = new FDOGraphicsLayerClass
                                    {
                                        FeatureClass = featureClass,
                                        Name         = featureClass.AliasName
                                    };
                                }
                                else
                                {
                                    layer = new FeatureLayerClass
                                    {
                                        FeatureClass = featureClass,
                                        Name         = featureClass.AliasName
                                    };
                                }
                                array.Add(layer);
                            }
                            else
                            {
                                IFDOGraphicsLayerFactory factory;
                                if (dataset2.Type == esriDatasetType.esriDTCadDrawing)
                                {
                                    IEnumGxObject children = (dataset as IGxObjectContainer).Children;
                                    children.Reset();
                                    for (IGxDataset dataset3 = children.Next() as IGxDataset;
                                         dataset3 != null;
                                         dataset3 = children.Next() as IGxDataset)
                                    {
                                        featureClass = dataset3.Dataset as IFeatureClass;
                                        if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation)
                                        {
                                            factory = new FDOGraphicsLayerFactoryClass();
                                            layer   =
                                                (IFeatureLayer)
                                                factory.OpenGraphicsLayer(
                                                    (IFeatureWorkspace)featureClass.FeatureDataset.Workspace,
                                                    featureClass.FeatureDataset, featureClass.AliasName);
                                        }
                                        else
                                        {
                                            layer = new FeatureLayerClass
                                            {
                                                FeatureClass = featureClass,
                                                Name         = featureClass.AliasName
                                            };
                                        }
                                        array.Add(layer);
                                    }
                                }
                                else if (dataset2.Type == esriDatasetType.esriDTFeatureDataset)
                                {
                                    IFeatureClassContainer container = (IFeatureClassContainer)dataset2;
                                    index = 0;
                                    while (index < (container.ClassCount - 1))
                                    {
                                        featureClass = container.get_Class(index);
                                        if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation)
                                        {
                                            factory = new FDOGraphicsLayerFactoryClass();
                                            layer   =
                                                (IFeatureLayer)
                                                factory.OpenGraphicsLayer(
                                                    (IFeatureWorkspace)featureClass.FeatureDataset.Workspace,
                                                    featureClass.FeatureDataset, featureClass.AliasName);
                                        }
                                        else
                                        {
                                            layer = new FeatureLayerClass
                                            {
                                                FeatureClass = featureClass,
                                                Name         = featureClass.AliasName
                                            };
                                        }
                                        array.Add(layer);
                                        index++;
                                    }
                                }
                                else if (dataset2.Type == esriDatasetType.esriDTTin)
                                {
                                    ITinLayer unk = new TinLayerClass
                                    {
                                        Dataset = (ITin)dataset2,
                                        Name    = dataset2.Name
                                    };
                                    array.Add(unk);
                                }
                                else if ((dataset2.Type == esriDatasetType.esriDTRasterDataset) ||
                                         (dataset2.Type == esriDatasetType.esriDTRasterBand))
                                {
                                    bool flag = true;
                                    if (!((IRasterPyramid)dataset2).Present)
                                    {
                                        if (ApplicationRef.PyramidPromptType == PyramidPromptType.AlwaysBuildNoPrompt)
                                        {
                                            ((IRasterPyramid)dataset2).Create();
                                        }
                                        else if (ApplicationRef.PyramidPromptType == PyramidPromptType.AlwaysPrompt)
                                        {
                                            switch (BuildPyramidSet.Show())
                                            {
                                            case DialogResult.Yes:
                                                ((IRasterPyramid)dataset2).Create();
                                                break;

                                            case DialogResult.Cancel:
                                                flag = false;
                                                break;
                                            }
                                        }
                                    }
                                    if (flag)
                                    {
                                        RasterLayerClass class3 = new RasterLayerClass
                                        {
                                            Cached = true
                                        };
                                        IRasterLayer layer3 = class3;
                                        layer3.CreateFromDataset((IRasterDataset)dataset2);
                                        layer3.Name = dataset2.Name;
                                        array.Add(layer3);
                                    }
                                }
                                else if (dataset2.Type == esriDatasetType.esriDTTable)
                                {
                                    try
                                    {
                                        IRasterCatalogTable pCatalog = new RasterCatalogTableClass
                                        {
                                            Table = (ITable)dataset2
                                        };
                                        pCatalog.Update();
                                        IRasterCatalogLayer layer4 = new RasterCatalogLayerClass();
                                        layer4.Create(pCatalog);
                                        layer4.Name = dataset2.BrowseName;
                                        array.Add(layer4);
                                    }
                                    catch
                                    {
                                    }
                                }
                            }
                        }
                    }
                    index++;
                }
                int    count  = array.Count;
                ILayer layer5 = null;
                for (index = count - 1; index >= 0; index--)
                {
                    layer5 = array.get_Element(index) as ILayer;
                    if (layer5 is IRasterCatalogLayer)
                    {
                        if (object_0 is IMap)
                        {
                            (object_0 as IMap).AddLayer(layer5);
                        }
                        else if (object_0 is IGroupLayer)
                        {
                            (object_0 as IGroupLayer).Add(layer5);
                        }
                        array.Remove(index);
                        count--;
                    }
                }
                for (index = count - 1; index >= 0; index--)
                {
                    layer5 = array.get_Element(index) as ILayer;
                    if (layer5 is IRasterLayer)
                    {
                        if (object_0 is IMap)
                        {
                            (object_0 as IMap).AddLayer(layer5);
                        }
                        else if (object_0 is IGroupLayer)
                        {
                            (object_0 as IGroupLayer).Add(layer5);
                        }
                        array.Remove(index);
                        count--;
                    }
                }
                for (index = count - 1; index >= 0; index--)
                {
                    layer5 = array.get_Element(index) as ILayer;
                    if (layer5 is ITinLayer)
                    {
                        if (object_0 is IMap)
                        {
                            (object_0 as IMap).AddLayer(layer5);
                        }
                        else if (object_0 is IGroupLayer)
                        {
                            (object_0 as IGroupLayer).Add(layer5);
                        }
                        array.Remove(index);
                        count--;
                    }
                }
                for (index = count - 1; index >= 0; index--)
                {
                    layer5 = array.get_Element(index) as ILayer;
                    if (layer5 is IFeatureLayer)
                    {
                        layer        = layer5 as IFeatureLayer;
                        featureClass = layer.FeatureClass;
                        if ((featureClass.ShapeType == esriGeometryType.esriGeometryPolygon) ||
                            (featureClass.ShapeType == esriGeometryType.esriGeometryEnvelope))
                        {
                            if (object_0 is IMap)
                            {
                                (object_0 as IMap).AddLayer(layer5);
                            }
                            else if (object_0 is IGroupLayer)
                            {
                                (object_0 as IGroupLayer).Add(layer5);
                            }
                            array.Remove(index);
                            count--;
                        }
                    }
                }
                for (index = count - 1; index >= 0; index--)
                {
                    layer5 = array.get_Element(index) as ILayer;
                    if (layer5 is IFeatureLayer)
                    {
                        layer        = layer5 as IFeatureLayer;
                        featureClass = layer.FeatureClass;
                        if (((((featureClass.ShapeType == esriGeometryType.esriGeometryLine) ||
                               (featureClass.ShapeType == esriGeometryType.esriGeometryBezier3Curve)) ||
                              ((featureClass.ShapeType == esriGeometryType.esriGeometryCircularArc) ||
                               (featureClass.ShapeType == esriGeometryType.esriGeometryEllipticArc))) ||
                             (featureClass.ShapeType == esriGeometryType.esriGeometryPath)) ||
                            (featureClass.ShapeType == esriGeometryType.esriGeometryPolyline))
                        {
                            if (object_0 is IMap)
                            {
                                (object_0 as IMap).AddLayer(layer5);
                            }
                            else if (object_0 is IGroupLayer)
                            {
                                (object_0 as IGroupLayer).Add(layer5);
                            }
                            array.Remove(index);
                            count--;
                        }
                    }
                }
                for (index = count - 1; index >= 0; index--)
                {
                    layer5 = array.get_Element(index) as ILayer;
                    if (layer5 is IFeatureLayer)
                    {
                        layer        = layer5 as IFeatureLayer;
                        featureClass = layer.FeatureClass;
                        if ((featureClass.ShapeType == esriGeometryType.esriGeometryMultipoint) ||
                            (featureClass.ShapeType == esriGeometryType.esriGeometryPoint))
                        {
                            if (object_0 is IMap)
                            {
                                (object_0 as IMap).AddLayer(layer5);
                            }
                            else if (object_0 is IGroupLayer)
                            {
                                (object_0 as IGroupLayer).Add(layer5);
                            }
                            array.Remove(index);
                            count--;
                        }
                    }
                }
                for (index = count - 1; index >= 0; index--)
                {
                    layer5 = array.get_Element(index) as ILayer;
                    if (object_0 is IMap)
                    {
                        (object_0 as IMap).AddLayer(layer5);
                    }
                    else if (object_0 is IGroupLayer)
                    {
                        (object_0 as IGroupLayer).Add(layer5);
                    }
                    array.Remove(index);
                }
                System.Windows.Forms.Cursor.Current = Cursors.Default;
            }
        }
예제 #26
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "添加数据"
            };

            file.RemoveAllFilters();
            file.AllowMultiSelect = true;
            file.AddFilter(new MyGxFilterDatasets(), true);
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    for (int i = 0; i < items.Count; i++)
                    {
                        IGxObject obj2 = items.get_Element(i) as IGxObject;
                        if (obj2 is IGxDataset)
                        {
                            IDataset dataset = (obj2 as IGxDataset).Dataset;
                            if (this.ispatialReference_0 == null)
                            {
                                this.ispatialReference_0 = (dataset as IGeoDataset).SpatialReference;
                            }
                            else
                            {
                                ISpatialReference spatialReference = (dataset as IGeoDataset).SpatialReference;
                                if (
                                    !(!(spatialReference is IUnknownCoordinateSystem) ||
                                      (this.ispatialReference_0 is IUnknownCoordinateSystem)))
                                {
                                    MessageBox.Show("空间参考不一致," + dataset.Name + "不能添加");
                                    continue;
                                }
                                if (
                                    !(!(spatialReference is IProjectedCoordinateSystem) ||
                                      (this.ispatialReference_0 is IProjectedCoordinateSystem)))
                                {
                                    MessageBox.Show("空间参考不一致," + dataset.Name + "不能添加");
                                    continue;
                                }
                                if (
                                    !(!(spatialReference is IGeographicCoordinateSystem) ||
                                      (this.ispatialReference_0 is IGeographicCoordinateSystem)))
                                {
                                    MessageBox.Show("空间参考不一致," + dataset.Name + "不能添加");
                                    continue;
                                }
                                if (((spatialReference is IProjectedCoordinateSystem) &&
                                     (this.ispatialReference_0 is IProjectedCoordinateSystem)) &&
                                    !(spatialReference as IClone).IsEqual(this.ispatialReference_0 as IClone))
                                {
                                    MessageBox.Show("空间参考不一致," + dataset.Name + "不能添加");
                                    continue;
                                }
                            }
                            this.ilist_0.Add(dataset);
                            this.listView1.Items.Add(obj2.FullName);
                        }
                    }
                }
            }
        }