创建shp文件
来源:互联网 发布:永恒战士2mac修改 编辑:程序博客网 时间:2024/05/20 08:42
// 创建shp (专三个参数,输出路径,shp文件名称,shp文件类型)
public static void CreateShpFeatureFiles( string shpfolder, string shpname, esriGeometryType pesriGeometryType)
{
IWorkspaceFactory pWorkSpaceFac = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFeatureWorkSpace = pWorkSpaceFac.OpenFromFile(shpfolder, 0) as IFeatureWorkspace;
////如果 shpname已存在,提示是否删除
//IFeatureClass pFCChecker = pFeatureWorkSpace.OpenFeatureClass(shpname);
//if (pFCChecker != null)
//{
// if (MessageBox.Show("此文件已经存在,确认删除?", "此删除不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes)
// {
// IDataset pds = pFCChecker as IDataset;
// pds.Delete();
// }
// else
// {
// return;
// }
//}
//创建字段集2
IFeatureClassDescription fcDescription = new FeatureClassDescriptionClass();
IObjectClassDescription ocDescription = (IObjectClassDescription)fcDescription;//创建必要字段
IFields fields = ocDescription.RequiredFields;
int shapeFieldIndex = fields.FindField(fcDescription.ShapeFieldName);
IField field = fields.get_Field(shapeFieldIndex);
IGeometryDef geometryDef = field.GeometryDef;
IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
//geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
//geometryDefEdit.SpatialReference_2 = spatialReference;
geometryDefEdit.GeometryType_2 = pesriGeometryType;
ISpatialReferenceFactory pSpatialRefFac = new SpatialReferenceEnvironmentClass();
IProjectedCoordinateSystem pcsSys = pSpatialRefFac.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_Zone_39);
//geometryDefEdit.SpatialReference_2 = pcsSys;
IFieldChecker fieldChecker = new FieldCheckerClass();
IEnumFieldError enumFieldError = null;
IFields validatedFields = null; //将传入字段 转成 validatedFields
fieldChecker.ValidateWorkspace = (IWorkspace)pFeatureWorkSpace;
fieldChecker.Validate(fields, out enumFieldError, out validatedFields);
pFeatureWorkSpace.CreateFeatureClass(shpname, validatedFields, ocDescription.InstanceCLSID, ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, fcDescription.ShapeFieldName, "");
}
private void buttonOK_Click(object sender, EventArgs e)
{
//创建一个新的shapfile工作空间
esriGeometryType pesriGeometryType;
switch(comboBoxType.SelectedIndex)
{
case 0:
pesriGeometryType = esriGeometryType.esriGeometryPoint;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 1:
pesriGeometryType = esriGeometryType.esriGeometryPolyline;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 2:
pesriGeometryType = esriGeometryType.esriGeometryPolygon;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 3:
pesriGeometryType = esriGeometryType.esriGeometryMultipoint;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 4:
pesriGeometryType = esriGeometryType.esriGeometryMultiPatch;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
}
}
public static void CreateShpFeatureFiles( string shpfolder, string shpname, esriGeometryType pesriGeometryType)
{
IWorkspaceFactory pWorkSpaceFac = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFeatureWorkSpace = pWorkSpaceFac.OpenFromFile(shpfolder, 0) as IFeatureWorkspace;
////如果 shpname已存在,提示是否删除
//IFeatureClass pFCChecker = pFeatureWorkSpace.OpenFeatureClass(shpname);
//if (pFCChecker != null)
//{
// if (MessageBox.Show("此文件已经存在,确认删除?", "此删除不可恢复", MessageBoxButtons.YesNo) == DialogResult.Yes)
// {
// IDataset pds = pFCChecker as IDataset;
// pds.Delete();
// }
// else
// {
// return;
// }
//}
//创建字段集2
IFeatureClassDescription fcDescription = new FeatureClassDescriptionClass();
IObjectClassDescription ocDescription = (IObjectClassDescription)fcDescription;//创建必要字段
IFields fields = ocDescription.RequiredFields;
int shapeFieldIndex = fields.FindField(fcDescription.ShapeFieldName);
IField field = fields.get_Field(shapeFieldIndex);
IGeometryDef geometryDef = field.GeometryDef;
IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
//geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
//geometryDefEdit.SpatialReference_2 = spatialReference;
geometryDefEdit.GeometryType_2 = pesriGeometryType;
ISpatialReferenceFactory pSpatialRefFac = new SpatialReferenceEnvironmentClass();
IProjectedCoordinateSystem pcsSys = pSpatialRefFac.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Xian1980_3_Degree_GK_Zone_39);
//geometryDefEdit.SpatialReference_2 = pcsSys;
IFieldChecker fieldChecker = new FieldCheckerClass();
IEnumFieldError enumFieldError = null;
IFields validatedFields = null; //将传入字段 转成 validatedFields
fieldChecker.ValidateWorkspace = (IWorkspace)pFeatureWorkSpace;
fieldChecker.Validate(fields, out enumFieldError, out validatedFields);
pFeatureWorkSpace.CreateFeatureClass(shpname, validatedFields, ocDescription.InstanceCLSID, ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, fcDescription.ShapeFieldName, "");
}
private void buttonOK_Click(object sender, EventArgs e)
{
//创建一个新的shapfile工作空间
esriGeometryType pesriGeometryType;
switch(comboBoxType.SelectedIndex)
{
case 0:
pesriGeometryType = esriGeometryType.esriGeometryPoint;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 1:
pesriGeometryType = esriGeometryType.esriGeometryPolyline;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 2:
pesriGeometryType = esriGeometryType.esriGeometryPolygon;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 3:
pesriGeometryType = esriGeometryType.esriGeometryMultipoint;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
case 4:
pesriGeometryType = esriGeometryType.esriGeometryMultiPatch;
CreateShpFeatureFiles(OutShapepath, OutShapeName, pesriGeometryType);
break;
}
}
0 0
- 创建shp文件
- ArcEngine,delphi创建shp文件
- Arcgis engnie 创建SHP文件
- pyshp创建shp点文件
- ArcGISEngine创建和删除Shp文件
- node-gdal实践-创建shp文件
- GDAL矢量(.shp)文件读写与创建
- 在ArcGIS中因字符问题无法创建shp文件
- shp文件结构说明
- shp文件结构说明
- shp文件导入postgis
- GDAL读写shp文件
- shp文件的读取
- AE 打开Shp文件
- shp文件的读取
- shp文件导入postgresql
- postgis导出shp文件
- shp文件及附属
- 杂项: 一点情绪
- SAAS化以及软件抽象化
- 使用DNSCrypt解决Dropbox污染问题
- 逻辑回归(LR)算法java实现<转>
- Mac OS X 10.9.3上安装配置nginx-1.7.2
- 创建shp文件
- hbase基本的表管理和访问
- 数据挖掘--kmeans聚类算法mapreduce实现代码<转>
- Android中FLAG_ACTIVITY_CLEAR_TASK的作用
- 分类算法--贝叶斯分类法(Maprdecue实现)<转>
- 分区索引碎片整理Script
- 分类算法--贝叶斯分类法(Maprdecue实现)代码实现<转>
- UVA 11072 - Points(凸包+点在多边形内判定)
- C++ 给函数传递参数的两种方式