我有一个程序,它将 shapefile 加载到内存中,根据业务逻辑对一些功能进行分组,从每组功能中创建一个 shapefile,然后将文件保存到云位置以供其他应用程序使用。
这个过程中的一个症结是属性表。我希望能够为新 shapefile 中的功能设置自定义属性。使用下面的代码,我可以使用所需的信息更新数据表,但是一旦我保存并处置 shapefile 对象,我就无法让它持续存在。
var table = shapefile.DataTable;
var i = 0;
foreach(var branchObject in branches)
{
shapefile.AddFeature(branchObject.Feature);
var row = table.Rows[i];
row.BeginEdit();
row["BranchName"] = branchObject.Name;
row.EndEdit();
i++;
}
table.AcceptChanges();
这为我在 shapefile 中提供了一个正确填充的 DataTable,但是当我在 MapWindow5 中打开 shapefile 时,属性表中的唯一字段是自动生成的 Id。
我显然错过了我认为包含在“AcceptChanges()”或“Being/EndEdit()”中的某种“保存更改”步骤......还需要在表格上调用什么来使其更新?
我有一种感觉,自 Codeplex 停止使用以来我无法找到的教程之一中涵盖了这一点,但谷歌并没有提供多大帮助。