ArcGIS Pro SDK (七)编辑 8 操作栅格字段

ArcGIS Pro SDK (七)编辑 8 操作栅格字段

目录

  • [ArcGIS Pro SDK (七)编辑 8 操作栅格字段](#ArcGIS Pro SDK (七)编辑 8 操作栅格字段)
    • [1 从栅格字段读取](#1 从栅格字段读取)
    • [2 将图像写入栅格字段](#2 将图像写入栅格字段)
    • [3 将压缩图像写入栅格字段](#3 将压缩图像写入栅格字段)

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

1 从栅格字段读取

csharp 复制代码
QueuedTask.Run(() =>
               {
                   var sel = MapView.Active.Map.GetSelection();

                   // 从栅格字段读取栅格作为 InteropBitmap
                   // 该位图可以用作图像源或写入磁盘
                   var insp = new ArcGIS.Desktop.Editing.Attributes.Inspector();
                   insp.Load(sel.ToDictionary().Keys.First(), sel.ToDictionary().Values.First());
                   var ibmp = insp["Photo"] as System.Windows.Interop.InteropBitmap;
               });

2 将图像写入栅格字段

csharp 复制代码
QueuedTask.Run(() =>
               {
                   var sel = MapView.Active.Map.GetSelection();

                   // 将图像插入栅格字段
                   // 图像将以无压缩方式写入
                   var insp = new ArcGIS.Desktop.Editing.Attributes.Inspector();
                   insp.Load(sel.ToDictionary().Keys.First(), sel.ToDictionary().Values.First());
                   insp["Photo"] = @"e:\temp\Hydrant.jpg";

                   var op = new EditOperation();
                   op.Name = "Raster Inspector";
                   op.Modify(insp);
                   op.Execute();
               });

3 将压缩图像写入栅格字段

csharp 复制代码
QueuedTask.Run(() =>
               {
                   // 打开磁盘上的栅格数据集并创建压缩栅格值数据集对象
                   var dataStore = new ArcGIS.Core.Data.FileSystemDatastore(new ArcGIS.Core.Data.FileSystemConnectionPath(new System.Uri(@"e:\temp"), ArcGIS.Core.Data.FileSystemDatastoreType.Raster));
                   using (var fileRasterDataset = dataStore.OpenDataset<ArcGIS.Core.Data.Raster.RasterDataset>("Hydrant.jpg"))
                   {
                       var storageDef = new ArcGIS.Core.Data.Raster.RasterStorageDef();
                       storageDef.SetCompressionType(ArcGIS.Core.Data.Raster.RasterCompressionType.JPEG);
                       storageDef.SetCompressionQuality(90);

                       var rv = new ArcGIS.Core.Data.Raster.RasterValue();
                       rv.SetRasterDataset(fileRasterDataset);
                       rv.SetRasterStorageDef(storageDef);

                       var sel = MapView.Active.Map.GetSelection();

                       // 将栅格值对象插入栅格字段
                       var insp = new ArcGIS.Desktop.Editing.Attributes.Inspector();
                       insp.Load(sel.ToDictionary().Keys.First(), sel.ToDictionary().Values.First());
                       insp["Photo"] = rv;

                       var op = new EditOperation();
                       op.Name = "Raster Inspector";
                       op.Modify(insp);
                       op.Execute();
                   }
               });
相关推荐
码农君莫笑2 分钟前
Blazor项目中使用EF读写 SQLite 数据库
linux·数据库·sqlite·c#·.netcore·人机交互·visual studio
呆呆小雅1 小时前
C#关键字volatile
java·redis·c#
boligongzhu1 小时前
DALSA工业相机SDK二次开发(图像采集及保存)C#版
开发语言·c#·dalsa
web147862107231 小时前
C# .Net Web 路由相关配置
前端·c#·.net
Jasmine_llq2 小时前
《 火星人 》
算法·青少年编程·c#
军训猫猫头4 小时前
20.抽卡只有金,带保底(WPF) C#
ui·c#·wpf
wuningw5 小时前
ant-design-ui的Select选择器多选时同时获取label与vaule值
ui·arcgis
向宇it14 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
向宇it16 小时前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
坐井观老天20 小时前
在C#中使用资源保存图像和文本和其他数据并在运行时加载
开发语言·c#