0

我需要一行代码,它会根据我对数据规定的顺序发出新的顺序 ID。本质上,在按照我的喜好对数据进行排序之后,原始的 Object_Id 对我来说不再是有意义的顺序。在我的表中,我创建了一个新字段(短整数)。在字段计算器的预逻辑脚本框中,我尝试了以下操作:

counter = 0
 def uniqueID():
 global counter
 counter += 1
 return counter

但它似乎没有工作.. 我的表格的一个小样本如下:(用于可视化目的)

Object_ID    /    MMSI    /    TIME    /    VESSEL    /    NEW_ID

  1210            4444       01/10/10         01            NuLL
  1801            4444       02/10/10         01            NuLL
   303            4444       03/10/10         01            NuLL
  2839            4444       03/10/10         01            NuLL
 32100            5555       01/10/10         03            NuLL
    34            5555       02/10/10         03            NuLL

本质上,我现在需要将那些 NuLL 设为 1、2、3、4……等等,因为我的数据现在按我的喜好排序(首先按 MMSI 编号/按日期在 MMSI 内)

因此,它会如下所示:(注意现在填充了 New_ID 字段)

Object_ID    /    MMSI    /    TIME    /    VESSEL    /    NEW_ID

  1210            4444       01/10/10         01            1
  1801            4444       02/10/10         01            2
   303            4444       03/10/10         01            3
  2839            4444       03/10/10         01            4
 32100            5555       01/10/10         03            5
    34            5555       02/10/10         03            6

我将如何做到这一点?谢谢

4

5 回答 5

2

ArcGIS 帮助中有一个字段计算器示例,可以完全满足您的需求。

http://resources.arcgis.com/en/help/main/10.1/index.html#//00170000004s000000

(如果该链接对您不起作用,只需在 ArcGIS 帮助中搜索“计算字段示例”)。

向下滚动到“累积和顺序计算”。

于 2013-09-26T22:06:52.897 回答
0

您可以使用 arcpy 库中的 updatecursor

rows = arcpy.UpdateCursor("your attriubute table") 

counter = 1
for row in rows:
    row.NEW_ID = counter
    rows.updateRow(row)
    counter += 1

请确保正确的数据类型

于 2013-09-26T15:24:27.057 回答
0

我已经尝试过代码(见下文),但只是将 FID 值加 1,而不是按排序顺序的序列...

rows = arcpy.UpdateCursor("your attribute table") 

counter = 1
for row in rows:
    row.NEW_ID = counter
    rows.updateRow(row)
    counter += 1
于 2018-06-12T21:37:53.143 回答
0

我试过这个,

我新建了一个字段 短整数 把数据排序成我想要的排列方式 导出dbf为excel数据,注意会按照属性表中的排列方式导出 在excel中填上编号(因为一个 dbf 文件)复制 excel 中序列字段的列返回到您的属性表,然后将编号粘贴到那里。

它有效,因为在线没有可用的python代码

于 2018-08-14T07:41:19.157 回答
-1

这种快速解决方案只需使用 Excel 对排序数据创建顺序编号,然后使用 ArcGIS 将结果表连接回:

  1. 将属性表导出为“文本文件”,确保将 .csv 扩展名添加到文件名中。

  2. 在 MS Excel 中打开 .csv 文件。

  3. 根据需要排序。

  4. 在 Excel 的新列中,在第一行中键入数字 1。

  5. 在第二行中,输入数字 2。

  6. 选择该列中的两行,然后双击所选内容右下角的小框,以使编号继续沿该列向下连续到填充行的末尾。

  7. 保存 .csv。

  8. 返回 ArcGIS 并使用“添加数据”导入您刚刚创建的 .csv。

  9. 右键单击该功能,选择“Joins and Relates”->“Join...”。

  10. 选择“从表中连接属性”。

  11. 选择适当的字段和正确的 .csv 文件(您刚刚导入的那个)

  12. 单击“确定”。

  13. 最后,将特征导出到新特征以使连接永久化。

于 2019-04-17T17:05:21.120 回答