ArcEngine|为点要素类的属性表添加XY坐标值
前言
在最近的项目中,需要对面要素转成的点要素进行坐标的分析,但转换后的数据属性表中并没有X坐标和Y坐标,因此需要使用Arcengine获得所有点的坐标值并将其添加至要素的属性表中。
在Arcmap中实现的操作如下:
打开ArcToolBox中的数据管理工具——>要素——>添加XY坐标,即可为输入的要素添加XY坐标。
在Arcengine中的实现如下:
大致思路是遍历点要素类,对其中的每一个点要素,获取其经度和纬度的属性,然后将其写入属性表,因此在使用前,需要先为原要素的属性表添加X坐标字段与Y坐标字段,具体怎样做可以参考我的这篇博客ArcEinge|为要素类的属性表添加字段 -welt- 博客园 (cnblogs.com)。
代码实现
private IFeatureClass getXY(IFeatureClass fc)
private IFeatureClass getXY(IFeatureClass fc)
{
ITable table = fc as ITable;
int x_idx = -1, y_idx = -1;
for (int j = 0; j < table.Fields.FieldCount; j++)
{
if (table.Fields.get_Field(j).Name.ToString() == "POINT_X")
{
x_idx = j;
}
else if (table.Fields.get_Field(j).Name.ToString() == "POINT_Y")
{
y_idx = j;
}
}
IFeatureCursor cursor = fc.Update(null, false);
IFeature feature = cursor.NextFeature();
ITable gtable = fc as ITable;
ICursor pCursor = gtable.Search(null, false);
IRow pRow = pCursor.NextRow();
do
{
IPoint point = feature.Shape as IPoint;
double x, y;
point.QueryCoords(out x, out y); // 在这里得到坐标
string typex = pRow.get_Value(x_idx).ToString(); // 在这里得到要操作字段的值
string typey = pRow.get_Value(y_idx).ToString(); // 在这里得到要操作字段的值
feature = cursor.NextFeature();
pRow = pCursor.NextRow();
} while (feature != null);
fc.Update(null, true);
return fc;
}
本文作者:Weltㅤ
本文链接:https://www.cnblogs.com/tangjielin/p/16654430.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步