您的位置:首页 > 其它

Arcgis engnie 创建SHP文件

2013-03-16 10:38 232 查看
以创建点图层为例。

首先要得到保存文件的地址。

SaveFileDialogsaveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Shape文件(*.shp)|*.shp";
saveFileDialog.Title = "新建点形shp文件";
saveFileDialog.CheckFileExists = false;
DialogResult dialogResult = saveFileDialog.ShowDialog();
IWorkspaceFactory pWorkspaceFactory = newShapefileWorkspaceFactory();
intindex;
stringfileName;
stringfilePath;
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);
IDatasetpDataset = pFeatureClass as IDataset;
pDataset.Delete();
}
//System.IO.File.Delete(saveFileDialog.FileName);
else
return;
}

}
else
{
fileFullPath = null;
return;
}
然后,要为该SHP建立新的字段:
IFieldspFields = new FieldsClass();
IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;
IFieldpField = new FieldClass();
IFieldEditpFieldEdit = pField as IFieldEdit;

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

IGeometryDef pGeometryDef = new GeometryDef();
IGeometryDefEdit pGeometryDefEdit = pGeometryDef asIGeometryDefEdit;
pGeometryDefEdit.GeometryType_2 =esriGeometryType.esriGeometryPoint;//点、线、面什么的
pGeometryDefEdit.SpatialReference_2 =axMapControl1.SpatialReference;

ISpatialReferenceFactory2 ipSpaRefFa = newSpatialReferenceEnvironmentClass();
IGeographicCoordinateSystem ipGeoCorSys = newGeographicCoordinateSystemClass();

ipGeoCorSys =ipSpaRefFa.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
ISpatialReference ipSpaRef = ipGeoCorSys;
//IControlPrecision2 contrPrecision = ipSpaRef asIControlPrecision2;

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) asIFeatureWorkspace;

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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: