Arcengine 二次开发得到点shapefile的坐标

  做二次开发的时候,想要得到Point shapfile的坐标和相应的属性,也就是Point 的(x,y)和某个属性,在网上查了一些资料,做总结如下

  首先,你要确定自己要操作的图层,一般来说,得到当前操作的图层代码如下

//m_hookHelper.FocusMap.LayerCount,m_hookHelper是那个钩子,做二次开发都知道,我这个是
//搞的ICommand
for (int i = 0; i < m_hookHelper.FocusMap.LayerCount; i++)
{
    layer = (IFeatureLayer)m_hookHelper.FocusMap.get_Layer(i);
    //得到特定类型的图层,如果点,线,多边形
    if (layer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)
{ //layer.Name, 图层的名称; } }

 然后呢,需要得到当前图层有哪些字段,并记录下你要操作字段的索引,代码如下

//cLayer 为当前操作的图层
ITable table = cLayer.FeatureClass as ITable;
int index = -1;
for (int j = 0; j < table.Fields.FieldCount; j++)
{
    //每个字段的名称如下,你要操作哪个字段的,可以记录下
   //这个字段的索引
    string fname = table.Fields.get_Field(j).Name.ToString();
   //记录下你要操作的字段的索引
    index  = i;
}

 最后得到当前图层的坐标,以及要操作字段的值

//cLayer为当前图层
IFeatureClass fClass = cLayer.FeatureClass; //这是用来得到坐标的 IFeatureCursor cursor = fClass.Update(null, false); IFeature feature = cursor.NextFeature(); //这是用来得到字段的 ITable table = this.cLayer.FeatureClass as ITable; ICursor pCursor = table.Search(null, false); IRow pRow = pCursor.NextRow(); do { IPoint point = feature.Shape as IPoint; double x, y; point.QueryCoords(out x, out y); // 在这里得到坐标 string type = pRow.get_Value(index).ToString();//在这里得到要操作字段的值 feature = cursor.NextFeature(); pRow = pCursor.NextRow(); } while (feature != null);

 这样就可以得到点的坐标和相应的字段了。欢迎批评指正

posted @ 2017-05-14 13:16  秀川大人  阅读(1732)  评论(0编辑  收藏  举报