码迷,mamicode.com
首页 > 其他好文 > 详细

shp图层创建

时间:2016-11-28 17:26:32      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:type   tab   对象   point   title   creat   gis   open   map   

爱神之剑 原文 shp图层创建

主要是使用IFieldIFieldEditIFieldsIFieldsEditIGeometryDefIGeometryDefEdit接口。

字段对应表中的一列,一个要素类必须有至少2个字段,而多个字段的集合就构成了字段集。在要素类中,有一个特殊的字段,描述了空间对象,我们称之为几何字段,其中GeometryDef是用来设计几何字段的。这个几何字段定义了要素类的类型,比如说我们要在Catalog创建一个点要素类,那么我们必须指定他的类型为Point,如下图:

 

而上面这6个接口,其实是三类,以Edit结尾的接口是可写的,也就是说对字段,字段集合,以及几何字段的编辑都是通过后者完成的。空间数据的一个重要属性就是参考系,参考系也是在GeometryDef中定义的。

注意 在.NET中,会遇到以“_2”结尾的属性,这些属性是可写的。

//定义一个几何字段,类型为点类型
ISpatialReference pSpatialReference = axMapControl1.ActiveView.FocusMap.SpatialReference;
IGeometryDefEdit pGeoDef = new GeometryDefClass();
IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;
pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
pGeoDefEdit.SpatialReference_2 = pSpatialReference;
//定义一个字段集合对象
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;
pFieldsEdit.AddField(pField);
pFieldEdit.GeometryDef_2 = pGeoDef;
//定义单个的字段,并添加到字段集合中
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "STCD";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldsEdit.AddField(pField);
//定义单个的字段,并添加到字段集合中
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "SLM10";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldsEdit.AddField(pField);
//定义单个的字段,并添加到字段集合中
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "SLM20";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldsEdit.AddField(pField);
//定义单个的字段,并添加到字段集合中
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "SLM40";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldsEdit.AddField(pField);
IWorkspaceFactory pFtWsFct = new AccessWorkspaceFactory();
IFeatureWorkspace pWs = pFtWsFct.OpenFromFile(@"E:\arcgis\Engine\s.mdb"0) as IFeatureWorkspace; 
IFeatureClass pFtClass = pWs.CreateFeatureClass("Test", pFields, nullnull, esriFeatureType.esriFTSimple, "SHAPE"null)
// 结果如下:IField,IFieldEdit,IFields,IFieldsEdit,IGeometryDef,IGeometryDefEdit接口
 
// 如何改变字段的别名4.8
public void ChangeFieldAliasName(ITable pTable, string pOriFieldName, string pDesFieldName)
{
IClassSchemaEdit pClassSchemaEdit = (IClassSchemaEdit)pTable;
//给对象加上锁
ISchemaLock pSchemaLock = (ISchemaLock)pTable;
pSchemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
if (pTable.FindField(pOriFieldName) != -1)
{
pClassSchemaEdit.AlterFieldAliasName(pOriFieldName, pDesFieldName);
pSchemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
}
else
{
return;
}
}

 

shp图层创建

标签:type   tab   对象   point   title   creat   gis   open   map   

原文地址:http://www.cnblogs.com/arxive/p/6110413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!