【问题标题】:How can you edit the objectID of a row in an ArcGIS geodatabase?如何在 ArcGIS 地理数据库中编辑行的 objectID?
【发布时间】:2014-08-19 00:49:22
【问题描述】:

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

我的代码如下:

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

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

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

【问题讨论】:

  • 顺便说一句,我想要一个特定的 objectid 的原因是因为我正在同步来自 2 个不同数据库的数据。因此,如果源行的对象 ID 为 234324,那么我想将其保留在目标行中。

标签: database insert gis arcgis esri-arc-engine


【解决方案1】:

简答:

你没有。

长答案:

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

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

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

【讨论】:

  • 感谢您的帮助!
【解决方案2】:

ObjectID 是 ArcGIS 的一个内部系统字段,因此不能随意使用。正如help 文档中所述,

ArcGIS 使用 ObjectID 来执行滚动、显示等操作 选择集,并对特征执行识别操作。

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

我还向 Juffy 表示,这个问题最好通过 GIS.SE 来回答。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2019-03-07
    • 2020-05-29
    • 2011-08-23
    相关资源
    最近更新 更多