zoukankan      html  css  js  c++  java
  • 创建FeatureClass

    1.在GeoDatabase中创建要素类,GeoDatabase包括Personal GeoDatabase(Microsoft Office Access数据库)和File GeoDatabase
    (ESRI基于文件存放的空间数据库)。
      1 ///<summary>Simple helper to create a featureclass in a geodatabase.在GeoDatabase中创建要素类</summary>
      2 /// 
      3 ///<param name="workspace">An IWorkspace2 interface</param>
      4 ///<param name="featureDataset">An IFeatureDataset interface or Nothing.要素集,在该要素集下面创建要素类,没有则在GeoDatabase根目录下面创建要素类</param>
      5 ///<param name="featureClassName">A System.String that contains the name of the feature class to open or create. Example: "states"</param>
      6 ///<param name="fields">An IFields interface.创建的要素类的字段</param>
      7 ///<param name="CLSID">A UID value or Nothing. Example "esriGeoDatabase.Feature" or Nothing</param>
      8 ///<param name="CLSEXT">A UID value or Nothing (this is the class extension if you want to reference a class extension when creating the feature class).</param>
      9 ///<param name="strConfigKeyword">An empty System.String or RDBMS table string for ArcSDE. Example: "myTable" or ""</param>
     10 ///  
     11 ///<returns>An IFeatureClass interface or a Nothing</returns>
     12 ///  
     13 ///<remarks>
     14 ///  (1) If a 'featureClassName' already exists in the workspace a reference to that feature class 
     15 ///      object will be returned.
     16 ///  (2) If an IFeatureDataset is passed in for the 'featureDataset' argument the feature class
     17 ///      will be created in the dataset. If a Nothing is passed in for the 'featureDataset'
     18 ///      argument the feature class will be created in the workspace.
     19 ///  (3) When creating a feature class in a dataset the spatial reference is inherited 
     20 ///      from the dataset object.
     21 ///  (4) If an IFields interface is supplied for the 'fields' collection it will be used to create the
     22 ///      table. If a Nothing value is supplied for the 'fields' collection, a table will be created using 
     23 ///      default values in the method.
     24 ///  (5) The 'strConfigurationKeyword' parameter allows the application to control the physical layout 
     25 ///      for this table in the underlying RDBMSfor example, in the case of an Oracle database, the 
     26 ///      configuration keyword controls the tablespace in which the table is created, the initial and 
     27 ///     next extents, and other properties. The 'strConfigurationKeywords' for an ArcSDE instance are 
     28 ///      set up by the ArcSDE data administrator, the list of available keywords supported by a workspace 
     29 ///      may be obtained using the IWorkspaceConfiguration interface. For more information on configuration 
     30 ///      keywords, refer to the ArcSDE documentation. When not using an ArcSDE table use an empty 
     31 ///      string (ex: "").
     32 ///</remarks>
     33 public ESRI.ArcGIS.Geodatabase.IFeatureClass CreateFeatureClass(ESRI.ArcGIS.Geodatabase.IWorkspace2 workspace, ESRI.ArcGIS.Geodatabase.IFeatureDataset featureDataset, System.String featureClassName, ESRI.ArcGIS.Geodatabase.IFields fields, ESRI.ArcGIS.esriSystem.UID CLSID, ESRI.ArcGIS.esriSystem.UID CLSEXT, System.String strConfigKeyword)
     34 {
     35   if (featureClassName == "") return null; // name was not passed in 
     36 
     37   ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass;
     38   ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explicit Cast
     39 
     40   if (workspace.get_NameExists(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureClass, featureClassName)) //feature class with that name already exists 
     41   {
     42     featureClass = featureWorkspace.OpenFeatureClass(featureClassName);
     43     return featureClass;
     44   }
     45 
     46   // assign the class id value if not assigned
     47   if (CLSID == null)
     48   {
     49     CLSID = new ESRI.ArcGIS.esriSystem.UIDClass();
     50     CLSID.Value = "esriGeoDatabase.Feature";
     51   }
     52 
     53   ESRI.ArcGIS.Geodatabase.IObjectClassDescription objectClassDescription = new ESRI.ArcGIS.Geodatabase.FeatureClassDescriptionClass();
     54 
     55   // if a fields collection is not passed in then supply our own
     56   if (fields == null)
     57   {
     58     // create the fields using the required fields method
     59     fields = objectClassDescription.RequiredFields;
     60     ESRI.ArcGIS.Geodatabase.IFieldsEdit fieldsEdit = (ESRI.ArcGIS.Geodatabase.IFieldsEdit)fields; // Explicit Cast
     61     ESRI.ArcGIS.Geodatabase.IField field = new ESRI.ArcGIS.Geodatabase.FieldClass();
     62 
     63     // create a user defined text field
     64     ESRI.ArcGIS.Geodatabase.IFieldEdit fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field; // Explicit Cast
     65 
     66     // setup field properties
     67     fieldEdit.Name_2 = "SampleField";
     68     fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString;
     69     fieldEdit.IsNullable_2 = true;
     70     fieldEdit.AliasName_2 = "Sample Field Column";
     71     fieldEdit.DefaultValue_2 = "test";
     72     fieldEdit.Editable_2 = true;
     73     fieldEdit.Length_2 = 100;
     74 
     75     // add field to field collection
     76     fieldsEdit.AddField(field);
     77     fields = (ESRI.ArcGIS.Geodatabase.IFields)fieldsEdit; // Explicit Cast
     78   }
     79 
     80   System.String strShapeField = "";
     81 
     82   // locate the shape field
     83   for (int j = 0; j < fields.FieldCount; j++)
     84   {
     85     if (fields.get_Field(j).Type == ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry)
     86     {
     87       strShapeField = fields.get_Field(j).Name;
     88     }
     89   }
     90 
     91   // Use IFieldChecker to create a validated fields collection.
     92   ESRI.ArcGIS.Geodatabase.IFieldChecker fieldChecker = new ESRI.ArcGIS.Geodatabase.FieldCheckerClass();
     93   ESRI.ArcGIS.Geodatabase.IEnumFieldError enumFieldError = null;
     94   ESRI.ArcGIS.Geodatabase.IFields validatedFields = null;
     95   fieldChecker.ValidateWorkspace = (ESRI.ArcGIS.Geodatabase.IWorkspace)workspace;
     96   fieldChecker.Validate(fields, out enumFieldError, out validatedFields);
     97 
     98   // The enumFieldError enumerator can be inspected at this point to determine 
     99   // which fields were modified during validation.
    100   // finally create and return the feature class
    101   if (featureDataset == null)// if no feature dataset passed in, create at the workspace level
    102   {
    103       featureClass = featureWorkspace.CreateFeatureClass(featureClassName, validatedFields, CLSID, CLSEXT, ESRI.ArcGIS.Geodatabase.esriFeatureType.esriFTSimple, strShapeField, strConfigKeyword);
    104   }
    105   else
    106   {
    107       featureClass = featureDataset.CreateFeatureClass(featureClassName, validatedFields, CLSID, CLSEXT, ESRI.ArcGIS.Geodatabase.esriFeatureType.esriFTSimple, strShapeField, strConfigKeyword);
    108   }
    109   return featureClass;
    110 }


    源:http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#/Create_FeatureClass_Snippet/0049000000pz000000/


  • 相关阅读:
    关于vue中如何实现排到他思想
    js 文件下载
    js文件上传
    webpack学习笔记
    this总结
    React中props与state
    js事件总结
    js深拷贝与浅拷贝
    JS设计模式之观察者模式
    ES5与ES6的继承
  • 原文地址:https://www.cnblogs.com/xuchen/p/5838894.html
Copyright © 2011-2022 走看看