根据排序数据添加新的顺序ID号(ArcGIS)

时间:2013-09-26 13:04:16

标签: python arcgis

我需要一行代码,根据我为数据规定的顺序发出新的顺序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

我将如何实现这一目标?感谢

5 个答案:

答案 0 :(得分:2)

ArcGIS帮助中有一个字段计算器示例,可以完全按照您的要求进行操作。

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

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

向下滚动到“累积和连续计算”。

答案 1 :(得分:0)

您可以使用arcpy库中的updatecursor

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

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

请确保正确的数据类型

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

我尝试过了,

我创建了一个新的字段短整数 将数据排序到我想要的安排中 将dbf导出为ex​​cel数据,请注意它将以属性表中的导出方式导出 在excel中填写编号(由于它是dbf文件,因此您将无法保存它) 复制Excel中序列字段的列 返回到属性表,然后将编号粘贴到此处。

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

答案 4 :(得分:0)

此快速解决方案仅使用Excel在排序后的数据上创建顺序编号,然后使用ArcGIS将结果表重新加入:

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

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

  3. 根据需要排序。

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

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

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

  7. 保存.csv。

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

  9. 右键单击功能,选择“联接和关联”->“联接...”。

  10. 选择“从表中加入属性”。

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

  12. 单击“确定”。

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