如何获取形状名称
How to Get Shape Name
使用 DotSpatial,如果我将 Shapefile 作为 IFeatureSet
打开,我可以在 FeatureSet
中看到一组形状,这些形状具有属性集合。但是我看不到找到与形状关联的名称的明显方法?
例如,如果我有以下代码:
var featureSet = Shapefile.Open("../../Ecuador/map.shp");
var rowCount = featureSet.NumRows();
for (var i = 0; i < rowCount; i++)
{
var shape = featureSet.GetShape(i, true);
var geometry = shape.ToGeometry();
}
如果我通过在 Shape
对象上放置断点来调试此代码,我可以看到属性集合。在我使用的示例中,每个形状都有 12 个属性。我可以看到这些属性之一是我认为是形状的名称(在这个例子中我正在查看厄瓜多尔的省份),但我不知道如何可靠地配对这些属性中的哪一个会是形状名称,在本例中是省的名称。
编辑
这是我可以看到的第一个形状的可用属性示例:
快速浏览一下,我会说索引 4 处的属性是我需要的属性,但我如何以编程方式找到它?
进一步编辑
看起来,通过进一步查看数据,属性的标签可能是 IFeatureSet
:
中的 DataTable 列名称
不过...如果我想导入这些形状,我会以编程方式选择其中的哪些?是让导入人员手动选择正确的唯一方法吗?
我找到了一个名为 Importing Geographic Information Systems (GIS) data in Google Earth 的页面。
从 shapefile 导入的过程显示了一个屏幕截图,其中要求用户从 table 个可用属性中 select 包含形状名称的属性。
看起来,为特征附加名称的任务似乎是由用户手动处理的。
使用 DotSpatial,如果我将 Shapefile 作为 IFeatureSet
打开,我可以在 FeatureSet
中看到一组形状,这些形状具有属性集合。但是我看不到找到与形状关联的名称的明显方法?
例如,如果我有以下代码:
var featureSet = Shapefile.Open("../../Ecuador/map.shp");
var rowCount = featureSet.NumRows();
for (var i = 0; i < rowCount; i++)
{
var shape = featureSet.GetShape(i, true);
var geometry = shape.ToGeometry();
}
如果我通过在 Shape
对象上放置断点来调试此代码,我可以看到属性集合。在我使用的示例中,每个形状都有 12 个属性。我可以看到这些属性之一是我认为是形状的名称(在这个例子中我正在查看厄瓜多尔的省份),但我不知道如何可靠地配对这些属性中的哪一个会是形状名称,在本例中是省的名称。
编辑
这是我可以看到的第一个形状的可用属性示例:
快速浏览一下,我会说索引 4 处的属性是我需要的属性,但我如何以编程方式找到它?
进一步编辑
看起来,通过进一步查看数据,属性的标签可能是 IFeatureSet
:
不过...如果我想导入这些形状,我会以编程方式选择其中的哪些?是让导入人员手动选择正确的唯一方法吗?
我找到了一个名为 Importing Geographic Information Systems (GIS) data in Google Earth 的页面。
从 shapefile 导入的过程显示了一个屏幕截图,其中要求用户从 table 个可用属性中 select 包含形状名称的属性。
看起来,为特征附加名称的任务似乎是由用户手动处理的。