• [转] arcgis Engine创建shp图层


    小生 原文 arcgis Engine创建shp图层

    以创建点图层为例。首先要得到保存文件的地址。

                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Shape文件(*.shp)|*.shp";
                saveFileDialog.Title = "新建点形shp文件";
                saveFileDialog.CheckFileExists = false;
                DialogResult dialogResult = saveFileDialog.ShowDialog();
                IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
                int index;
                string fileName;
                string filePath;
                if (dialogResult == DialogResult.OK)
                {
                    fileFullPath = saveFileDialog.FileName;
                    index = fileFullPath.LastIndexOf("");
                    fileName = fileFullPath.Substring(index + 1);
                    filePath = fileFullPath.Substring(0, index);
                    if (System.IO.File.Exists(saveFileDialog.FileName))//检查文件是否存在
                    {
                        if (MessageBox.Show("该文件夹下已经有同名文件,替换原文件?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                        {
                            IFeatureWorkspace FWS = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;
                            IFeatureClass pFeatureClass = FWS.OpenFeatureClass(fileName);
                            IDataset pDataset = pFeatureClass as IDataset;
                            pDataset.Delete();
                        }
                        //System.IO.File.Delete(saveFileDialog.FileName);
                        else
                            return;
                    }
                    
                }
                else
                {
                    fileFullPath = null;
                    return;
                }      
    

     然后,要为该SHP建立新的字段:

                IFields pFields = new FieldsClass();
                IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;
                IField pField = new FieldClass();
                IFieldEdit pFieldEdit = pField as IFieldEdit;
    
                pFieldEdit.Name_2 = "Shape";
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
    
                IGeometryDef pGeometryDef = new GeometryDef();
                IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit;
                pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;//点、线、面什么的
                pGeometryDefEdit.SpatialReference_2 = axMapControl1.SpatialReference;
    
              
    
                ISpatialReferenceFactory2 ipSpaRefFa = new SpatialReferenceEnvironmentClass();
                IGeographicCoordinateSystem ipGeoCorSys = new GeographicCoordinateSystemClass();
    
                ipGeoCorSys = ipSpaRefFa.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
                ISpatialReference ipSpaRef = ipGeoCorSys;
                //IControlPrecision2 contrPrecision = ipSpaRef as IControlPrecision2;
    
               
    
                pGeometryDefEdit.SpatialReference_2 = ipSpaRef;
                
    
                pFieldEdit.GeometryDef_2 = pGeometryDef;
    
                pFieldsEdit.AddField(pField);
    
                pField = new FieldClass();//新建字段
                pFieldEdit = pField as IFieldEdit;
                pFieldEdit.Length_2 = 100;
                pFieldEdit.Name_2 = "editorName";
                pFieldEdit.AliasName_2 = "editorName";
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                
                pFieldsEdit.AddField(pField);
                //继续增加其它字段
    

     最后,创建图层

                IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;
               
                int i = fileName.IndexOf(".shp");
                if(i == -1 )
                pFeatureWorkspace.CreateFeatureClass(fileName + ".shp", pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
                else
                pFeatureWorkspace.CreateFeatureClass(fileName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
               
                axMapControl1.AddShapeFile(filePath, fileName + ".shp");
    
  • 相关阅读:
    篝火晚会
    SECHS
    emmc4.X boot1 and boot2
    imx6Q Android7.1 Udisk Mount
    imx6Q 4.1.15 Perf support
    imx6Q 4.1.15 Kgtp support
    imx6Q 4.1.15 early console support
    imx6Q USB OTG Host/Device纯软件切换
    iMX6Q DDR Stresstest
    iMX6Q PowerSave调试
  • 原文地址:https://www.cnblogs.com/arxive/p/5903490.html
Copyright © 2020-2023  润新知