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

news/2024/7/7 19:31:56 标签: arcgis, c#, arcgis pro sdk, gis

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

目录

  • ArcGIS Pro SDK (七)编辑 7 操作Blob字段
    • 1 使用属性检查器读取和写入 Blob 字段
    • 2 在回调中使用行游标读取和写入 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();
               });

http://www.niftyadmin.cn/n/5535135.html

相关文章

探索金融数据API:现代投资的关键工具

在当今快节奏的金融市场中,实时准确的数据对于投资者而言至关重要。金融数据API(Application Programming Interface)成为了投资者获取和管理数据的核心工具。本文将探讨金融数据API的基本概念、用途及其对投资策略的影响。 什么是金融数据A…

【C++设计模式】(一)面向对象编程的八大原则

文章目录 面向对象编程的八大原则1 单一职责原则2 开放-关闭原则3 里氏替换原则4 接口隔离原则5 依赖倒置原则6 迪米特法则/ 最少知识原则7 合成复用原则8 针对接口编程而不是针对实现编程 面向对象编程的八大原则 面向对象编程有一系列的设计准则来保证软件的质量&#xff0c…

ASPICE培训:推动汽车行业软件质量的新高度

在当今日新月异的汽车行业中,软件技术已经成为推动行业发展的核心动力。随着智能化、网联化、电动化等趋势的加速,汽车软件的质量和性能要求也越来越高。为了满足这一需求,ASPICE(Automotive SPICE)标准应运而生&#…

.Net C#执行JavaScript脚本

文章目录 前言一、安装二、执行 JavaScript 脚本三、与脚本交互四、JS 调用 C# 方法五、多线程使用总结 前言 ClearScript 是一个 .NET 平台下的开源库,用于在 C# 和其他 .NET 语言中执行脚本代码。它提供了一种方便和安全的方法来将脚本与应用程序集成,…

算法刷题笔记 双链表(C++实现)

文章目录 题目描述基本思路实现代码 题目描述 实现一个双链表,双链表初始为空,支持5种操作: 在最左侧插入一个数;在最右侧插入一个数;将第k个插入的数删除;在第k个插入的数左侧插入一个数;在第k…

嵌入式软件stm32面试

一、STM32的内核型号有哪些? STM32系列是STMicroelectronics(意法半导体)生产的基于ARM Cortex-M内核的微控制器产品线。这些产品按照不同的内核架构和性能特点分为了主流产品、超低功耗产品和高性能产品。 1.1 主流产品 STM32F0 系列:搭载 ARM Cortex-M0 内核。STM32F1 …

Java实现单点登录(SSO)详解:从理论到实践

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

leetcode216.组合总和III、40.组合总和II、39.组合总和

216.组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出…