两个程序

      private void  CreateFeatureLayer(string outfileNamePath)
        {
            int index = outfileNamePath.LastIndexOf('\\');
            string folder = outfileNamePath.Substring(0,index );
            ShapefileFullName = outfileNamePath.Substring(index +1);
            IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass();
            IWorkspace pWS = pWSF.OpenFromFile(folder, 0);
            IFeatureWorkspace pFWS = pWS as IFeatureWorkspace;
            if (File.Exists(outfileNamePath))
            {
                IFeatureClass featureClass = pFWS.OpenFeatureClass(ShapefileFullName );
                IDataset pDataset = featureClass as IDataset;
                pDataset.Delete();
            }

            IField pField;
            IFields pFields = new FieldsClass();
            IFieldsEdit pFieldsEdit;
            pFieldsEdit = pFields as IFieldsEdit;

            pField = new FieldClass();
            IFieldEdit pFieldEdit = pField as IFieldEdit;
            pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
            pFieldEdit.Name_2 = "Shape";

            IGeometryDef pGeomDef = new GeometryDefClass();
            IGeometryDefEdit pGeomDefEdit = pGeomDef as IGeometryDefEdit;
            pGeomDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;

  ISpatialReferenceFactory pSpatRefFat = new SpatialReferenceEnvironmentClass();             IGeographicCoordinateSystem pGeoSys;             pGeoSys = pSpatRefFat.CreateGeographicCoordinateSystem(4214);

            pGeomDefEdit.SpatialReference_2 = pGeoSys;

// pGeomDefEdit.SpatialReference_2 = new GeographicCoordinateSystemClass(); pFieldEdit.GeometryDef_2 = pGeomDef; pFieldsEdit.AddField(pField); pField = new FieldClass(); pFieldEdit = pField as IFieldEdit; pFieldEdit.Length_2 = 20; pFieldEdit.Name_2 = "unKnow"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString; pFieldsEdit.AddField(pField); IFeatureClass pFeatureClass; pFeatureClass = pFWS.CreateFeatureClass(ShapefileFullName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; } private void CreateFeatureLayer(string outfileNamePath) { int index = outfileNamePath.LastIndexOf('\\'); string folder = outfileNamePath.Substring(0, index);//文件夹的路径 ShapefileFullName = outfileNamePath.Substring(index + 1);//shapeFileFullName的全称是文件的名称(不包括前面的地址) IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFWS = pWSF.OpenFromFile(folder, 0) as IFeatureWorkspace; if (File.Exists(outfileNamePath)) { IFeatureClass featureClass = pFWS.OpenFeatureClass(ShapefileFullName); IDataset pDataset = featureClass as IDataset; pDataset.Delete(); } IFields pFields = new FieldsClass(); IFieldsEdit pFieldsEdit; pFieldsEdit = pFields as IFieldsEdit; IField pField = new FieldClass(); IFieldEdit pFieldEdit = (IFieldEdit)pField; pFieldEdit.Name_2 = "Shape"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; IGeometryDef pGeometryDef = new GeometryDefClass(); IGeometryDefEdit pGDefEdit = pGeometryDef as IGeometryDefEdit; pGDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;//这里注意esriGeometrypolygon or esriGeometryPolyline

            //这里出现一个问题:在GeometryDefEdit中GeometryDef属性                                           
            pFieldEdit.GeometryDef_2 = pGeometryDef;
            pFieldsEdit.AddField(pField);

            pField = new FieldClass();
            pFieldEdit = (IFieldEdit)pField;
            pFieldEdit.Name_2 = "UnKnown";
            pFieldEdit.Length_2 = 20;
            pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
            pFieldsEdit.AddField(pField);
            IFeatureClass pFeatureClass;

            pFeatureClass = pFWS.CreateFeatureClass(ShapefileFullName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
 
        }
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值