面朝大海,春暖华开

focus on scientific computue, 3dgis, spatial database
专注于科学计算、GIS空间分析

 

ArcGIS Engine开发-自定义图层类型(转)

Link: http://www.cnblogs.com/watsonyin/archive/2006/09/14/504020.html

 

ArcGIS Engine开发的一个特别就是面向接口编程,每组接口代表了对象在某个方面的特性,表现为一个方法、属性或事件。要定义自己的图层类型,实际上只需要实现ILayer接口就可以了。该接口的主要方法或属生包括:

public 
IEnvelope AreaOfInterest {get;}
public 
void Draw (
    
esriDrawPhase DrawPhase,
    
IDisplay Display,
    
ITrackCancel trackCancel
)
public 
void SpatialReference {set;}
public 
string get_TipText (
    
double x,
    
double y,
    
double
 Tolerance
);
等等,请直接查阅帮助。

但实现了该接口,图层只是能加入以地图中,并显示出来而已。如果你要自定义的图层类型是矢量要素的话,最好直接实现IFeatureLayer。由于IFeatureLayerILayer继承而来,所以也包含了上述方法或属性。同时还可以支持选择,查询等操作了。

实现了IFeatureLayer,还不能支持图层渲染功能。要想支持图层渲染,得实现IGeoFeatureLayer接口,该接口从IFeatureLayer继承而来,所以也包含IFeatureLayer所支持的所有方法属性。

如果要支持属性表功能的话,得实现ITable接口。

如果希望图层信息能保存到MXD文档中,得实现IPersistStream接口。

由此可见,在ArcGIS Engine中,要实现自定义图层类型,并不是一件不可能的事。虽然会比较烦琐,但思路却非常清晰。本人就通过这种思路设计了一种组合图层,可以同时包含点线面多种图形,但在TOCControl中只表现为一个图层。当然,这个工作要简单轻松一些,但还是富有乐趣的~

posted on   风过 无痕  阅读(2435)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2006-02-07 评“windows webcase视频游戏开发”
2006-02-07 windows vista几个概念

导航

统计

向日葵支付宝收钱码
点击右上角即可分享
微信分享提示