ArcGIS Engine管理图层附件
分享
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
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 个评论
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- gis开发群的管理不讲理,求围观。
- ArcGIS知乎社区改进意见征集
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- arcgis版本兼容性
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- ArcGIS如何求栅格图像的“质心”
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?