AE 创建shp图层

C#+AE中创建点状Shp文件

今天将点写入一个新的SHP文件中,自己先做了一个简单试验,一切正常。代码如下

private void CreateShpFromPoint()
        {
            ISpatialReference pSpatialReference = this.axMapData.ActiveView.FocusMap.SpatialReference;

            string strShapeFolder="C:/";
            string strShapeFile = "test.shp";

            string shapeFileFullName = strShapeFolder + strShapeFile;
            IWorkspaceFactory pWorkspaceFactory= new ShapefileWorkspaceFactory();
            IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace) pWorkspaceFactory.OpenFromFile(strShapeFolder, 0);
            IFeatureClass pFeatureClass;
            if (File.Exists(shapeFileFullName))
            {
                pFeatureClass = pFeatureWorkspace.OpenFeatureClass(strShapeFile);
                IDataset pDataset = (IDataset)pFeatureClass;
                pDataset.Delete();
            }

            IFields pFields = new FieldsClass();
            IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields;
            
            IField pField = new FieldClass();
            IFieldEdit pFieldEdit = (IFieldEdit)pField;

            pFieldEdit.Name_2 = "SHAPE";
            pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;

            IGeometryDefEdit pGeoDef = new GeometryDefClass();
            IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef;
            pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
            pGeoDefEdit.SpatialReference_2 = pSpatialReference; //new UnknownCoordinateSystemClass();
            pFieldEdit.GeometryDef_2 = pGeoDef;
            pFieldsEdit.AddField(pField);

            pField = new FieldClass();
            pFieldEdit = (IFieldEdit)pField;
            pFieldEdit.Name_2 = "ID";
            pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
            pFieldsEdit.AddField(pField);
            
            pField = new FieldClass();
            pFieldEdit = (IFieldEdit)pField;
            pFieldEdit.Name_2 = "Pixels";
            pFieldEdit.Type_2 = esriFieldType.esriFieldTypeInteger;
            pFieldsEdit.AddField(pField);

            pFeatureClass = pFeatureWorkspace.CreateFeatureClass(strShapeFile, pFields, null, null, esriFeatureType.esriFTSimple, "SHAPE", "");
            IPoint pPoint = new PointClass();
            pPoint.X = 113.0;
            pPoint.Y = 23.0;
            IFeature pFeature = pFeatureClass.CreateFeature();
            pFeature.Shape = pPoint;
            pFeature.set_Value(pFeature.Fields.FindField("ID"), "D-1");
            pFeature.set_Value(pFeature.Fields.FindField("Pixels"), 1);
            pFeature.Store();

            IFeatureLayer pFeaturelayer = new FeatureLayerClass();
            pFeaturelayer.FeatureClass = pFeatureClass;
            pFeaturelayer.Name = "layer";

            this.axMapData.AddLayer(pFeaturelayer);

        }

posted on 2013-05-28 19:11  jin_qi_er  阅读(1000)  评论(0编辑  收藏  举报