• AE创建一个空白的Shapefile (转载)


    1.IField和IFieldEdit区别:

    IFieldEdit是继承IField的,因为IField的属性大部分是只读的(read-only),所以IFieldEdit就在IField的基础上多了个只写的属性。这也是为什么会出现Name_2、Length_2等原因了。IFields和IFieldsEdit的区别也是如此。

    2.IField和IFields区别

    IFields是IField的集合,通过AddField()方法或者set_Field()方法添加Field,其中set_Field通过index可以在指定的位置添加Field;

    3.
    esriFieldType         字段类型,除了int,string,double等常见类型外还包含了esriFieldTypeGeometry的类型,可以查询

                                 ms-help://MS.VSCC.v80/MS.VSIPCC.v80/ESRI.EDNv9.2/esriGeoDatabase/html/esriFieldType.htm;
    esriGeometryType 几何类型,指点,线,面等,如果记不清楚,可以查询

                                 ms-help://MS.VSCC.v80/MS.VSIPCC.v80/ESRI.EDNv9.2/esriGeometry/html/esriGeometryType.htm;
    esriFeatureType    要素类型,包括简单要素类,复杂要素,注记,多维要素,Covering,Raster等,可以查询

                                 ms-help://MS.VSCC.v80/MS.VSIPCC.v80/ESRI.EDNv9.2/esriGeoDatabase/html/esriFeatureType.htm。

    今天发现了一个错误,以改正。之前写了个Length_2=10;编辑的时候发现错误了,Length只针对String字段的,Numeric字段的长度应该设置Precision的值,如果是Double的话,还可以用Scale来设置保留几位小数点。

    补充一个CreateFeatureClass()的几个参数的说明,刚在网上查阅的:

    CLSID和EXTCLSID,它们的含义非常有趣。我们知道,GeoDatabase中的每个对象都有个唯一标识符UID,系统是靠认证这个64位的随机值来区分不同对象的,同样的,要素类和要素类的扩展部分也有这么个标识,只不过在一般情况下我们无法看到这个UID值而已。如何产生这两个值呢,也很简单,使用:
    CLSID=pOCDesc.InstanceCLSID;
    EXTCLSID=pOCDesc.ClassExtensionCLSID;
    The CLSID property of a Table determines the type of row object returned by the Table;原文
    ShapeFieldName是指一个要素类的Shape字段名,一般都是"SHAPE"。----好像不能更改。更改完了还剩显示Shape,待解决
    ConfigKeyword一般不用设置,可以设置为空字符串。

    view plaincopy to clipboardprint?
    /// <summary>  
    /// 在指定路径下创建一个指定名字的空Shapefile  
    /// </summary>  
    /// <param name="strShapeFolder">指定路径</param>  
    /// <param name="strShapeName">文件名</param>  
     
            public void CreateShapefile(string strShapeFolder)  
            {  
                //打开工作空间  
                const string strShapeFieldName = "shape";  
                IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass();  
                IFeatureWorkspace pWS = (IFeatureWorkspace)pWSF.OpenFromFile(strShapeFolder,0);   
     
                //设置字段集  
                IFields pFields = new FieldsClass();  
                IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields;  
     
                //设置字段  
                IField pField = new FieldClass();  
                IFieldEdit pFieldEdit = (IFieldEdit)pField;  
     
                //创建类型为几何类型的字段  
                pFieldEdit.Name_2 = strShapeFieldName;  
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;  
                  
                //为esriFieldTypeGeometry类型的字段创建几何定义,包括类型和空间参照   
                IGeometryDef pGeoDef = new GeometryDefClass();     //The geometry definition for the field if IsGeometry is TRUE.  
                IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef;  
                pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;  
                pGeoDefEdit.SpatialReference_2 = new UnknownCoordinateSystemClass();  
     
                pFieldEdit.GeometryDef_2 = pGeoDef;  
                pFieldsEdit.AddField(pField);  
     
                //添加其他的字段  
                pField = new FieldClass();  
                pFieldEdit = (IFieldEdit)pField;  
                pFieldEdit.Name_2 = "WaterLevel";  
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;  
                pFieldEdit.Precision_2 = 7;//数值精度  
                pFieldEdit.Scale_2 = 3;//小数点位数  
                pFieldsEdit.AddField(pField);  
     
                //创建shapefile  
                pWS.CreateFeatureClass(strShapeName,pFields,null,null,esriFeatureType.esriFTSimple,strShapeFieldName,"");  
            } 


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jingss_3/archive/2009/12/28/5092230.aspx

  • 相关阅读:
    Eclipse快捷键大全,导包快捷键:ctrl+Shift+/【转】
    xml合并工具【原】
    解决win10无线无故断网,重启才恢复正常的情况【原】
    PL/SQL可以连oracle,但是jdbc连不上 【转】
    Java 编程下使用 Class.forName() 加载类【转】
    Http请求中Content-Type讲解以及在Spring MVC中的应用【转】
    activeMQ
    概念,包括对象,接口,类,方法
    javabean
    session
  • 原文地址:https://www.cnblogs.com/atravellers/p/1646224.html
Copyright © 2020-2023  润新知