zoukankan      html  css  js  c++  java
  • ArcEngine将对象存储到Blob字段中!

    在Geodatabase中有一张Table,希望通过AE开发的方式将信息存储到表的一个Blob字段中。这个该如何实现?

     1  IWorkspaceName pWpsName = null; //当前工作空间名称
    2 pWpsName= GWorkSapce.CreateAccessWorkSpace();
    3 if (pWpsName==null)
    4 {
    5 return;
    6 }
    7 m_WorkspacePath = pWpsName.PathName;
    8 IWorkspaceFactory pWspFactory = pWpsName.WorkspaceFactory;
    9 IWorkspace pWsp = pWspFactory.OpenFromFile(m_WorkspacePath, 0);
    10 IFeatureWorkspace pFeatWsp = pWsp as IFeatureWorkspace;
    11
    12 IFieldInfo m_fieldOID=new OIDField();
    13
    14 IFieldInfo m_field1=new TableField();
    15 m_field1.Name_2="Item";
    16 m_field1.AliasName_2="Item";
    17 m_field1.Type_2=esriFieldType.esriFieldTypeString;
    18 m_field1.Length_2 = 64;
    19
    20 IFieldInfo m_field2 = new TableField();
    21 m_field2.Name_2 = "Value_1";
    22 m_field2.AliasName_2 = "Value_1";
    23 m_field2.Type_2 = esriFieldType.esriFieldTypeBlob;
    24
    25 IList<IFieldInfo> listField = new List<IFieldInfo>();
    26 listField.Add(m_fieldOID);
    27 listField.Add(m_field1);
    28 listField.Add(m_field2);
    29 GFieldsInfo gFieldsInfo=new GFieldsInfo(listField);
    30
    31 IFields m_fields=gFieldsInfo.CreateFieldsForTable();
    32
    33 IObjectClass m_InfoObj=GWorkSapce.CreateObjectClass(pWsp, "Info", m_fields);
    34 IRow row1=((ITable)m_InfoObj).CreateRow();
    35 var Itemindex = m_InfoObj.Fields.FindField("Item");
    36 row1.set_Value(Itemindex, "空间参考");
    37 byte[] byteArray = {1, 2, 3};
    38 MemoryBlobStream blob = new MemoryBlobStream();
    39 ((IMemoryBlobStreamVariant)blob).ImportFromVariant(byteArray as object);//将一个Byte[]对象作为参数传入
    40 var index = m_InfoObj.Fields.FindField("Value_1");
    41 IField field = m_InfoObj.Fields.get_Field(index);
    42 if (field.CheckValue(blob))
    43 {
    44 row1.set_Value(index, blob);
    45 }
    46 row1.Store();
    47 IRow test = ((ITable)m_InfoObj).GetRow(1);
    48 object objtest=test.get_Value(2);
    49 IMemoryBlobStreamVariant pVar = objtest as IMemoryBlobStreamVariant;
    50 object pobj = new object();
    51 pVar.ExportToVariant(out pobj); //转入Object对象
    52 MessageBox.Show(((byte[])pobj)[1].ToString());

    在ArcCatalog中查看:

    参考文献:

    1.http://pastebin.com/fd3EW6uj

    2.http://bbs.esrichina-bj.cn/ESRI/thread-6803-1-1.html

    3.http://bbs.esrichina-bj.cn/ESRI/thread-74169-1-1.html

    文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
  • 相关阅读:
    Android中设置APP应用字体不缩放,文字不随系统字体大小变化
    day02 作业
    day01
    2018.11.2
    2018.11.1
    2018.10.25
    2018.10.24
    2018.10.23
    2018.10.20
    2018.10.19学习总结
  • 原文地址:https://www.cnblogs.com/yhlx125/p/2363237.html
Copyright © 2011-2022 走看看