这个工具的目的是计算面要素的四至点。
四至点并不是要素的MaxX,MaxY,MinX,MinY四个值。如果要计算这四个字,可以直接使用系统自带的【计算几何属性】进行计算:
这里要计算的是要素的最东、西、南、北的四个点坐标。
因此首先要获取这四个点,再获取它的坐标。
一、要实现的功能
如上图所示,在待处理的要素上右键单击,在弹出的右键列表中,点击【CC工具箱——面要素计算四至】按钮即可。
工具没有输入参数,点击后,要素会生成8个字段,并赋值四至坐标:
二、实现流程
工具的实现流程并不长。
1、首先新建8个字段,直接调用GP工具即可。
2、为了找出最东、西、南、北的四个点,先要找到要素的边界值,即最东、西、南、北的边界。
3、再获取要素的所有点,循环比对,如果点的x坐标等于边界值最小x坐标,就表示这个点是最南的点。
以此类推,可以找出剩下的最东、西、北三个点。
4、最后将找到四个点的坐标写入字段值即可。
完整代码如下:
await QueuedTask.Run(() =>
{
Map map = MapView.Active.Map;
// 获取图层
FeatureLayer featureLayer = MapView.Active.GetSelectedLayers().FirstOrDefault() as FeatureLayer;
// 如果选择的不是面要素或是无选择,则返回
if (featureLayer.ShapeType != esriGeometryType.esriGeometryPolygon || featureLayer == null)
{
MessageBox.Show("错误!请选择一个面要素!");
return;
}
pw.AddProcessMessage(20, "添加字段");
// 添加字段
Arcpy.AddField(featureLayer.Name, "东_X", "DOUBLE");
Arcpy.AddField(featureLayer.Name, "东_Y", "DOUBLE");
Arcpy.AddField(featureLayer.Name, "西_X", "DOUBLE");
Arcpy.AddField(featureLayer.Name, "西_Y", "DOUBLE");
Arcpy.AddField(featureLayer.Name, "南_X", "DOUBLE");
Arcpy.AddField(featureLayer.Name, "南_Y", "DOUBLE");
Arcpy.AddField(featureLayer.Name, "北_X", "DOUBLE");
Arcpy.AddField(featureLayer.Name, "北_Y", "DOUBLE");
pw.AddProcessMessage(30, time_base, "计算四至坐标");
using (RowCursor rowCursor = featureLayer.Search())
{
while (rowCursor.MoveNext())
{
using (Feature feature = rowCursor.Current as Feature)
{
// 标记一个初始坐标
double e_x = 0;
double n_y = 0;
double w_x = 100000000;
double s_y = 100000000;
Geometry geometry = feature.GetShape();
if (geometry is Polygon polygon)
{
// 找出四至点
foreach (var pt in polygon.Points)
{
if (pt.X > e_x) { e_x = pt.X; }
if (pt.Y > n_y) { n_y = pt.Y; }
if (pt.X < w_x) { w_x = pt.X; }
if (pt.Y < s_y) { s_y = pt.Y; }
}
// 标记四至点
foreach (var pt in polygon.Points)
{
if (pt.X == w_x)
{
feature["西_X"] = pt.X;
feature["西_Y"] = pt.Y;
}
if (pt.X == e_x)
{
feature["东_X"] = pt.X;
feature["东_Y"] = pt.Y;
}
if (pt.Y == n_y)
{
feature["北_X"] = pt.X;
feature["北_Y"] = pt.Y;
}
if (pt.Y == s_y)
{
feature["南_X"] = pt.X;
feature["南_Y"] = pt.Y;
}
}
}
feature.Store();
}
}
}
});
三、工具文件分享
我把工具都集合成工具箱,不再单独放单个工具,可以到这里下载完整工具箱,会不断更新:
【ArcGIS Pro二次开发】(68):计算面要素的四至点PS:可以直接点击…bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。
今天的文章arcgis中面积计算_gis中用面要素切割面「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88040.html