skyline开发:TE中的矢量图层结构

在系统的开发过程,有时会去操作矢量图层中的对象,比如查询图层中的一个对象进行定位、图层中的对象高亮显示等等,这时就需要对图层进行遍历操作,清楚矢量图层在TE开发中的结构。
注意:TE中加载的矢量数据有一个限制,矢量图层中的对象,只有在TE中显示出来,才能搜索的到,所以这会经常导致,TE获得的图层个数,比直接查看源数据中的数据量少。
在开发中,可以使用IProjectTree的GetLayer方法来获取图层,返回的接口为IFeatureLayer,这个就是矢量图层的对象接口,可以获得图层的一些常用属性,比如DataSourceInfo,GeometryType等,对应右键在TE图层属性的信息。
skyline开发:TE中的矢量图层结构_第1张图片
IFeatureLayer的属性中FeatureGroups,是图层中包含的特征集,FeatureGroups的数量是不确定的,比如有一个线的集合,就只有一个,要是再有注记图层,就有两个了,要是不同几何类型的,可能有更多的,所以,在开发中,得确定好。
FeatureGroups的下一个级别为FeatureGroup,这个可通过两种方式得到,比如已知图层的集合类型,直接FeatureGroups.Point/Polyline/Polygon可以获取集合图层,FeatureGroups.Annotation可以直接获得注记图层,另一种方式是通过索引,在js中写法为FeatureGroups(0),C#中的写法为FeatureGroups[0],这个需要确定好图层顺序。

FeatureGroup中可以设置对应一些图层样式属性,使用GetCurrentFeatures就可以获得当前TE中所加载的特征对象,返回的结果为IFeatures,就是上边说的注意的情况,不是图层的源数据中的所有对象。
IFeatures是一个特征对象集合,可以获取所有对象的个数,通过在js中写法为IFeatures(0),C#中的写法为IFeatures[0],获取其中的单个对象IFeature。
IFeature就是单个的特征对象,至此,已经获取到图层中的特征对象了,特征对象中有属性信息FeatureAttributes,包含着当前对象的属性信息,属性信息就是在TE中可以显示属性时查询出来的,根据不同数据各不相同。
在这里插入图片描述
IFeatureAttributes中的GetFeatureAttribute,可根据属性中的表格列名,获取当前对象的此列中的数据。

skyline开发:TE中的矢量图层结构_第2张图片

你可能感兴趣的:(gis)