写在最前面的话:
这个工具的原型是博主学学GIS做的一个工具
,用于统计当前所选择的面要素的面积,主要是为了解决“亩”的转换,确实是一个很方便好用的工具。大家可移步原贴参观:
ArcGIS Pro 加载项(5)——以“亩”为单位统计地块面积
基于个人以及网友方面的需求,我加入了椭球面积的汇总统计,方便在国土空间规划中的应用。
一、要实现的功能
如上图所示,在地图框中,选择部分的面要素,右键单击,在弹出的右键列表中,点击【面积汇总】按钮即可。
在弹出的【面积统计】工具框中,显示了两部分共8个面积指标。
包括【投影面积和椭球面积】,并分别按【平方米、公顷、平方公里、亩】4个单位进行显示。
目前我经常用到的就是这些,如果大家还有其它表达方式上的需求,可以在评论区留言,后面再补充。
二、实现流程
至于实现流程的核心代码,我这里就不贴出来了。不过可以在文章放出的工程文件里自行查看。
这里就说一下椭球面积的计算方法:
// 初始化椭球面积
double geoArea = 0;
// 获取活动地图视图中选定的要素集合
var selectedSet = MapView.Active.Map.GetSelection();
// 将选定的要素集合转换为字典形式
var selectedList = selectedSet.ToDictionary();
// 创建一个新的 Inspector 对象以检索要素属性
var inspector = new Inspector();
// 遍历每个选定图层及其关联的对象 ID
foreach (var layer in selectedList)
{
// 计算椭球面积
var area = GeometryEngine.Instance.GeodesicArea(inspector.Shape);
// 累加得到最终的汇总面积
geoArea += Math.Abs(area);
}
这里关键的一个方法就是【GeometryEngine.Instance.GeodesicArea(inspector.Shape)】,这是【ArcGIS.Core.Geometry】自带的一个计算椭球面积的方法,就这么一行简单的代码,花了很长的时间才找到。
是时候再回头学基础了。
三、工程文件分享
最后,放上工程文件的链接:
AreaStatistichttps://pan.baidu.com/s/1ebLReG25EclGVrEz6XTi4w?pwd=r0jgPS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。