zoukankan      html  css  js  c++  java
  • ArcEngine创建要素类_线类型

            public ESRI.ArcGIS.Geodatabase.IFeatureClass CreateFeatureClassForLine(ESRI.ArcGIS.Geodatabase.IWorkspace2 workspace, ESRI.ArcGIS.Geodatabase.IFeatureDataset featureDataset, System.String featureClassName)
            {
                ESRI.ArcGIS.esriSystem.UID CLSID = null;
                ESRI.ArcGIS.esriSystem.UID CLSEXT = null;
                System.String strConfigKeyword = null;
                if (featureClassName == "") return null; // name was not passed in 
    
                ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass;
                ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explicit Cast
    
                if (workspace.get_NameExists(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureClass, featureClassName)) //feature class with that name already exists 
                {
                    featureClass = featureWorkspace.OpenFeatureClass(featureClassName);
                    return featureClass;
                }
    
                // assign the class id value if not assigned
                if (CLSID == null)
                {
                    CLSID = new ESRI.ArcGIS.esriSystem.UIDClass();
                    CLSID.Value = "esriGeoDatabase.Feature";
                    //CLSID.Value = "esriGeometryType.esriGeometryPolyline";
                }
    
                ESRI.ArcGIS.Geodatabase.IObjectClassDescription objectClassDescription = new ESRI.ArcGIS.Geodatabase.FeatureClassDescriptionClass();
                ESRI.ArcGIS.Geodatabase.IFields fields = null;
                // if a fields collection is not passed in then supply our own
                if (fields == null)
                {
                    // create the fields using the required fields method
                    fields = objectClassDescription.RequiredFields;
                    ESRI.ArcGIS.Geodatabase.IFieldsEdit fieldsEdit = (ESRI.ArcGIS.Geodatabase.IFieldsEdit)fields; // Explicit Cast
                    ESRI.ArcGIS.Geodatabase.IField field = new ESRI.ArcGIS.Geodatabase.FieldClass();
    
                    // create a user defined text field
                    ESRI.ArcGIS.Geodatabase.IFieldEdit fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field; // Explicit Cast
    
                    // setup field properties
                    fieldEdit.Name_2 = "ZBDID";
                    fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString;
                    fieldEdit.IsNullable_2 = true;
                    fieldEdit.AliasName_2 = "坐标编号";
                    fieldEdit.DefaultValue_2 = "0";
                    fieldEdit.Editable_2 = true;
                    fieldEdit.Length_2 = 100;
    
                    // add field to field collection
                    fieldsEdit.AddField(field);
                    fields = (ESRI.ArcGIS.Geodatabase.IFields)fieldsEdit; // Explicit Cast
                }
    
                System.String strShapeField = "";
    
                // locate the shape field
                for (int j = 0; j < fields.FieldCount; j++)
                {
                    if (fields.get_Field(j).Type == ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry)
                    {
                        //strShapeField = fields.get_Field(j).Name;
                        IField shapeField = fields.get_Field(j);
                        strShapeField = fields.get_Field(j).Name;
                        IGeometryDef geometryDef = shapeField.GeometryDef;
                        IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
    
                        // Alter the feature class geometry type to lines (default is polygons).
                        geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
                        geometryDefEdit.HasM_2 = true;
                        geometryDefEdit.GridCount_2 = 1;
    
                        // Set the first grid size to zero and allow ArcGIS to determine a valid grid size.
                        geometryDefEdit.set_GridSize(0, 0);
                        ISpatialReferenceFactory3 spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
                        geometryDefEdit.SpatialReference_2 = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954);
    
                        break;
                    }
                }
    
                // Use IFieldChecker to create a validated fields collection.
                ESRI.ArcGIS.Geodatabase.IFieldChecker fieldChecker = new ESRI.ArcGIS.Geodatabase.FieldCheckerClass();
                ESRI.ArcGIS.Geodatabase.IEnumFieldError enumFieldError = null;
                ESRI.ArcGIS.Geodatabase.IFields validatedFields = null;
                fieldChecker.ValidateWorkspace = (ESRI.ArcGIS.Geodatabase.IWorkspace)workspace;
                fieldChecker.Validate(fields, out enumFieldError, out validatedFields);
    
                // The enumFieldError enumerator can be inspected at this point to determine 
                // which fields were modified during validation.
    
                // finally create and return the feature class
                if (featureDataset == null)// if no feature dataset passed in, create at the workspace level
                {
                    featureClass = featureWorkspace.CreateFeatureClass(featureClassName, validatedFields, CLSID, CLSEXT, ESRI.ArcGIS.Geodatabase.esriFeatureType.esriFTSimple, strShapeField, strConfigKeyword);
                }
                else
                {
                    featureClass = featureDataset.CreateFeatureClass(featureClassName, validatedFields, CLSID, CLSEXT, ESRI.ArcGIS.Geodatabase.esriFeatureType.esriFTSimple, strShapeField, strConfigKeyword);
                }
                return featureClass;
            }
    本博客有部分内容来自网络,如有问题请联系:hebeilijianghua@qq.com,并注明来自博客园。
  • 相关阅读:
    美团霸面---我想说说心里话。
    docker在ubuntu14.04下的安装笔记
    ubuntu14.04 upgrade出现【Ubuntu is running in low-graphics mode】问题的一个解决办法
    Python2和Python3在windows下共存
    Python发送邮件
    Python在安装第三方模块遇到的问题及解决办法
    127.0.0.1和localhost完全相等吗?
    vim总结
    linux shell学习笔记
    Jenkins +JUnit
  • 原文地址:https://www.cnblogs.com/leebokeyuan/p/5580642.html
Copyright © 2011-2022 走看看