ArcGIS Pro SDK (七)编辑 7 操作Blob字段

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 使用属性检查器读取和写入 Blob 字段

QueuedTask.Run(() =>
               {
                   // 将选定要素加载到检查器中
                   var selectedFeatures = MapView.Active.Map.GetSelection();

                   var insp = new Inspector();
                   insp.Load(selectedFeatures.ToDictionary().Keys.First(), selectedFeatures.ToDictionary().Values.First());

                   // 读取 Blob 字段并保存到文件
                   var msw = new MemoryStream();
                   msw = insp["Blobfield"] as MemoryStream;
                   using (FileStream file = new FileStream(@"d:\temp\blob.jpg", FileMode.Create, FileAccess.Write))
                   {
                       msw.WriteTo(file);
                   }

                   // 将文件读取到内存流中
                   var msr = new MemoryStream();
                   using (FileStream file = new FileStream(@"d:\images\Hydrant.jpg", FileMode.Open, FileAccess.Read))
                   {
                       file.CopyTo(msr);
                   }

                   // 将内存流中的数据放入 Blob 字段并保存到要素
                   var op = new EditOperation();
                   op.Name = "Blob Inspector";
                   insp["Blobfield"] = msr;
                   op.Modify(insp);
                   op.Execute();
               });

2 在回调中使用行游标读取和写入 Blob 字段

QueuedTask.Run(() =>
               {
                   var editOp = new EditOperation();
                   editOp.Name = "Blob Cursor";
                   var featLayer = MapView.Active.Map.FindLayers("Hydrant").First() as FeatureLayer;

                   editOp.Callback((context) =>
                                   {
                                       using (var rc = featLayer.GetTable().Search(null, false))
                                       {
                                           while (rc.MoveNext())
                                           {
                                               using (var record = rc.Current)
                                               {
                                                   // 读取 Blob 字段并保存到文件
                                                   var msw = new MemoryStream();
                                                   msw = record["BlobField"] as MemoryStream;
                                                   using (FileStream file = new FileStream(@"d:\temp\blob.jpg", FileMode.Create, FileAccess.Write))
                                                   {
                                                       msw.WriteTo(file);
                                                   }

                                                   // 将文件读取到内存流中
                                                   var msr = new MemoryStream();
                                                   using (FileStream file = new FileStream(@"d:\images\Hydrant.jpg", FileMode.Open, FileAccess.Read))
                                                   {
                                                       file.CopyTo(msr);
                                                   }

                                                   // 将内存流中的数据放入 Blob 字段并保存到要素
                                                   record["BlobField"] = msr;
                                                   record.Store();
                                               }
                                           }
                                       }
                                   }, featLayer.GetTable());
                   editOp.Execute();
               });

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部