示例#1
0
 /// <summary>Snippet for GetWorkspace</summary>
 /// <remarks>
 /// This snippet has been automatically generated for illustrative purposes only.
 /// It may require modifications to work in your environment.
 /// </remarks>
 public void GetWorkspaceResourceNames()
 {
     // Create client
     TablesServiceClient tablesServiceClient = TablesServiceClient.Create();
     // Initialize request argument(s)
     WorkspaceName name = WorkspaceName.FromWorkspace("[WORKSPACE]");
     // Make the request
     Workspace response = tablesServiceClient.GetWorkspace(name);
 }
        /// <summary>Snippet for GetWorkspaceAsync</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public async Task GetWorkspaceResourceNamesAsync()
        {
            // Create client
            TablesServiceClient tablesServiceClient = await TablesServiceClient.CreateAsync();

            // Initialize request argument(s)
            WorkspaceName name = WorkspaceName.FromWorkspace("[WORKSPACE]");
            // Make the request
            Workspace response = await tablesServiceClient.GetWorkspaceAsync(name);
        }
 /// <summary>Snippet for GetWorkspace</summary>
 /// <remarks>
 /// This snippet has been automatically generated for illustrative purposes only.
 /// It may require modifications to work in your environment.
 /// </remarks>
 public void GetWorkspaceRequestObject()
 {
     // Create client
     TablesServiceClient tablesServiceClient = TablesServiceClient.Create();
     // Initialize request argument(s)
     GetWorkspaceRequest request = new GetWorkspaceRequest
     {
         WorkspaceName = WorkspaceName.FromWorkspace("[WORKSPACE]"),
     };
     // Make the request
     Workspace response = tablesServiceClient.GetWorkspace(request);
 }
示例#4
0
        /// <summary>Snippet for GetWorkspaceAsync</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public async Task GetWorkspaceRequestObjectAsync()
        {
            // Create client
            TablesServiceClient tablesServiceClient = await TablesServiceClient.CreateAsync();

            // Initialize request argument(s)
            GetWorkspaceRequest request = new GetWorkspaceRequest
            {
                WorkspaceName = WorkspaceName.FromWorkspace("[WORKSPACE]"),
            };
            // Make the request
            Workspace response = await tablesServiceClient.GetWorkspaceAsync(request);
        }
示例#5
0
        /// <summary>Snippet for GetWorkspaceAsync</summary>
        public async Task GetWorkspaceResourceNamesAsync()
        {
            // Snippet: GetWorkspaceAsync(WorkspaceName, CallSettings)
            // Additional: GetWorkspaceAsync(WorkspaceName, CancellationToken)
            // Create client
            TablesServiceClient tablesServiceClient = await TablesServiceClient.CreateAsync();

            // Initialize request argument(s)
            WorkspaceName name = WorkspaceName.FromWorkspace("[WORKSPACE]");
            // Make the request
            Workspace response = await tablesServiceClient.GetWorkspaceAsync(name);

            // End snippet
        }
示例#6
0
        public static IFeatureClassName GetFeatureClassName(IFeatureClass pfc)
        {
            IDataset pDS = pfc as IDataset;

            IWorkspaceName workspaceName = new WorkspaceName() as IWorkspaceName;

            workspaceName = pDS.FullName as IWorkspaceName;

            IFeatureClassName featureClassName = new FeatureClassName() as IFeatureClassName;
            IDatasetName      datasetName      = (IDatasetName)featureClassName;

            datasetName.Name          = pDS.Name;
            datasetName.WorkspaceName = workspaceName;
            return(featureClassName);
        }
示例#7
0
        /// <summary>Snippet for GetWorkspaceAsync</summary>
        public async Task GetWorkspaceRequestObjectAsync()
        {
            // Snippet: GetWorkspaceAsync(GetWorkspaceRequest, CallSettings)
            // Additional: GetWorkspaceAsync(GetWorkspaceRequest, CancellationToken)
            // Create client
            TablesServiceClient tablesServiceClient = await TablesServiceClient.CreateAsync();

            // Initialize request argument(s)
            GetWorkspaceRequest request = new GetWorkspaceRequest
            {
                WorkspaceName = WorkspaceName.FromWorkspace("[WORKSPACE]"),
            };
            // Make the request
            Workspace response = await tablesServiceClient.GetWorkspaceAsync(request);

            // End snippet
        }
        public void GetWorkspaceResourceNames()
        {
            moq::Mock <TablesService.TablesServiceClient> mockGrpcClient = new moq::Mock <TablesService.TablesServiceClient>(moq::MockBehavior.Strict);
            GetWorkspaceRequest request = new GetWorkspaceRequest
            {
                WorkspaceName = WorkspaceName.FromWorkspace("[WORKSPACE]"),
            };
            Workspace expectedResponse = new Workspace
            {
                WorkspaceName = WorkspaceName.FromWorkspace("[WORKSPACE]"),
                DisplayName   = "display_name137f65c2",
                Tables        = { new Table(), },
            };

            mockGrpcClient.Setup(x => x.GetWorkspace(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse);
            TablesServiceClient client   = new TablesServiceClientImpl(mockGrpcClient.Object, null);
            Workspace           response = client.GetWorkspace(request.WorkspaceName);

            xunit::Assert.Same(expectedResponse, response);
            mockGrpcClient.VerifyAll();
        }
示例#9
0
        public static void Project(IFeatureDataset ifeatureDataset_0, ISpatialReference ispatialReference_0,
                                   IWorkspace iworkspace_0, string string_0)
        {
            IGeometryDef      geometryDefClass = new GeometryDef();
            ISpatialReference spatialReference = ((IGeoDataset)ifeatureDataset_0).SpatialReference;

            ((IGeometryDefEdit)geometryDefClass).SpatialReference_2 = ispatialReference_0;
            IWorkspace            workspace = ifeatureDataset_0.Workspace;
            IFeatureDataConverter featureDataConverterClass = new FeatureDataConverter();
            IWorkspaceName        workspaceNameClass        = new WorkspaceName() as IWorkspaceName as IWorkspaceName;


            workspaceNameClass.ConnectionProperties   = workspace.ConnectionProperties;
            workspaceNameClass.WorkspaceFactoryProgID = workspace.WorkspaceFactory.GetClassID().Value.ToString();

            IWorkspaceName connectionProperties = new WorkspaceName() as IWorkspaceName as IWorkspaceName;
            PropertySet    propertySetClass     = new PropertySet();

            connectionProperties.ConnectionProperties   = iworkspace_0.ConnectionProperties;
            connectionProperties.WorkspaceFactoryProgID = iworkspace_0.WorkspaceFactory.GetClassID().Value.ToString();
            IDatasetName featureDatasetNameClass = new FeatureDatasetName() as IDatasetName;
            string       name = ifeatureDataset_0.Name;
            int          num  = name.LastIndexOf(".");

            if (num != -1)
            {
                name = name.Substring(num + 1);
            }
            featureDatasetNameClass.Name          = name;
            featureDatasetNameClass.WorkspaceName = workspaceNameClass;
            IDatasetName datasetName = new FeatureDatasetName() as IDatasetName;

            {
                datasetName.WorkspaceName = connectionProperties;
                datasetName.Name          = string_0;
            }
            ;
            featureDataConverterClass.ConvertFeatureDataset((IFeatureDatasetName)featureDatasetNameClass,
                                                            (IFeatureDatasetName)datasetName, geometryDefClass, "", 1000, 0);
        }
示例#10
0
文件: frmDir.cs 项目: secondii/Yutai
 private void button1_Click(object sender, EventArgs e)
 {
     if (this.textBox1.Text != null && this.textBox1.Text.Length >= 2)
     {
         try
         {
             IWorkspaceName workspaceName = new WorkspaceName() as IWorkspaceName;
             workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
             workspaceName.PathName = this.textBox1.Text;
             if (!Directory.Exists(this.textBox1.Text))
             {
                 Directory.CreateDirectory(this.textBox1.Text);
             }
             Clip.ExtractSpecifyHRegFeatures(workspaceName, this.imap_0, this.igeometry_0);
         }
         catch (Exception ex)
         {
             System.Windows.Forms.MessageBox.Show(ex.Message);
         }
         base.Close();
     }
 }
示例#11
0
        /// <summary>
        /// 导出图层中选定要素到单独的shp文件
        /// </summary>
        /// <param name="featureLayer">要素图层</param>
        /// <param name="selectionSet">要素选择集</param>
        /// <param name="outName">输出shp文件路径</param>
        public void exportSelectedFeatureToShp(IFeatureLayer featureLayer, ISelectionSet selectionSet, string outName)
        {
            if (featureLayer == null)
            {
                return;
            }
            if (!Directory.Exists(System.IO.Path.GetDirectoryName(outName)))
            {
                return;
            }

            // 裁剪要素
            IDataset          dataset         = featureLayer as IDataset;
            IFeatureClassName infeatClassName = dataset.FullName as IFeatureClassName;
            IDatasetName      datasetName     = infeatClassName as IDatasetName;

            // 输出要素类
            IFeatureClassName outFeatClassName = new FeatureClassName() as IFeatureClassName;

            outFeatClassName.FeatureType    = esriFeatureType.esriFTSimple;
            outFeatClassName.ShapeType      = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryAny;
            outFeatClassName.ShapeFieldName = "Shape";

            // 输出文件
            IDatasetName outDatasetName = outFeatClassName as IDatasetName;

            outDatasetName.Name = System.IO.Path.GetFileNameWithoutExtension(outName);
            IWorkspaceName workspaceName = new WorkspaceName() as IWorkspaceName;

            workspaceName.PathName = System.IO.Path.GetDirectoryName(outName);
            workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.ShapefileWorkspaceFactory";
            outDatasetName.WorkspaceName         = workspaceName;

            // 导出
            IExportOperation exportOper = new ExportOperation();

            exportOper.ExportFeatureClass(datasetName, null, selectionSet, null, outFeatClassName, 0);
        }
        public async stt::Task GetWorkspaceResourceNamesAsync()
        {
            moq::Mock <TablesService.TablesServiceClient> mockGrpcClient = new moq::Mock <TablesService.TablesServiceClient>(moq::MockBehavior.Strict);
            GetWorkspaceRequest request = new GetWorkspaceRequest
            {
                WorkspaceName = WorkspaceName.FromWorkspace("[WORKSPACE]"),
            };
            Workspace expectedResponse = new Workspace
            {
                WorkspaceName = WorkspaceName.FromWorkspace("[WORKSPACE]"),
                DisplayName   = "display_name137f65c2",
                Tables        = { new Table(), },
            };

            mockGrpcClient.Setup(x => x.GetWorkspaceAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <Workspace>(stt::Task.FromResult(expectedResponse), null, null, null, null));
            TablesServiceClient client = new TablesServiceClientImpl(mockGrpcClient.Object, null);
            Workspace           responseCallSettings = await client.GetWorkspaceAsync(request.WorkspaceName, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None));

            xunit::Assert.Same(expectedResponse, responseCallSettings);
            Workspace responseCancellationToken = await client.GetWorkspaceAsync(request.WorkspaceName, st::CancellationToken.None);

            xunit::Assert.Same(expectedResponse, responseCancellationToken);
            mockGrpcClient.VerifyAll();
        }
示例#13
0
        protected virtual void OnButtonOkClicked(object sender, System.EventArgs e)
        {
            if (WorkspaceName.Contains(" "))
            {
                MessageDialogs md =
                    new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("error_whitespace_work"), "", Gtk.MessageType.Error);
                md.ShowDialog();
                return;
            }

            if (WorkspaceRoot.Contains(" "))
            {
                MessageDialogs md =
                    new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("error_whitespace_work_path"), "", Gtk.MessageType.Error);
                md.ShowDialog();
                return;
            }


            if (String.IsNullOrEmpty(WorkspaceName))
            {
                MessageDialogs md =
                    new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("please_set_workspace_name"), "", Gtk.MessageType.Error);
                md.ShowDialog();
                return;
            }

            if (String.IsNullOrEmpty(WorkspaceOutput))
            {
                MessageDialogs md =
                    new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("please_set_workspace_output"), "", Gtk.MessageType.Error);
                md.ShowDialog();
                return;
            }

            if (String.IsNullOrEmpty(WorkspaceRoot))
            {
                MessageDialogs md =
                    new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("please_set_workspace_root"), "", Gtk.MessageType.Error);
                md.ShowDialog();
                return;
            }

            if (project)
            {
                if (String.IsNullOrEmpty(ProjectName))
                {
                    MessageDialogs md =
                        new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("please_set_project_name"), "", Gtk.MessageType.Error);
                    md.ShowDialog();
                    return;
                }

                if (ProjectName.Contains(" "))
                {
                    MessageDialogs md =
                        new MessageDialogs(MessageDialogs.DialogButtonType.Ok, MainClass.Languages.Translate("error_whitespace_proj"), "", Gtk.MessageType.Error);
                    md.ShowDialog();
                    return;
                }
            }

            this.Respond(ResponseType.Ok);
        }
示例#14
0
        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            if (this.listView1.SelectedItems.Count != 0)
            {
                MyDoubleClickResult myDCRShowChildren;
                IGxObject           tag = this.listView1.SelectedItems[0].Tag as IGxObject;
                if ((this._gxObjectFilter != null) && (tag is IGxDatabase))
                {
                    myDCRShowChildren = MyDoubleClickResult.myDCRShowChildren;
                    this._gxObjectFilter.CanChooseObject(tag, ref myDCRShowChildren);
                    if (myDCRShowChildren == MyDoubleClickResult.myDCRChooseAndDismiss)
                    {
                        this.PassListItem();
                        return;
                    }
                }
                if (!(tag is IGxObjectContainer))
                {
                    if (tag is IGxNewDatabase)
                    {
                        IWorkspaceName name;
                        IGxObject      obj3;
                        ListViewItem   item;
                        if (tag.FullName == "添加OLE DB连接")
                        {
                            try
                            {
                                string path = Environment.SystemDirectory.Substring(0, 2) +
                                              @"\Documents and Settings\Administrator\Application Data\ESRI\ArcCatalog\";
                                string str2 = path + "OLE DB Connection.odc";
                                if (Directory.Exists(path))
                                {
                                    str2 = this.ChangeODCExtension(str2);
                                    IWorkspaceFactory factory = new OLEDBWorkspaceFactory() as IWorkspaceFactory;
                                    name = factory.Create(path, System.IO.Path.GetFileName(str2), null, 0);
                                    IGxObject gxDatabase = new GxDatabase() as IGxObject;
                                    (gxDatabase as IGxDatabase).WorkspaceName = name;
                                    gxDatabase.Attach(tag.Parent, this._gxCatalog);
                                    item = new ListViewItem(new string[] { gxDatabase.Name, gxDatabase.Category },
                                                            this.GetImageIndex(gxDatabase))
                                    {
                                        Tag = gxDatabase
                                    };
                                    this.listView1.Items.Add(item);
                                }
                            }
                            catch (Exception exception)
                            {
                                exception.ToString();
                            }
                        }
                        else if (tag.FullName == "添加空间数据库连接")
                        {
                            frmCreateGDBConnection connection = new frmCreateGDBConnection
                            {
                                TopMost = true
                            };
                            if (connection.ShowDialog() == DialogResult.OK)
                            {
                                IGxObject      oneObj = new GxDatabase() as IGxObject;
                                IWorkspaceName name2  = new WorkspaceName() as IWorkspaceName;
                                name2.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory";
                                name2.PathName = connection.ConnectionPath;

                                (oneObj as IGxDatabase).WorkspaceName = name2;
                                oneObj.Attach(tag.Parent, this._gxCatalog);
                                item = new ListViewItem(new string[] { oneObj.Name, oneObj.Category },
                                                        this.GetImageIndex(oneObj))
                                {
                                    Tag = oneObj
                                };
                                this.listView1.Items.Add(item);
                            }
                        }
                    }
                    else
                    {
                        this.PassListItem();
                    }
                }
                else
                {
                    GISDataComboItem ex;
                    if (tag is IGxDataset)
                    {
                        esriDatasetType type = (tag as IGxDataset).Type;
                        myDCRShowChildren = MyDoubleClickResult.myDCRShowChildren;
                        this._gxObjectFilter.CanChooseObject(tag, ref myDCRShowChildren);
                        if ((((type != esriDatasetType.esriDTFeatureDataset) &&
                              (type != esriDatasetType.esriDTContainer)) &&
                             ((type != esriDatasetType.esriDTRasterCatalog) &&
                              (type != esriDatasetType.esriDTCadDrawing))) &&
                            (type != esriDatasetType.esriDTRasterDataset))
                        {
                            this.PassListItem();
                            return;
                        }
                    }
                    this.LoadViewer(tag);
                    this._isFree = false;
                    if (tag.Parent is IGxCatalog)
                    {
                        for (int i = 0; i < this.gisDataComboBox1.Items.Count; i++)
                        {
                            ex = this.gisDataComboBox1.Items[i] as GISDataComboItem;
                            if (ex.Tag == tag)
                            {
                                this.gisDataComboBox1.SelectedIndex = i;
                                break;
                            }
                        }
                    }
                    else
                    {
                        ex = this.gisDataComboBox1.Items[this.gisDataComboBox1.SelectedIndex] as GISDataComboItem;
                        int degree = ex.Level;
                        ex = new GISDataComboItem(tag.Name, tag.FullName, this.GetImageIndex(tag), degree + 1)
                        {
                            Tag = tag
                        };
                        int selectedIndex = this.gisDataComboBox1.SelectedIndex;
                        this.gisDataComboBox1.AddChildNode(ex);
                        this.gisDataComboBox1.SelectedIndex = selectedIndex + 1;
                    }
                    this._isFree = true;
                }
            }
        }
示例#15
0
 private void EndSave()
 {
     if (this.txtName.Text.Trim().Length > 0)
     {
         GISDataComboItem selectedItem = this.gisDataComboBox1.SelectedItem as GISDataComboItem;
         IGxObject        tag          = selectedItem.Tag as IGxObject;
         if ((tag != null) && (this._gxObjectFilter != null))
         {
             bool   flag = false;
             string str  = this.txtName.Text.Trim();
             if (this._gxObjectFilter.CanSaveObject(tag, str, ref flag))
             {
                 this._gxObject = tag;
                 this._array2.RemoveAll();
                 this._gxObjects.Clear();
                 if (this._gxObjectFilter.Name == "GxFilterWorkspaces")
                 {
                     IWorkspaceName name = null;
                     IGxObject      unk  = null;
                     unk  = new GxDatabase() as IGxObject;
                     name = new WorkspaceName() as IWorkspaceName;
                     string path = (tag as IGxFile).Path + @"\" + str;
                     string str3 = System.IO.Path.GetExtension(path).ToLower();
                     if (str3 == ".mdb")
                     {
                         name.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";
                     }
                     else if ((str3 == ".sde") && flag)
                     {
                         name.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory";
                     }
                     else
                     {
                         name.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
                     }
                     if (!flag)
                     {
                         if (str3 == ".mdb")
                         {
                             IWorkspaceFactory factory = new AccessWorkspaceFactory() as IWorkspaceFactory;
                             try
                             {
                                 factory.Create(System.IO.Path.GetDirectoryName(path),
                                                System.IO.Path.GetFileNameWithoutExtension(path), null, 0);
                             }
                             catch (Exception exception)
                             {
                                 MessageBox.Show(this, exception.Message);
                             }
                         }
                         else
                         {
                             Directory.CreateDirectory(path);
                         }
                     }
                     name.PathName = path;
                     (unk as IGxDatabase).WorkspaceName = name;
                     this._array2.Add(unk);
                     this._gxObjects.Add(unk);
                 }
                 else
                 {
                     if (((tag is IGxFolder) || (tag is IGxDiskConnection)) || (tag is IGxDatabase))
                     {
                         this._array2.Add(tag);
                         this._gxObjects.Add(tag);
                     }
                     else
                     {
                         if (!(tag is IGxDataset))
                         {
                             return;
                         }
                         if ((tag as IGxDataset).Type == esriDatasetType.esriDTFeatureDataset)
                         {
                             this._array2.Add(tag);
                             this._gxObjects.Add(tag);
                         }
                     }
                     this._saveName = this.CheckExtension(str, this._gxObjectFilter);
                 }
                 base.DialogResult = DialogResult.OK;
                 if (selectedItem.Tag != null)
                 {
                     _pStartLocation = (selectedItem.Tag as IGxObject).FullName;
                 }
                 base.Close();
             }
         }
     }
 }
示例#16
0
        public override void OnDblClick()
        {
            if (!this.bool_0)
            {
                this.idisplayFeedback_0 = null;
            }
            else
            {
                IGeometry geometry = (this.idisplayFeedback_0 as INewPolygonFeedback).Stop();
                this.bool_0             = false;
                this.idisplayFeedback_0 = null;
                if (!geometry.IsEmpty)
                {
                    (geometry as IPolygon).SimplifyPreserveFromTo();
                    System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
                    try
                    {
                        geometry.SpatialReference = this._context.FocusMap.SpatialReference;
                        int num = this._subType;
                        if (num != 0)
                        {
                            string str  = System.IO.Path.GetTempPath() + "TempPersonGDB";
                            int    num2 = 1;
                            string path = str + ".mdb";
                            while (File.Exists(path))
                            {
                                try
                                {
                                    File.Delete(path);
                                    break;
                                }
                                catch
                                {
                                }
                                num2++;
                                path = str + " (" + num2.ToString() + ").mdb";
                            }
                            IWorkspaceFactory workspaceFactory = new AccessWorkspaceFactory();
                            IWorkspaceName    workspaceName    = workspaceFactory.Create(
                                System.IO.Path.GetDirectoryName(path), System.IO.Path.GetFileNameWithoutExtension(path),
                                null, 0);
                            IMap imap_ = new Map();
                            Clip.ExtractSpecifyHRegFeatures(workspaceName, this._context.FocusMap, geometry, imap_);
                            new FormPrinterSetup();
                            CMapPrinter cMapPrinter;

                            cMapPrinter = new CMapPrinter(imap_);

                            cMapPrinter.showPrintUI("打印地图");
                        }
                        else
                        {
                            frmOpenFile frmOpenFile = new frmOpenFile();
                            frmOpenFile.Text = "保存位置";
                            frmOpenFile.RemoveAllFilters();
                            frmOpenFile.AddFilter(new MyGxFilterWorkspaces(), true);
                            if (frmOpenFile.DoModalSave() == System.Windows.Forms.DialogResult.OK)
                            {
                                IArray items = frmOpenFile.Items;
                                if (items.Count == 0)
                                {
                                    return;
                                }
                                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
                                try
                                {
                                    IWorkspaceName workspaceName = null;
                                    IGxObject      gxObject      = items.get_Element(0) as IGxObject;
                                    if (gxObject is IGxDatabase)
                                    {
                                        workspaceName = (gxObject.InternalObjectName as IWorkspaceName);
                                    }
                                    else if (gxObject is IGxFolder)
                                    {
                                        workspaceName = new WorkspaceName() as IWorkspaceName;
                                        workspaceName.WorkspaceFactoryProgID =
                                            "esriDataSourcesFile.ShapefileWorkspaceFactory";
                                        workspaceName.PathName = (gxObject.InternalObjectName as IFileName).Path;
                                    }
                                    if (workspaceName != null)
                                    {
                                        Clip.ExtractSpecifyHRegFeatures(workspaceName, this._context.FocusMap, geometry);
                                    }
                                }
                                catch
                                {
                                }
                                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        System.Windows.Forms.MessageBox.Show(ex.ToString());
                    }
                    if (this._context.Hook is IApplication)
                    {
                        (this._context.Hook as IApplication).CurrentTool = null;
                    }
                    System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
                }
            }
        }
示例#17
0
        private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            IWorkspaceName workspaceNameClass;
            IGxObject      gxDatabase;
            ListViewItem   listViewItem;

            string[]            name;
            ImageComboBoxItemEx item;

            if (this.listView1.SelectedItems.Count != 0)
            {
                IGxObject tag = this.listView1.SelectedItems[0].Tag as IGxObject;
                if (tag is IGxObjectContainer)
                {
                    this.SetListView(tag);
                    this.m_CanDo = false;
                    if (tag.Parent is IGxCatalog)
                    {
                        int num = 0;
                        while (num < this.imageComboBoxEdit1.Properties.Items.Count)
                        {
                            item = this.imageComboBoxEdit1.Properties.Items[num] as ImageComboBoxItemEx;
                            if (item.Tag != tag)
                            {
                                num++;
                            }
                            else
                            {
                                this.imageComboBoxEdit1.SelectedIndex = num;
                                break;
                            }
                        }
                    }
                    else
                    {
                        item =
                            this.imageComboBoxEdit1.Properties.Items[this.imageComboBoxEdit1.SelectedIndex] as
                            ImageComboBoxItemEx;
                        int degree = item.Degree;
                        item = new ImageComboBoxItemEx(tag.Name, tag.FullName, this.GetImageIndex(tag), degree + 1)
                        {
                            Tag = tag
                        };
                        int selectedIndex = this.imageComboBoxEdit1.SelectedIndex;
                        this.imageComboBoxEdit1.Properties.Items.Insert(selectedIndex + 1, item);
                        this.imageComboBoxEdit1.SelectedIndex = selectedIndex + 1;
                    }
                    this.m_CanDo = true;
                }
                else if (tag is IGxNewDatabase)
                {
                    if (tag.FullName == "添加OLE DB连接")
                    {
                        try
                        {
                            string str = string.Concat(Environment.SystemDirectory.Substring(0, 2),
                                                       "\\Documents and Settings\\Administrator\\Application Data\\ESRI\\ArcCatalog\\");
                            string finalFileName = string.Concat(str, "OLE DB Connection.odc");
                            if (Directory.Exists(str))
                            {
                                finalFileName = this.GetFinalFileName(finalFileName);
                                IWorkspaceFactory oLEDBWorkspaceFactoryClass = new OLEDBWorkspaceFactory();
                                workspaceNameClass = oLEDBWorkspaceFactoryClass.Create(str,
                                                                                       Path.GetFileName(finalFileName), null, 0);
                                gxDatabase = new GxDatabase();
                                (gxDatabase as IGxDatabase).WorkspaceName = workspaceNameClass;
                                gxDatabase.Attach(tag.Parent, this.GxCatalog);
                                name         = new string[] { gxDatabase.Name, gxDatabase.Category };
                                listViewItem = new ListViewItem(name, this.GetImageIndex(gxDatabase))
                                {
                                    Tag = gxDatabase
                                };
                                this.listView1.Items.Add(listViewItem);
                            }
                        }
                        catch (Exception exception)
                        {
                            exception.ToString();
                        }
                    }
                    else if (tag.FullName == "添加空间数据库连接")
                    {
                        frmCreateGDBConnection _frmCreateGDBConnection = new frmCreateGDBConnection()
                        {
                            TopMost = true
                        };
                        if (_frmCreateGDBConnection.ShowDialog() == DialogResult.OK)
                        {
                            gxDatabase         = new GxDatabase();
                            workspaceNameClass = new WorkspaceName() as IWorkspaceName;
                            workspaceNameClass.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory";
                            workspaceNameClass.PathName = _frmCreateGDBConnection.ConnectionPath;
                            (gxDatabase as IGxDatabase).WorkspaceName = workspaceNameClass;
                            gxDatabase.Attach(tag.Parent, this.GxCatalog);
                            name         = new string[] { gxDatabase.Name, gxDatabase.Category };
                            listViewItem = new ListViewItem(name, this.GetImageIndex(gxDatabase))
                            {
                                Tag = gxDatabase
                            };
                            this.listView1.Items.Add(listViewItem);
                        }
                    }
                }
            }
        }
示例#18
0
        private void button1_Click(object sender, EventArgs e)
        {
            string       pTargetFile = DataCheckToolAuxiliary.Form1.targetDbName;
            string       pSourceFile = DataCheckToolAuxiliary.Form1.sourceDbName;
            DialogResult result      = MessageBox.Show(this, "确定要合并数据库" + pTargetFile + " 和 " + pSourceFile + " 吗?", "提示", MessageBoxButtons.YesNo);

            if (result == DialogResult.Yes)
            {
                //打开目标数据库
                IWorkspaceName pWorkspaceName = new WorkspaceName() as IWorkspaceName;
                pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";
                pWorkspaceName.PathName = pTargetFile;
                IName pName;
                pName = pWorkspaceName as IName;
                IWorkspace        workspace = (IWorkspace)pName.Open();
                IFeatureWorkspace target_ws = workspace as IFeatureWorkspace;
                IWorkspaceEdit    wse       = target_ws as IWorkspaceEdit;

                //打开源数据
                pWorkspaceName.PathName = pSourceFile;
                pName = pWorkspaceName as IName;
                IFeatureWorkspace source_ws = pName.Open() as IFeatureWorkspace;


                IDataset      ds      = workspace as IDataset;
                List <String> fcNames = new List <string>();
                Form1.GetAllFeatureClassNames(ds, ref fcNames);

                //遍历地图控件中的每个图层,进行数据合并
                foreach (string fcname in fcNames)
                {
                    //打开目标图层
                    IFeatureClass target_fc = target_ws.OpenFeatureClass(fcname);
                    IFeatureClass source_fc = source_ws.OpenFeatureClass(fcname);


                    //设置查询过滤关系
                    IQueryFilter pQuerFileter = new QueryFilter();
                    pQuerFileter.WhereClause = "";

                    wse.StartEditing(false);
                    IFeatureCursor target_cur = target_fc.Insert(true);
                    IFeatureBuffer buffer     = target_fc.CreateFeatureBuffer();

                    IFeatureCursor source_cur = source_fc.Search(pQuerFileter, true);
                    IFeature       pFeature   = source_cur.NextFeature();

                    while (pFeature != null)
                    {
                        //只有可编辑情况下,才合并数据
                        if (pFeature.get_Value(source_fc.FindField("Editable")).ToString() == "1")
                        {
                            for (int n = 0; n < source_fc.Fields.FieldCount; n++)
                            {
                                IField source_field = source_fc.Fields.get_Field(n);
                                if (source_field.Name != source_fc.OIDFieldName && source_field.Name != "SHAPE_Area" && source_field.Name != "SHAPE_Length" && source_field.Name != "Editable")
                                {
                                    int target_field_index = source_fc.FindField(source_field.Name);
                                    if (target_field_index != -1)
                                    {
                                        object source_value = pFeature.get_Value(source_fc.FindField(source_field.Name));
                                        buffer.set_Value(target_field_index, source_value);
                                    }
                                }
                            }
                            target_cur.InsertFeature(buffer);   //合并追加一条记录
                        }
                        pFeature = source_cur.NextFeature();
                    }
                    target_cur.Flush();
                    wse.StopEditing(true);

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(source_cur);   //释放资源
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(target_cur);
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(source_ws);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(target_ws);
                MessageBox.Show("数据合并成功!", "提示", MessageBoxButtons.OK);
            }
        }
示例#19
0
        public static void Project(IFeatureClass ifeatureClass_0, ISpatialReference ispatialReference_0,
                                   IWorkspace iworkspace_0, string string_0, double double_0)
        {
            string                str;
            double                num;
            double                num1;
            double                num2;
            double                num3;
            IEnumFieldError       enumFieldError;
            IFields               field;
            IWorkspace            workspace = ((IDataset)ifeatureClass_0).Workspace;
            IFeatureDataConverter featureDataConverterClass = new FeatureDataConverter();
            IWorkspaceName        workspaceNameClass        = new WorkspaceName() as IWorkspaceName;

            workspaceNameClass.ConnectionProperties   = workspace.ConnectionProperties;
            workspaceNameClass.WorkspaceFactoryProgID = workspace.WorkspaceFactory.GetClassID().Value.ToString();

            IWorkspaceName connectionProperties = new WorkspaceName() as IWorkspaceName;
            PropertySet    propertySetClass     = new PropertySet();

            connectionProperties.ConnectionProperties   = iworkspace_0.ConnectionProperties;
            connectionProperties.WorkspaceFactoryProgID = iworkspace_0.WorkspaceFactory.GetClassID().Value.ToString();
            IDatasetName featureClassNameClass = new FeatureClassName() as IDatasetName;
            string       aliasName             = ifeatureClass_0.AliasName;
            int          num4 = aliasName.LastIndexOf(".");

            if (num4 != -1)
            {
                aliasName = aliasName.Substring(num4 + 1);
            }
            featureClassNameClass.Name          = aliasName;
            featureClassNameClass.WorkspaceName = workspaceNameClass;
            IDatasetName datasetName = new FeatureClassName() as IDatasetName;

            {
                datasetName.WorkspaceName = connectionProperties;
            }
            ;
            IFieldChecker fieldCheckerClass = new FieldChecker()
            {
                ValidateWorkspace = iworkspace_0
            };

            string[] strArrays = string_0.Split(new char[] { '.' });
            string_0 = string.Concat(strArrays[(int)strArrays.Length - 1], "_Project");
            fieldCheckerClass.ValidateTableName(string_0, out str);
            string str1 = str;
            int    num5 = 1;

            if (
                !(iworkspace_0.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace
                    ? false
                    : iworkspace_0.Type != esriWorkspaceType.esriLocalDatabaseWorkspace))
            {
                while (((IWorkspace2)iworkspace_0).NameExists[esriDatasetType.esriDTFeatureClass, str1])
                {
                    str1 = string.Concat(str, "_", num5.ToString());
                    num5++;
                }
            }
            else if (iworkspace_0.Type == esriWorkspaceType.esriFileSystemWorkspace)
            {
                while (File.Exists(string.Concat(str1, ".shp")))
                {
                    str1 = string.Concat(str, "_", num5.ToString());
                    num5++;
                }
            }
            datasetName.Name = str1;
            IFields fieldsClass = new ESRI.ArcGIS.Geodatabase.Fields();

            num4 = ifeatureClass_0.Fields.FindField(ifeatureClass_0.ShapeFieldName);
            IField            field1           = ifeatureClass_0.Fields.Field[num4];
            IGeometryDef      geometryDef      = field1.GeometryDef;
            ISpatialReference spatialReference = geometryDef.SpatialReference;

            ispatialReference_0.GetDomain(out num, out num1, out num2, out num3);
            ((IGeometryDefEdit)geometryDef).GridCount_2        = 1;
            ((IGeometryDefEdit)geometryDef).GridSize_2[0]      = double_0;
            ((IGeometryDefEdit)geometryDef).SpatialReference_2 = ispatialReference_0;
            ((IFieldEdit)field1).GeometryDef_2 = geometryDef;
            for (int i = 0; i < ifeatureClass_0.Fields.FieldCount; i++)
            {
                if (i != num4)
                {
                    IField field2 = ifeatureClass_0.Fields.Field[i];
                    ((IFieldsEdit)fieldsClass).AddField(field2);
                }
                else
                {
                    ((IFieldsEdit)fieldsClass).AddField(field1);
                }
            }
            fieldCheckerClass.Validate(fieldsClass, out enumFieldError, out field);
            if (SRLibCommonFunc.m_pfrm != null)
            {
                SRLibCommonFunc.m_pfrm.FeatureProgress = featureDataConverterClass;
            }
            try
            {
                featureDataConverterClass.ConvertFeatureClass((IFeatureClassName)featureClassNameClass, null, null,
                                                              (IFeatureClassName)datasetName, geometryDef, field, "", 1000, 0);
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
示例#20
0
        private void 分割数据ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (pIsSelect == false)
            {
                MessageBox.Show("请先进行地图分割范围选择", "提示");
            }
            else if (pIsSelect == true)
            {
                pActiveView = this.axMapControl1.ActiveView;
                pMap        = pActiveView.FocusMap;


                ////先清除已有选择图形
                //pMap.ClearSelection();
                //pActiveView.Refresh();

                if (sourceDbName == "")
                {
                    MessageBox.Show("请选择需分割的个人数据库路径");
                    return;
                }
                else if (pBufferDistance == 0)
                {
                    MessageBox.Show("请设置缓冲区半径!");
                    return;
                }

                //数据分割之前先导出数据框架
                string XmlFile = System.Windows.Forms.Application.StartupPath + "\\WS_Schema.xml";   // 配置文件放置在应用程序的可执行文件的路径下。
                ExportWS_Schema(sourceDbName, XmlFile);

                //检查文件是否已经存在
                bool isExist = File.Exists(dbPath + dbName);
                if (isExist == true)
                {
                    File.Delete(dbPath + dbName);
                }
                ImportWS(dbPath, dbName, XmlFile);

                //********************************************


                //IGeometry pGeometry = this.axMapControl1.TrackPolygon();
                IGeometry pGeometry = (IGeometry)SelectArea;
                IGeometry pBufferGeometry; //缓冲区几何图形

                axMapControl1.DrawShape(pGeometry, ref m_FillSymbol);

                //空间查询

                ILayer         pLayer;
                IFeatureLayer  pFeatureLayer;
                IFeatureClass  pFeatureClass;
                ISpatialFilter pSpatialFilter = new SpatialFilter();
                IFeatureCursor pFeatureCursor;
                IFeature       pFeature;
                int            m;
                string         pFileGDB;

                //遍历地图控件中的每个图层,进行多边形选择
                for (int i = 0; i < axMapControl1.Map.LayerCount; i++)
                {
                    pLayer        = pMap.get_Layer(i);
                    pFeatureLayer = (IFeatureLayer)pLayer;
                    pFeatureClass = pFeatureLayer.FeatureClass;
                    string str = pFeatureClass.AliasName;
                    pSpatialFilter.set_GeometryEx(pGeometry, false);
                    //设置空间过滤关系为包含
                    pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
                    pFeatureCursor            = pFeatureClass.Search(pSpatialFilter, false);
                    pFeature = pFeatureCursor.NextFeature();

                    ////遍历所有符合要求的要素,使用IMap::SelectFeature方法将他们添加到图层的选择要素层中去
                    while (pFeature != null)
                    {
                        pMap.SelectFeature(pFeatureLayer, pFeature);
                        pFeature = pFeatureCursor.NextFeature();
                    }
                    pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                    m = this.axMapControl1.Map.SelectionCount;  // 选择要素的个数
                }

                DialogResult result = MessageBox.Show(this, "是否按此范围进行数据分割?", "提示", MessageBoxButtons.YesNo);
                if (result == System.Windows.Forms.DialogResult.Yes)
                {
                    //pFileGDB = Properties.Settings.Default.targetPersonalGDB;//此处是写死的参数,可以修改
                    pFileGDB = dbPath + dbName;
                    //缓冲区
                    pGeometry.SpatialReference = this.axMapControl1.SpatialReference;
                    ITopologicalOperator topologicalOperator = pGeometry as ITopologicalOperator;

                    pBufferGeometry = topologicalOperator.Buffer(pBufferDistance);


                    //打开目标数据库
                    IWorkspaceName pWorkspaceName = new WorkspaceName() as IWorkspaceName;
                    pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";
                    pWorkspaceName.PathName = pFileGDB;
                    IName             pName     = pWorkspaceName as IName;
                    IFeatureWorkspace target_ws = pName.Open() as IFeatureWorkspace;
                    IWorkspaceEdit    wse       = target_ws as IWorkspaceEdit;

                    //遍历地图控件中的每个图层,进行数据分割
                    for (int i = 0; i < axMapControl1.Map.LayerCount; i++)
                    {
                        pLayer        = pMap.get_Layer(i);
                        pFeatureLayer = (IFeatureLayer)pLayer;
                        pFeatureClass = pFeatureLayer.FeatureClass;
                        string pFeatureClassName = pFeatureClass.AliasName;

                        //打开目标图层
                        IFeatureClass target_fc = target_ws.OpenFeatureClass(pFeatureClassName);

                        //*********设置空间过滤关系为包含,选择框内的要素剪切到第二个个人数据库里,标识为可编辑状态******************
                        pSpatialFilter.set_GeometryEx(pGeometry, false);
                        pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;

                        wse.StartEditing(false);
                        IFeatureCursor target_cur = target_fc.Insert(true);
                        IFeatureBuffer buffer     = target_fc.CreateFeatureBuffer();

                        pFeatureCursor = pFeatureClass.Update(pSpatialFilter, true);
                        pFeature       = pFeatureCursor.NextFeature();

                        while (pFeature != null)
                        {
                            for (int n = 0; n < pFeatureClass.Fields.FieldCount; n++)
                            {
                                IField source_field = pFeatureClass.Fields.get_Field(n);
                                if (source_field.Name != pFeatureClass.OIDFieldName && source_field.Name != "SHAPE_Area" && source_field.Name != "SHAPE_Length")
                                {
                                    int target_field_index = pFeatureClass.FindField(source_field.Name);
                                    if (target_field_index != -1)
                                    {
                                        if (source_field.Name == "Editable")
                                        {
                                            buffer.set_Value(target_field_index, 1);//选择框内的要素设定为可编辑
                                        }
                                        else
                                        {
                                            object source_value = pFeature.get_Value(pFeatureClass.FindField(source_field.Name));
                                            buffer.set_Value(target_field_index, source_value);
                                        }
                                    }
                                }
                            }
                            target_cur.InsertFeature(buffer);   //新的mdb图层中增加一条记录
                            pFeatureCursor.DeleteFeature();     //删除原数据库中的要素,保证每一个可编辑要素有并且只存在一个数据库中
                            pFeature = pFeatureCursor.NextFeature();
                        }

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);   //释放资源


                        //***************设置空间过滤关系为相交,缓冲区内的要素复制到第二个个人数据库里,但标识为不可编辑状态****************
                        pSpatialFilter.set_GeometryEx(pBufferGeometry, false);
                        pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIndexIntersects;


                        pFeatureCursor = pFeatureClass.Search(pSpatialFilter, true);
                        pFeature       = pFeatureCursor.NextFeature();

                        while (pFeature != null)
                        {
                            for (int n = 0; n < pFeatureClass.Fields.FieldCount; n++)
                            {
                                IField source_field = pFeatureClass.Fields.get_Field(n);
                                if (source_field.Name != pFeatureClass.OIDFieldName && source_field.Name != "SHAPE_Area" && source_field.Name != "SHAPE_Length")
                                {
                                    int target_field_index = pFeatureClass.FindField(source_field.Name);
                                    if (target_field_index != -1)
                                    {
                                        if (source_field.Name == "Editable")
                                        {
                                            buffer.set_Value(target_field_index, 0);//缓冲区内的要素设定为不可编辑
                                        }
                                        else
                                        {
                                            object source_value = pFeature.get_Value(pFeatureClass.FindField(source_field.Name));
                                            buffer.set_Value(target_field_index, source_value);
                                        }
                                    }
                                }
                            }
                            target_cur.InsertFeature(buffer);   //新的mdb图层中增加一条记录
                            pFeature = pFeatureCursor.NextFeature();
                        }
                        target_cur.Flush();
                        wse.StopEditing(true);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);   //释放资源
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(target_cur);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(buffer);
                    }

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(target_ws);
                    MessageBox.Show("数据分割成功!", "提示", MessageBoxButtons.OK);
                }
                pIsSelect = false;
                //*****************************************
            }
        }
示例#21
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            IName            internalObjectName;
            IFields          fields2;
            IEnumFieldError  error;
            string           fileNameWithoutExtension;
            string           str4;
            string           name;
            IField           field;
            int              num;
            IGeometryDefEdit geometryDef;
            Exception        exception;
            IFeatureDataset  dataset;

            if (this.txtOutName.Tag == null)
            {
                IGxFolder folder = new GxFolder();
                (folder as IGxFile).Path = Path.GetDirectoryName(this.txtOutName.Text);
                this.txtOutName.Tag      = folder;
            }
            if (this.txtOutName.Tag == null)
            {
                return;
            }
            IGxObject tag = this.txtOutName.Tag as IGxObject;

            if (tag is IGxFolder)
            {
                IWorkspaceName name2 = new WorkspaceName() as IWorkspaceName;


                name2.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
                name2.PathName = (tag.InternalObjectName as IFileName).Path;

                internalObjectName = name2 as IName;
                string text = this.txtOutName.Text;
                if (Path.GetExtension(this.txtOutName.Text) != ".shp")
                {
                    text = Path.GetFileNameWithoutExtension(this.txtOutName.Text) + ".shp";
                }
                if (File.Exists(text))
                {
                    MessageBox.Show("已经存在该shapefile文件,请重新输入文件名");
                    return;
                }
            }
            else
            {
                internalObjectName = tag.InternalObjectName;
            }
            IFields       inputField = this.m_pFeatureLayer.FeatureClass.Fields;
            IFieldChecker checker    = new FieldChecker();
            IFeatureClass class2     = null;

            if (internalObjectName is IWorkspaceName)
            {
                IFeatureWorkspace workspace = internalObjectName.Open() as IFeatureWorkspace;
                checker.ValidateWorkspace = workspace as IWorkspace;
                checker.Validate(inputField, out error, out fields2);
                fileNameWithoutExtension = Path.GetFileNameWithoutExtension(this.txtOutName.Text);
                checker.ValidateTableName(fileNameWithoutExtension, out str4);
                fileNameWithoutExtension = str4;
                ISpatialReference spatialReference = (this.m_pFeatureLayer.FeatureClass as IGeoDataset).SpatialReference;
                if (this.rdoSRType.SelectedIndex == 0)
                {
                    spatialReference = this.m_pMap.SpatialReference;
                }
                name = "";
                for (num = 0; num < fields2.FieldCount; num++)
                {
                    field = fields2.get_Field(num);
                    if (field.Type == esriFieldType.esriFieldTypeGeometry)
                    {
                        geometryDef = (field as IFieldEdit).GeometryDef as IGeometryDefEdit;
                        geometryDef.SpatialReference_2      = spatialReference;
                        (field as IFieldEdit).GeometryDef_2 = geometryDef;
                        name = field.Name;
                        break;
                    }
                }
                try
                {
                    if ((workspace is IWorkspace2) &&
                        (workspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureClass,
                                                                  fileNameWithoutExtension))
                    {
                        MessageBox.Show("已经存在该要素类,请重新输入要素类名");
                        return;
                    }
                    class2 = workspace.CreateFeatureClass(fileNameWithoutExtension, fields2, null, null,
                                                          esriFeatureType.esriFTSimple, name, "");
                }
                catch (Exception exception1)
                {
                    exception = exception1;
                    MessageBox.Show("无法创建输出要素类!");
                    return;
                }
                goto Label_0400;
            }
            else
            {
                dataset = internalObjectName.Open() as IFeatureDataset;
                IWorkspace workspace2 = dataset.Workspace;
                checker.ValidateWorkspace = workspace2;
                checker.Validate(inputField, out error, out fields2);
                fileNameWithoutExtension = Path.GetFileNameWithoutExtension(this.txtOutName.Text);
                checker.ValidateTableName(fileNameWithoutExtension, out str4);
                fileNameWithoutExtension = str4;
                name = "";
                for (num = 0; num < fields2.FieldCount; num++)
                {
                    field = fields2.get_Field(num);
                    if (field.Type == esriFieldType.esriFieldTypeGeometry)
                    {
                        geometryDef = (field as IFieldEdit).GeometryDef as IGeometryDefEdit;
                        geometryDef.SpatialReference_2      = (dataset as IGeoDataset).SpatialReference;
                        (field as IFieldEdit).GeometryDef_2 = geometryDef;
                        name = field.Name;
                        break;
                    }
                }
            }
            try
            {
                class2 = dataset.CreateFeatureClass(fileNameWithoutExtension, fields2, null, null,
                                                    esriFeatureType.esriFTSimple, name, "");
            }
            catch (Exception exception2)
            {
                exception = exception2;
                MessageBox.Show("无法创建输出要素类!,原因:" + exception.Message);

                return;
            }
Label_0400:
            if (this.cboExportData.SelectedIndex == 0)
            {
                ExportDataHelper.ExportData(this.m_pFeatureLayer, class2, false);
            }
            else if (this.cboExportData.SelectedIndex == 1)
            {
                ISpatialFilter queryFilter = new SpatialFilter()
                {
                    Geometry = (this.m_pMap as IActiveView).Extent
                };
                IFeatureCursor cursor = this.m_pFeatureLayer.Search(queryFilter, false);
                ExportDataHelper.ExportData(cursor, class2);
                ComReleaser.ReleaseCOMObject(cursor);
            }
            else
            {
                ExportDataHelper.ExportData(this.m_pFeatureLayer, class2, true);
            }
            base.DialogResult = DialogResult.OK;
        }
示例#22
0
        public static void Project(IFeatureClass ifeatureClass_0, ISpatialReference ispatialReference_0,
                                   IFeatureDatasetName ifeatureDatasetName_0, string string_0, double double_0)
        {
            IWorkspace            workspace            = ((IDataset)ifeatureClass_0).Workspace;
            IFeatureDataConverter featureDataConverter = new FeatureDataConverter();
            IWorkspaceName        workspaceName        = new WorkspaceName() as IWorkspaceName;

            workspaceName.ConnectionProperties   = workspace.ConnectionProperties;
            workspaceName.WorkspaceFactoryProgID = workspace.WorkspaceFactory.GetClassID().Value.ToString();
            IWorkspaceName workspaceName2 = (ifeatureDatasetName_0 as IDatasetName).WorkspaceName;
            IDatasetName   datasetName    = new FeatureClassName() as IDatasetName;
            string         text           = ifeatureClass_0.AliasName;
            int            num            = text.LastIndexOf(".");

            if (num != -1)
            {
                text = text.Substring(num + 1);
            }
            datasetName.Name          = text;
            datasetName.WorkspaceName = workspaceName;
            IWorkspace2  workspace2   = (workspaceName2 as IName).Open() as IWorkspace2;
            IDatasetName datasetName2 = new FeatureClassName() as IDatasetName;

            datasetName2.WorkspaceName = workspaceName2;
            (datasetName2 as IFeatureClassName).FeatureDatasetName = (ifeatureDatasetName_0 as IDatasetName);
            IFieldChecker fieldChecker = new FieldChecker();

            fieldChecker.ValidateWorkspace = (workspace2 as IWorkspace);
            string[] array = string_0.Split(new char[]
            {
                '.'
            });
            string_0 = array[array.Length - 1] + "_Project";
            string text2;

            fieldChecker.ValidateTableName(string_0, out text2);
            string text3 = text2;
            int    num2  = 1;

            if (workspaceName2.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace ||
                workspaceName2.Type == esriWorkspaceType.esriLocalDatabaseWorkspace)
            {
                while (workspace2.get_NameExists(esriDatasetType.esriDTFeatureClass, text3))
                {
                    text3 = text2 + "_" + num2.ToString();
                    num2++;
                }
            }
            else if (workspaceName2.Type == esriWorkspaceType.esriFileSystemWorkspace)
            {
                while (System.IO.File.Exists(text3 + ".shp"))
                {
                    text3 = text2 + "_" + num2.ToString();
                    num2++;
                }
            }
            datasetName2.Name = text3;
            IFields fields = new ESRI.ArcGIS.Geodatabase.Fields() as IFields;

            num = ifeatureClass_0.Fields.FindField(ifeatureClass_0.ShapeFieldName);
            IField            field       = ifeatureClass_0.Fields.get_Field(num);
            IGeometryDef      geometryDef = field.GeometryDef;
            ISpatialReference arg_1D9_0   = geometryDef.SpatialReference;
            double            num3;
            double            num4;
            double            num5;
            double            num6;

            ispatialReference_0.GetDomain(out num3, out num4, out num5, out num6);
            ((IGeometryDefEdit)geometryDef).GridCount_2 = 1;
            ((IGeometryDefEdit)geometryDef).set_GridSize(0, double_0);
            ((IGeometryDefEdit)geometryDef).SpatialReference_2 = ispatialReference_0;
            ((IFieldEdit)field).GeometryDef_2 = geometryDef;
            for (int i = 0; i < ifeatureClass_0.Fields.FieldCount; i++)
            {
                if (i == num)
                {
                    ((IFieldsEdit)fields).AddField(field);
                }
                else
                {
                    IField field2 = ifeatureClass_0.Fields.get_Field(i);
                    ((IFieldsEdit)fields).AddField(field2);
                }
            }
            IEnumFieldError enumFieldError;
            IFields         outputFields;

            fieldChecker.Validate(fields, out enumFieldError, out outputFields);
            if (SRLibCommonFunc.m_pfrm != null)
            {
                SRLibCommonFunc.m_pfrm.FeatureProgress = featureDataConverter;
            }
            try
            {
                featureDataConverter.ConvertFeatureClass((IFeatureClassName)datasetName, null, ifeatureDatasetName_0,
                                                         (IFeatureClassName)datasetName2, geometryDef, outputFields, "", 1000, 0);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }