Engine基础开发教程【精选】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pCursor = IFeatureClass.Update()
使用IFeatureClass 的Update 方法会返回一个更新型游标,它用于更新或者删除一条记录。

pCursor= IFeatureClass.Search()
使用IFeatureClass 的Sarch 方法对表进行查询后,可以得到一个查询型Cursor 对象,它指向一个或多个Row 对象。

以我们这章的内容主要使用查询游标。

FeatureCursor 是Cursor 的一个子类,指向一个或多个要素,它实现了IFeatureCursor 接口,ArcGIS Engine 开发所对矢量图层实现查询功能都是实行IFeatureCursor 。

5.4QueryFilter 对象与SpatialFilter 对象
在关系型数据库中,查询条件是通过SQL 语句的Where 子语句来完成的。

在ArcGIS
Engine 中不能直接使用SQL 语句,但ArcGIS Engine 提供了QueryFilter 和SpatialFilter 两个过滤器对象来配合完成查询条件的设置,从而查询到想要的数据。

QueryFilter 过滤器主要用于对属性数据查询条件的设置,它主要实现IQueryFilter 接口从而实现属性查询功能。

CODE:
IQueryFilter pQueryFilter = new QueryFilterClass();
//设置过滤器对象的属性
pQueryFilter.WhereClause = "人口> 10000000";
SpatialFilter 过滤器主要用于空间范围查询条件的设置,它主要实现ISpatialFilter(继承 IQueryFilter 接口)接口从而实现空间查询功能。

CODE:
ISpatialFilter pSpatialFilter = new SpatialFilterClass();
//设置空间过滤器的范围(多边形)pSpatialFilter.Geometry = pGeometry;
//设置空间过滤器空间关系类型
pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;空间过滤器空间关系类型主要有以下几种类型如表一所示:
表1
空间过滤器空间关系类型
描述(A 是待查询图形,B 是过滤条
件图形)
2 3 20
esriSpatialRelUndefined
未定义
esriSpatialRelIntersects
A 与
B 图形相交
esriSpatialRelEnvelopeIntersects A 的Envelope 和B 的Envelope 相交esriSpatialRelIndexIntersects A 与B 索引相交esriSpatialRelTouches A与B 边界相接esriSpatialRelOverlaps
A 与
B 相叠加
esriSpatialRelCrosses
A 与
B 相交(两条线相交于一点,一条线和一个面相交)esriSpatialRelWithin A 在B 内esriSpatialRelContains A 包含B
esriSpatialRelRelation
A 与
B 空间关联
5.5SelectionSet 要素选择集对象
熟悉ArcGIS Desktop 使用的开发者一定会知道当在ArcMap 中显示查询结果的时,所有的符号查询调教的要素都以蓝色高亮的形式显示在地图控件上,蓝色高亮显示表示高亮选中,这些高亮显示选中的要素对应一个要素选择集对象中。

通过IFeatureSelection 的SelectionSet 属性可以获取选择集,FeatureLayer 对象实现了IFeatureSelection 接口。

实现代码如下:
IFeatureLayer pFeatureLayer =this .axMapControl1.get_Layer(0)as IFeatureLayer ;
//QI 至IFeatureSelection
IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection ;
//创建过滤器
IQueryFilter pQueryFilter =new QueryFilterClass ();
//设置过滤器对象的查询条件
pQueryFilter.WhereClause ="人口> 10000000";//选择要素
pFeatureSelection.SelectFeatures(pQueryFilter,esriSelectionResultEnum .esriSelec tionResultNew,false );//获取选择集对象
ISelectionSet pSelectinSet=pFeatureSelection.SelectionSet;
//设置选择集的符号
pFeatureSelection.SelectionSymbol = pSymbol;
5.6属性查询实例
2 3 20
5.6.1程序实现目标:
查询人口大于5000000的城市,并把查询结果创建为一个新的图层,如图1-3所示:
在全受到生活部 一人员的组 搞好生活部这一年创新意识的部委成员。

生活部选拔优秀的成员,组本工作的开展 学生活,在生活,安全,卫生等诸学学习不适应,寝室的清洁卫生做不好欺骗迷惑等等,基于此,在新生入校报名作门举办专门针对大一新生的综合知识讲座。

在适大一新生尽快溶入到大学生活之中。

生活部要继续作之间的关系广泛收集同学们对学校饮食,安全方面的相如个别食堂就餐难问题,基于此我们决定开展“自觉回收餐率,同时积极于食堂方面沟通,提高其工作效率,从而解决这一 和寝室长,将其发展为生活部在各个班级的重要“基层组织”,并定时开展寝室的全方位检查。

争取形成传统。

从整体提高我院学生寝室室之中找到家的感觉。

针对社会上专对学生的不法活动十分突出的问题,积极关注与我校学生有关的安全方面的信息,协助学校相关部门做好安全通出现,及时将信息上报学校相关部门和老师,并及时传达给我院学生,做到有学生的安全,保持我院一直以来的优良形象。

(2)配合学院和学生会兄 作为生活部在学生会工作的又一个重点工作,我部还要发扬上届生活部的生会的大局出发,结合生活部的特点和优势,积极协作其他兄弟部门的工作。

部所负责的安全和后勤方面。

总之,希望经过我们一年的努力能够在学生会内生活部”的工作理念。

(本版块的具体活动内容主要依据学院和兄弟部(3)创新方面 生活部作为一个幕后部门,一直以来都是默默在背务。

在联合兄弟部门举办各类活动的时候的时候也大多是在不为同学受着生活部无微不至的服务的时候,却不一定能想到做这些工作划联合部分兄弟部门开展一些由生活部主办的活动,在丰富个很好宣传和推广。

寝室作为同学们生活居住的重了做好我院学生寝室的卫生工作,搞好寝室安全教育个良好的学习生活工作环境,促进全院学生的全计划举办“政管寝室风采大赛”。

生活合兄弟院校的相关部门以及我院的相关部,与同学的日常生活密切相关。

使同弟院系交流与和作,加强同兄弟本年度内生活部工作的大致展实施还需要学院相关活部取得巨大发展的学院取得巨大发体育部全体20x x 年各班
代码片段如下:
CODE:
private void button1_Click(object sender, EventArgs e)
{
IFeatureLayer pFeatureLayer = this.axMapControl1.get_Layer(0) as IFeatureLayer; //QI 到FeatureSelection
IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;
//创建过滤器
IQueryFilter pQueryFilter = new QueryFilterClass();
//设置过滤器对象的查询条件
pQueryFilter.WhereClause = "人口> 5000000";//根据查询条件选择要素
pFeatureSelection.SelectFeatures(pQueryFilter,
esriSelectionResultEnum.esriSelectionResultNew, false);
//QI 到ISelectionSet
ISelectionSet pSelectionSet = pFeatureSelection.SelectionSet;
同要继续在全心全意受到生活部的细心 一人员的组织和选 搞好生活部这一年之中的创新意识的部委成员。

基于这生活部选拔优秀的成员,组成一只本工作的开展 每年学生活,在生活,安全,卫生等诸多方面学学习不适应,寝室的清洁卫生做不好,对学欺骗迷惑等等,基于此,在新生入校报名作好接待门举办专门针对大一新生的综合知识讲座。

在适当时间大一新生尽快溶入到大学生活之中。

生活部要继续作好学生之间的关系广泛收集同学们对学校饮食,安全方面的相关意见如个别食堂就餐难问题,基于此我们决定开展“自觉回收餐具”活率,同时积极于食堂方面沟通,提高其工作效率,从而解决这一问题。

和寝室长,将其发展为生活部在各个班级的重要“基层组织”,并组织各班定时开展寝室的全方位检查。

争取形成传统。

从整体提高我院学生寝室的水平室之中找到家的感觉。

针对社会上专对学生的不法活动十分突出的问题,,积极关注与我校学生有关的安全方面的信息,协助学校相关部门做好安全通出现,及时将信息上报学校相关部门和老师,并及时传达给我院学生,做到有学生的安全,保持我院一直以来的优良形象。

(2)配合学院和学生会兄 作为生活部在学生会工作的又一个重点工作,我部还要发扬上届生活部的生会的大局出发,结合生活部的特点和优势,积极协作其他兄弟部门的工作。

部所负责的安全和后勤方面。

总之,希望经过我们一年的努力能够在学生会内生活部”的工作理念。

(本版块的具体活动内容主要依据学院和兄弟部(3)创新方面 生活部作为一个幕后部门,一直以来都是默默在背务。

在联合兄弟部门举办各类活动的时候的时候也大多是在不为同学受着生活部无微不至的服务的时候,却不一定能想到做这些工作划联合部分兄弟部门开展一些由生活部主办的活动,在丰富个很好宣传和推广。

寝室作为同学们生活居住的重了做好我院学生寝室的卫生工作,搞好寝室安全教育个良好的学习生活工作环境,促进全院学生的全计划举办“政管寝室风采大赛”。

生活合兄弟院校的相关部门以及我院的相关部,与同学的日常生活密切相关。

使同弟院系交流与和作,加强同兄弟本年度内生活部工作的大致展实施还需要学院相关活部取得巨大发展的学院取得巨大发体育部全体20x x 年各班
///<summary>///
在程序运行时的内存中创建矢量要素层,并加到地图控件最顶端///</summary> ///
<param name="pMapCtrl">地图控件</param>///<returns>IFeatureLayer 新加的要素层</returns>
private IFeatureLayer AddFeatureLayerByMemoryWS(AxMapControl pMapCtrl,ISpatialReference pSReference){ try {
if (pMapCtrl == null) return null;#region
创建新的内存工作空间
IWorkspaceFactory pWSF = new InMemoryWorkspaceFactoryClass();IWorkspaceName pWSName = pWSF.Create("", "Temp", null, 0);
IName pName = (IName)pWSName;
IWorkspace pMemoryWS = (IWorkspace)pName.Open();#endregion
IField Field = new FieldClass();IFields Fields = new FieldsClass();IFieldsEdit FieldsEdit = null;IFieldEdit FieldEdit = null;
IFeatureClass FeatureClass = null;IFeatureLayer FeatureLayer = null;try {
FieldsEdit = oFields as IFieldsEdit;oFieldEdit = oField as IFieldEdit;_2 = "OBJECTID";
oFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;oFieldEdit.IsNullable_2 = false;oFieldEdit.Required_2 = false;oFieldsEdit.AddField(oField);
oField = new FieldClass();
oFieldEdit = oField as IFieldEdit;
IGeometryDef pGeoDef = new GeometryDefClass();
IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef;pGeoDefEdit.AvgNumPoints_2 = 5;
pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;pGeoDefEdit.GridCount_2 = 1;pGeoDefEdit.HasM_2 = false;
2 3 20
pGeoDefEdit.HasZ_2 = false;
pGeoDefEdit.SpatialReference_2 = pSReference;_2 = "SHAPE";
oFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;oFieldEdit.GeometryDef_2 = pGeoDef;oFieldEdit.IsNullable_2 = true;oFieldEdit.Required_2 = true;oFieldsEdit.AddField(oField);
oField = new FieldClass();
oFieldEdit = oField as IFieldEdit;_2 = "Code";
oFieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger;oFieldEdit.IsNullable_2 = true;oFieldsEdit.AddField(oField);
//创建要素类
oFeatureClass = (pMemoryWS as IFeatureWorkspace).CreateFeatureClass("Temp", oFields, null, null, esriFeatureType.esriFTSimple, "SHAPE", "");oFeatureLayer = new FeatureLayerClass(); = "TransTemp";
oFeatureLayer.FeatureClass = oFeatureClass;//创建唯一值符号化对象
IUniqueValueRenderer pURender = new UniqueValueRendererClass();pURender.FieldCount = 1;
pURender.set_Field(0, "Code");
eDefaultSymbol = false;
ISimpleFillSymbol pFillSym = new SimpleFillSymbolClass();pFillSym.Style. = esriSimpleFillStyle.esriSFSSolid;//半透明颜色
IRgbColor pColor = new RgbColorClass();pColor.Red = 255;pColor.Green = 255;pFillSym.Color = pColor;
pURender.AddValue("1", "", pFillSym as ISymbol);pFillSym = new SimpleFillSymbolClass();
pFillSym.Style. = esriSimpleFillStyle.esriSFSSolid;//唯一值符号化内存图层
(oFeatureLayer as IGeoFeatureLayer).Renderer = pURender as IFeatureRenderer;ILayerEffects pLyrEffect = oFeatureLayer as ILayerEffects;//透明度
pLyrEffect.Transparency = 80;}
catch(Exception Err)
2 3 20
{
MessageBox.Show(Err.Message);
}
finally
{
try{
ystem.Runtime.InteropServices.Marshal.ReleaseComObject(oField); System.Runtime.InteropServices.Marshal.ReleaseComObject(oFields); System.Runtime.InteropServices.Marshal.ReleaseComObject(oFieldsEdit); System.Runtime.InteropServices.Marshal.ReleaseComObject(oFieldEdit); System.Runtime.InteropServices.Marshal.ReleaseComObject(pName); System.Runtime.InteropServices.Marshal.ReleaseComObject(pWSF); System.Runtime.InteropServices.Marshal.ReleaseComObject(pWSName); System.Runtime.InteropServices.Marshal.ReleaseComObject(pMemoryWS); System.Runtime.InteropServices.Marshal.ReleaseComObject(oFeatureClass);
}
catch
{
}
GC.Collect();
}
return oFeatureLayer;
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, rmation);
return null;}
}
CODE:
/// <summary> 在地图控件上添加透明临时图元/// </summary>
/// <param name="pMapCtrl">地图控件</param>2
3
2
/// <param name="pGeo">Envelope 或Polygon 几何实体</param>
/// <param name="bAutoClear">是否清除原有内容</param>
public void AddTransTempEle(AxMapControl pMapCtrl, IGeometry pGeo, bool bAutoClear) { try {
if (pMapCtrl == null) return; if (pGeo == null) return; if (pGeo.IsEmpty) return; IGeometry pPolygon = null; if (pGeo is IEnvelope) {
object Miss = Type.Missing;
pPolygon = new PolygonClass();
IGeometryCollection pGeoColl = pPolygon as IGeometryCollection; pGeoColl.AddGeometry(pGeo, ref Miss, ref Miss); }
else if (pGeo is IPolygon) {
(pGeo as ITopologicalOperator).Simplify(); pPolygon = pGeo; } else {
MessageBox.Show( "几何实体类型不匹配","提示" ,MessageBoxButtons.OK, rmation); return; }
//获取透明要素层
IFeatureLayer pFlyr = null;
for (int i = 0; i < yerCount; i++) {
if (pMapCtrl.get_Layer(i).Name == "TransTemp") {
pFlyr = pMapCtrl.get_Layer(i) as IFeatureLayer; break; } }
//透明临时层不存在需要创建 if (pFlyr == null) {
pFlyr = AddFeatureLayerByMemoryWS(pMapCtrl,pMapCtrl.SpatialReference); if (pFlyr == null)
2 3 20
{
MessageBox.Show("创建透明临时图层发生异常", "提示", MessageBoxButtons.OK, rmation); return; } }
IFeatureClass pFC = pFlyr.FeatureClass; if (bAutoClear) {
if (pFC.FeatureCount(null) > 0) {
IFeatureCursor pFCursor = pFC.Search(null, false); if (pFCursor != null) {
IFeature pFeature = pFCursor.NextFeature(); if (pFeature != null) {
while (pFeature != null) {
pFeature.Delete();
pFeature = pFCursor.NextFeature(); } }
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFCursor); } } }
//创建要素
IFeature pNFeature = pFC.CreateFeature(); pNFeature.Shape = pPolygon;
pNFeature.set_Value(pFC.FindField("Code"),"1"); pNFeature.Store();
pMapCtrl.Refresh(esriViewDrawPhase.esriViewGeography, pFlyr, pFlyr.AreaOfInterest); }
catch (Exception Err) {
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, rmation); } }
CODE:
2 3 20
/// <summary> /// 获取查询要素 /// </summary>
/// <param name="pFeatureLayer">要素图层</param> /// <param name="pGeometry">图形范围参数</param> /// <returns>符号条件要素集合</returns>
private List<IFeature> GetSeartchFeatures( IFeatureLayer pFeatureLayer,IGeometry pGeometry) { try {
List<IFeature> pList = new List<IFeature>(); //创建SpatialFilter 空间过滤器对象
ISpatialFilter pSpatialFilter = new SpatialFilterClass(); IQueryFilter pQueryFilter = pSpatialFilter as ISpatialFilter; //设置过滤器的Geometry
pSpatialFilter.Geometry = pGeometry; //设置空间关系类型
pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains; //获取FeatureCursor 游标
IFeatureCursor pFeatureCursor = pFeatureLayer.Search(pQueryFilter, false); //遍历FeatureCursor
IFeature pFeature = pFeatureCursor.NextFeature(); while (pFeature != null) {
//获取要素对象
pList.Add(pFeature);
pFeature = pFeatureCursor.NextFeature(); }
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor); return pList; }
catch (Exception Err) {
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, rmation); return null; } }
CODE:
bool bSearch = false; //定义bool 变量用于启动多边形查询功能
private void button1_Click(object sender, EventArgs e)
2 3 20
{
try {
//向地图控件添加内存图层 IFeatureLayer pFeatureLayer =
this.AddFeatureLayerByMemoryWS(this.axMapControl1,this.axMapControl1.SpatialRefe rence);
this.axMapControl1.AddLayer(pFeatureLayer); //设置鼠标样式为十字丝
this.axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair; //启动范围查询功能 bSearch = true;
}添加一个新的Form 在Form 上添加一个DataGridView 控件用于显示查询结果信息。

如图4所示:
CODE:
private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) {
if (bSearch) {
//设置鼠标样式为十字丝
this.axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair; //获取画定范围的Geometry
学生活学学习不适欺骗迷惑等等,门举办专门针对大一大一新生尽快溶入到大学 之间的关系广泛收集同学们如个别食堂就餐难问题,基于此率,同时积极于食堂方面沟通,提高 和寝室长,将其发展为生活部在各个班定时开展寝室的全方位检查。

争取形成传统室之中找到家的感觉。

针对社会上专对学生,积极关注与我校学生有关的安全方面的信息,协助出现,及时将信息上报学校相关部门和老师,并及时传达学生的安全,保持我院一直以来的优良形象。

(2)配合 作为生活部在学生会工作的又一个重点工作,我部还要发扬生会的大局出发,结合生活部的特点和优势,积极协作其他兄弟部门部所负责的安全和后勤方面。

总之,希望经过我们一年的努力能够在学生生活部”的工作理念。

(本版块的具体活动内容主要依据学院和兄弟部(3)创新方面 生活部作为一个幕后部门,一直以来都是默默在背务。

在联合兄弟部门举办各类活动的时候的时候也大多是在不为同学受着生活部无微不至的服务的时候,却不一定能想到做这些工作划联合部分兄弟部门开展一些由生活部主办的活动,在丰富个很好宣传和推广。

寝室作为同学们生活居住的重了做好我院学生寝室的卫生工作,搞好寝室安全教育个良好的学习生活工作环境,促进全院学生的全计划举办“政管寝室风采大赛”。

生活合兄弟院校的相关部门以及我院的相关部,与同学的日常生活密切相关。

使同弟院系交流与和作,加强同兄弟本年度内生活部工作的大致展实施还需要学院相关活部取得巨大发展的学院取得巨大发体育部全体20x x 年各班
IGeometry pGeometry = this.axMapControl1.TrackPolygon();
//添加半透名临时图形
this.AddTransTempEle(this.axMapControl1, pGeometry, false);
IFeatureLayer pFeatureLayer=this.axMapControl1.get_Layer(1) as IFeatureLayer;
//执行查询获取符号条件的要素
List<IFeature> pFList = this.GetSeartchFeatures(pFeatureLayer, pGeometry);
attribute pAttribute = new attribute();
//设置信息显示窗体中DataGridView的属性
//设置行数pFList.Count+1包括字段名哪一行即表头
pAttribute.dataGridView1.RowCount = pFList.Count+1;
//设置边界风格
pAttribute.dataGridView1.ColumnHeadersBorderStyle. =
DataGridViewHeaderBorderStyle.Sunken;
//设置列数
pAttribute.dataGridView1.ColumnCount = pFList[0].Fields.FieldCount;
//遍历第一个要素的字段用于给列头赋值(字段的名称)
for(int m=0;m<pFList[0].Fields.FieldCount;m++)
2
{
pAttribute.dataGridView1.Columns[m].HeaderText =
pFList[0].Fields.get_Field(m).AliasName;
}
//遍历要素
for (int i = 0; i < pFList.Count; i++)
{
IFeature pFeature=pFList;
for(int j=0;j<pFeature.Fields.FieldCount;j++)
{
//填充字段值
pAttribute.dataGridView1[j, i].Value = pFeature.get_Value(j).ToString();
}
}
pAttribute.Show();
}
}
5.7.3功能演示
1.单击按钮向地图控件上添加一内存图层,并启动多边形查询功能如图5示:
3
2
2.点击鼠标左键在地图上画以多边形范围,双击结束,将看到在所画的范围以半透明的形
式添加在地图之上,并显示出查询结果的属性信息如图所示:
5.7.4 Demo 总结:
1.使用IWorkspaceFactory,IWorkspaceName,IName,IWorkspace 等接口以及InMemoryWorkspaceFactoryClass 对象创建在程序运行时的内存中的矢量要素层
同要继续在全心全意受到生活部的细心 一人员的组织和选 搞好生活部这一年之中的活创新意识的部委成员。

基于这生活部选拔优秀的成员,组成一只本工作的开展 每年开学生活,在生活,安全,卫生等诸多方面都学学习不适应,寝室的清洁卫生做不好,对学校欺骗迷惑等等,基于此,在新生入校报名作好接待门举办专门针对大一新生的综合知识讲座。

在适当时间大一新生尽快溶入到大学生活之中。

生活部要继续作好学生之间的关系广泛收集同学们对学校饮食,安全方面的相关意见和如个别食堂就餐难问题,基于此我们决定开展“自觉回收餐具”活率,同时积极于食堂方面沟通,提高其工作效率,从而解决这一问题。

和寝室长,将其发展为生活部在各个班级的重要“基层组织”,并组织各班定时开展寝室的全方位检查。

争取形成传统。

从整体提高我院学生寝室的水平室之中找到家的感觉。

针对社会上专对学生的不法活动十分突出的问题,,积极关注与我校学生有关的安全方面的信息,协助学校相关部门做好安全通出现,及时将信息上报学校相关部门和老师,并及时传达给我院学生,做到有学生的安全,保持我院一直以来的优良形象。

(2)配合学院和学生会兄 作为生活部在学生会工作的又一个重点工作,我部还要发扬上届生活部的生会的大局出发,结合生活部的特点和优势,积极协作其他兄弟部门的工作。

部所负责的安全和后勤方面。

总之,希望经过我们一年的努力能够在学生会内生活部”的工作理念。

(本版块的具体活动内容主要依据学院和兄弟部(3)创新方面 生活部作为一个幕后部门,一直以来都是默默在背务。

在联合兄弟部门举办各类活动的时候的时候也大多是在不为同学受着生活部无微不至的服务的时候,却不一定能想到做这些工作划联合部分兄弟部门开展一些由生活部主办的活动,在丰富个很好宣传和推广。

寝室作为同学们生活居住的重了做好我院学生寝室的卫生工作,搞好寝室安全教育个良好的学习生活工作环境,促进全院学生的全计划举办“政管寝室风采大赛”。

生活合兄弟院校的相关部门以及我院的相关部,与同学的日常生活密切相关。

使同弟院系交流与和作,加强同兄弟本年度内生活部工作的大致展实施还需要学院相关活部取得巨大发展的学院取得巨大发体育部全体20x x 年各班
2.复习IUniqueValueRenderer等接口以及UniqueValueRendererClass对象唯一值符号化
要素图层
3.使用ILayerEffects接口创建半透明效果要素图层
4.使用ISpatialFilter,IQueryFilter 等接口以及SpatialFilterClass对象获取符号条件的FeatureCursor,并学会通过遍历整个FeatureCursor中Feature对象,获取符号查询条件
的Feature集合
5.使用IFeatureLayerDefinition根据要素选择集创建新要素图层
5.8附IFeatureClass.Search(IQuery Filter,bool Recycling)参数说明
FeatureClass的Search方法大家经常用到,很多人对Search方法的其中一个参数bool
Recycling不是很理解。

先做以下解释:
1.pFeatureCursor存储的是所有符合条件的Feature对象的引用,
2.Recycling的意思是回收,参数Recycling为True的时当执行这个方法IFeature
pFeature=pFeatureCursor.NextFeature()上一条记录的图形值在内存中所占的地址就会被
2
销毁回收,为False的时候当执行这个方法IFeature
pFeature=pFeatureCursor.NextFeature()上一条记录的图形值依然存在在内存中。

1.参数Recycling设置为True
IFeatureClass pFeatureClass = (this.axMapControl1.get_Layer(0) as
IFeatureLayer).FeatureClass;
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, true);
//IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
List<IFeature> pFeatures = new List<IFeature>();
IFeature pFeature = pFeatureCursor.NextFeature();
while (pFeature != null)
{
pFeatures.Add(pFeature);
pFeature = pFeatureCursor.NextFeature();
}
for (int i = 0; i < pFeatures.Count; i++)
{
MessageBox.Show(((pFeatures.Shape as IPolygon) as IArea).Area.ToString());
}
分析:pFeatures集合存储了指向FeatureClass上所有Feature的引用,但是由于
Recycling参数设置为TRUE也就是说每执行一个NextFeautre方法上一条记录的Feature
值在内存中被回收,所以到最后遍历pFeatures集合的时候所有的IFeature引用指向的
Feature对象都为Null。

所以会引发一下错误(如下图7所示):
3
2
.参数Recycling 设置为False
IFeatureClass pFeatureClass = (this.axMapControl1.get_Layer(0) as IFeatureLayer).FeatureClass;
//IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, true); IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); List<IFeature> pFeatures = new List<IFeature>(); IFeature pFeature = pFeatureCursor.NextFeature(); while (pFeature != null) {
pFeatures.Add(pFeature);
pFeature = pFeatureCursor.NextFeature(); }
for (int i = 0; i < pFeatures.Count; i++) {
MessageBox.Show(((pFeatures.Shape as IPolygon) as IArea).Area.ToString()); }
分析:pFeatures 集合存储了指向FeatureClass 上所有Feature 的引用,但是由于
Recycling 参数设置为False 也就是说每执行一个NextFeautre 方法上一条记录的Feature 值在内存中依然存在,所以到最后遍历pFeatures 集合的时候所有的IFeature 引用指向的Feature 对象都依然存在。

所以会执行的很Happy (如下图8所示):
同要继续在全心全意打受到生活部的细心体 一人员的组织和选拔 搞好生活部这一年之中的活创新意识的部委成员。

基于这一生活部选拔优秀的成员,组成一只优本工作的开展 每年开学生活,在生活,安全,卫生等诸多方面都学学习不适应,寝室的清洁卫生做不好,对学校欺骗迷惑等等,基于此,在新生入校报名作好接待门举办专门针对大一新生的综合知识讲座。

在适当时间大一新生尽快溶入到大学生活之中。

生活部要继续作好学生之间的关系广泛收集同学们对学校饮食,安全方面的相关意见和如个别食堂就餐难问题,基于此我们决定开展“自觉回收餐具”活率,同时积极于食堂方面沟通,提高其工作效率,从而解决这一问题。

和寝室长,将其发展为生活部在各个班级的重要“基层组织”,并组织各班定时开展寝室的全方位检查。

争取形成传统。

从整体提高我院学生寝室的水平室之中找到家的感觉。

针对社会上专对学生的不法活动十分突出的问题,,积极关注与我校学生有关的安全方面的信息,协助学校相关部门做好安全通出现,及时将信息上报学校相关部门和老师,并及时传达给我院学生,做到有学生的安全,保持我院一直以来的优良形象。

(2)配合学院和学生会兄 作为生活部在学生会工作的又一个重点工作,我部还要发扬上届生活部的生会的大局出发,结合生活部的特点和优势,积极协作其他兄弟部门的工作。

部所负责的安全和后勤方面。

总之,希望经过我们一年的努力能够在学生会内生活部”的工作理念。

(本版块的具体活动内容主要依据学院和兄弟部(3)创新方面 生活部作为一个幕后部门,一直以来都是默默在背务。

在联合兄弟部门举办各类活动的时候的时候也大多是在不为同学受着生活部无微不至的服务的时候,却不一定能想到做这些工作划联合部分兄弟部门开展一些由生活部主办的活动,在丰富个很好宣传和推广。

寝室作为同学们生活居住的重了做好我院学生寝室的卫生工作,搞好寝室安全教育个良好的学习生活工作环境,促进全院学生的全计划举办“政管寝室风采大赛”。

生活合兄弟院校的相关部门以及我院的相关部,与同学的日常生活密切相关。

使同弟院系交流与和作,加强同兄弟本年度内生活部工作的大致展实施还需要学院相关活部取得巨大发展的学院取得巨大发体育部全体20x x 年各班
同要继续在全心全意受到生活部的细心 一人员的组织和选 搞好生活部这一年之中的活创新意识的部委成员。

基于这一生活部选拔优秀的成员,组成一只优本工作的开展 每年开学生活,在生活,安全,卫生等诸多方面都学学习不适应,寝室的清洁卫生做不好,对学校欺骗迷惑等等,基于此,在新生入校报名作好接待门举办专门针对大一新生的综合知识讲座。

在适当时间大一新生尽快溶入到大学生活之中。

生活部要继续作好学生之间的关系广泛收集同学们对学校饮食,安全方面的相关意见和如个别食堂就餐难问题,基于此我们决定开展“自觉回收餐具”活率,同时积极于食堂方面沟通,提高其工作效率,从而解决这一问题。

和寝室长,将其发展为生活部在各个班级的重要“基层组织”,并组织各班定时开展寝室的全方位检查。

争取形成传统。

从整体提高我院学生寝室的水平室之中找到家的感觉。

针对社会上专对学生的不法活动十分突出的问题,,积极关注与我校学生有关的安全方面的信息,协助学校相关部门做好安全通出现,及时将信息上报学校相关部门和老师,并及时传达给我院学生,做到有学生的安全,保持我院一直以来的优良形象。

(2)配合学院和学生会兄 作为生活部在学生会工作的又一个重点工作,我部还要发扬上届生活部的生会的大局出发,结合生活部的特点和优势,积极协作其他兄弟部门的工作。

部所负责的安全和后勤方面。

总之,希望经过我们一年的努力能够在学生会内生活部”的工作理念。

(本版块的具体活动内容主要依据学院和兄弟部(3)创新方面 生活部作为一个幕后部门,一直以来都是默默在背务。

在联合兄弟部门举办各类活动的时候的时候也大多是在不为同学受着生活部无微不至的服务的时候,却不一定能想到做这些工作划联合部分兄弟部门开展一些由生活部主办的活动,在丰富个很好宣传和推广。

寝室作为同学们生活居住的重了做好我院学生寝室的卫生工作,搞好寝室安全教育个良好的学习生活工作环境,促进全院学生的全计划举办“政管寝室风采大赛”。

生活合兄弟院校的相关部门以及我院的相关部,与同学的日常生活密切相关。

使同弟院系交流与和作,加强同兄弟本年度内生活部工作的大致展实施还需要学院相关活部取得巨大发展的学院取得巨大发体育部全体20x x 年各班。

相关文档
最新文档