使用C#语言进行Add-in插件开发实现功能为:点击两个按钮分别读取栅格数据并将读取到的这两个栅格数据相减进行栅格计算。
以下是使用C#语言进行Add-in插件开发,实现栅格数据相减的代码示例:
- 首先要添加必要的引用:
using ESRI.ArcGIS.ArcMapUI;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesRaster;
- 然后创建按钮点击事件处理程序:
private void btnSubtract_Click(object sender, EventArgs e)
{
IMxDocument mxDoc = ArcMap.Application.Document as IMxDocument;
IMap map = mxDoc.FocusMap;
ILayer layer1 = map.get_Layer(0); // 获取第一个栅格图层
ILayer layer2 = map.get_Layer(1); // 获取第二个栅格图层
IRasterLayer rasterLayer1 = layer1 as IRasterLayer;
IRasterLayer rasterLayer2 = layer2 as IRasterLayer;
IRaster raster1 = rasterLayer1.Raster; // 获取第一个栅格数据
IRaster raster2 = rasterLayer2.Raster; // 获取第二个栅格数据
IRasterCalculator rasterCalc = new RasterCalculator(); // 创建栅格计算器
rasterCalc.AddRaster(raster1, "in_raster1"); // 添加第一个栅格数据
rasterCalc.AddRaster(raster2, "in_raster2"); // 添加第二个栅格数据
rasterCalc.BindRaster(raster1, "in_raster1"); // 绑定第一个栅格数据
rasterCalc.BindRaster(raster2, "in_raster2"); // 绑定第二个栅格数据
rasterCalc.Expression = "in_raster1 - in_raster2"; // 设置计算表达式
IRasterDataset result = rasterCalc.Execute() as IRasterDataset; // 执行计算
IRasterLayer resultLayer = new RasterLayerClass();
resultLayer.CreateFromDataset(result);
resultLayer.Name = "Subtract Result";
map.AddLayer(resultLayer as ILayer); // 将计算结果添加到地图
mxDoc.UpdateContents();
mxDoc.ActiveView.Refresh();
}
- 在Add-in配置文件中添加按钮和事件处理程序:
<ESRI.Configuration xmlns="http://schemas.esri.com/Desktop/AddIns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name>Subtract Add-in</Name>
<AddInID>{61e0c9c9-8d1c-4e64-9e5d-01a8c1a4596e}</AddInID>
<Description>Subtract two raster datasets.</Description>
<Version>1.0</Version>
<Image>Images\Subtract.png</Image>
<Author>ESRI China (Beijing) Co., Ltd.</Author>
<Company>ESRI China (Beijing) Co., Ltd.</Company>
<Date>7/29/2021</Date>
<Targets>
<Target name="Desktop" version="10.7" />
</Targets>
<AddIn language="CLR" library="SubtractAddin.dll" namespace="SubtractAddin">
<ArcMap>
<Commands>
<Button id="SubtractAddin_btnSubtract" class="SubtractAddin" message="Subtract two raster datasets." caption="Subtract" tip="Subtract" category="Add-in Controls" image="Images\Subtract.png" />
</Commands>
<Extensions>
<Extension id="SubtractAddin_Extension" class="SubtractAddin" productName="Subtract Add-in" showInExtensionsDialog="true" />
</Extensions>
</ArcMap>
</AddIn>
</ESRI.Configuration>
- 最后编译生成Add-in插件,将生成的Add-in文件夹复制到ArcMap的Add-in文件夹下,并在ArcMap中启用Add-in插件。启用后,在地图工具栏中会出现一个名为“Subtract”的按钮,点击即可执行栅格数据相减的操作
原文地址: https://www.cveoy.top/t/topic/dDCJ 著作权归作者所有。请勿转载和采集!