注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

快乐小屋

 
 
 

日志

 
 

ArcEngine管理图层附件  

2013-04-28 10:56:39|  分类: ArcGIS Engine开 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ArcGIS10新增加了对文件、档案、图片、视频等附件信息的管理,附件信息是直接与几何实体相关联,通过AO接口可以很轻松的完成对附件的管理,如:浏览、添加、删除、下载等操作。

ArcGIS10对附件管理的功能为GISMIS更紧密的合作、结合提供了一条更为行之有效的途径,在MIS系统中更大化的发挥了GIS管理功能。

 

下面介绍AO中与附件管理相关的几个接口:

       ITableAttachments图层附件表管理。为图层创建存储附件的表、删除存储附件的表。

          注:要为图层存储附件,必须先通过ITableAttachments接口创建存储附件的数据表,方可进行上传附件、下载附件、检索附件、删除附件、更新附件等操作。

       IAttachment附件。名称、大小、类型、附件ID、关联的几何实体的OID

     IAttachmentData:附件数据。附件数据(byte,URL

      IAttachmentDataArray:附件数据集合。

      IAttachmentInfo附件基本信息。名称、大小、类型、附件ID、关联的几何实体的OID

     IAttachmentInfoArray附件基本信息集合。

      IAttachmentManager附件管理。添加附件、删除附件、更新附件、根据ID(附件ID、关联FeatureID)返回附件

 

下面C#Engine对图层附件管理的代码例子:

查询指定FeatureID的实体所关联的附件名称

ITableAttachments tableAttachments = (ITableAttachments)featureClass;

IAttachmentManager attachmentManager = ableAttachments.AttachmentManager;

ILongArray parentIdArray = new LongArrayClass();

parentIdArray.Add(1);

parentIdArray.Add(2);

IEnumAttachment enumAttachment =

    attachmentManager.GetAttachmentsByParentIDs(parentIdArray, true);

enumAttachment.Reset();

IAttachment attachment = null;

List<string> AttachName = new List<string>()

while ((attachment = enumAttachment.Next()) != null)

{ AttachName.Add(attachment.Name);}

下载指定文件ID的附件

ILongArray attachmentIdArray = new LongArrayClass();

attachmentIdArray.Add(attachmentID);

IEnumAttachment enumAttachment = attachmentManager.GetAttachmentsByAttachmentIDs

    (attachmentIdArray, false);

enumAttachment.Reset();

IAttachment attachment = enumAttachment.Next();

if (attachment != null)

{

    IMemoryBlobStream memoryBlobStream = attachment.Data;

         memoryBlobStream.SaveToFile(SavePath + @"\" +attachment.Name);

}

添加附件

IMemoryBlobStream memoryBlobStream = new MemoryBlobStreamClass();

memoryBlobStream.LoadFromFile(SelectPath + @"\" +”meeting.png”);

IAttachment attachment = new AttachmentClass

{

    ContentType = "image/png", Data = memoryBlobStream, Name = " meeting.png"

};

attachmentManager.AddAttachment(1, attachment);

删除附件

 

         //删除指定文件ID的附件

attachmentManager. DeleteAttachment(FileID);

    //删除指定FeatureID的所有附件

attachmentManager. DeleteAttachmentsForParent (FeatureID);

更新指定文件ID的附件

 

//获得要更新的附件

ILongArray attachmentIdArray = new LongArrayClass();

attachmentIdArray.Add(attachmentID);

IEnumAttachment enumAttachment = attachmentManager.GetAttachmentsByAttachmentIDs

    (attachmentIdArray, false);

enumAttachment.Reset();

IAttachment attachment = enumAttachment.Next();

         //更新附件

attachment.Name = "LosAngeles.png";

attachmentManager.UpdateAttachment(attachment);

  评论这张
 
阅读(465)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018