0

我正在尝试向 ArcGIS 地理数据库添加一行,但我不希望为此行生成自动 objectid。我想插入一个特定的objectid。我收到错误:字段不可编辑。

我的代码如下:

feature = fclass.CreateFeature();
feature.setValue((int)_fields[i].targetIndex, tripValue);

现在,在第一次迭代中, _fields[i].targetIndex=0 因为我想插入特定的 objectid。但是第一次迭代给了我一个错误,而其余的都很好。

关于如何以某种方式绕过自动 objectid 的任何想法?

4

2 回答 2

2

简短的回答:

你没有。

长答案:

使用 ObjectID 字段作为唯一键(我假设这是您在这里所做的)通常被认为是一个非常糟糕的主意,因为该字段并不像您想象的那样静态 - 数据集上的各种操作将重新分配它们.

这个问题的一个答案表明,如果您从其他地方复制数据,则复制/粘贴数据可能会完整地传输 objectid,但否则您应该创建另一个字段以用作唯一键并单独保留 objectid。

(顺便说一句,这种地理数据库问题将在GIS.SE上得到更智能的答案。

于 2014-06-28T05:20:47.407 回答
0

ObjectID 是 ArcGIS 的内部系统字段,我不能对此进行调整。如帮助文档中所述,

ArcGIS 使用 ObjectID 来执行诸如滚动、显示选择集以及对要素执行识别操作等操作。

相反,我建议创建一个 GlobalID,它也是由 ArcGIS 系统生成的,但要确保每个标识符都是唯一的(有关详细信息,请参阅ArcGIS 字段数据类型)。GlobalID 还支持地理数据库复制。要创建 GlobalID,只需在 ArcCatalog 中右键单击要素类,然后选择管理 > 添加全局 ID...

我还向 Juffy 表示,这个问题在GIS.SE上会得到更好的解决。

于 2014-06-28T19:36:08.663 回答