ArcGIS Engine管理图层附件

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

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



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

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

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

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

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

IAttachmentDataArray:附件数据集合。

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

IAttachmentInfoArray:附件基本信息集合。

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



下面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 = newList<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 = newMemoryBlobStreamClass();

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);

文章来源:http://blog.csdn.net/sydbc/article/details/17202309

0 个评论

要回复文章请先登录注册