排序后填充唯一ID字段,Python

2024-09-26 22:09:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在access表中创建一个新的unique id字段。我已经有一个名为SITE_ID_FD的字段,但它是历史的。该字段中唯一值的格式不是我们当前的格式,所以我用新格式创建了一个新字段。在

Old Format = M001, M002, K003, K004, S005, M006, etc

New format = 12001, 12002, 12003, 12004, 12005, 12006, etc

我写了以下脚本:

^{pr2}$

这很好,但是它根据objectID的默认排序填充新的id字段。我需要先对2个字段排序,然后根据该排序填充新的id字段(我想按一个名为SITE的字段排序,然后按旧的id字段SITE_ID_FD排序)

我试着手动排序这两个字段,希望Python能够支持这种排序,但事实并非如此。有人能提出一个方法吗?在


Tags: idformataccess排序格式etcsite历史
2条回答

在注释中添加了一个指向arcpy文档的链接,但据我所知,这将创建一个新的、已排序的数据集

import arcpy
from arcpy import env

env.workspace = r"z:\test.gdb"

arcpy.Sort_management("testfc", "testfc_sort", [["SITE", "ASCENDING"],
                                                ["SITE_IF_FD", "ASCENDING]])

这将在排序后的数据集上执行您想要的操作:

^{pr2}$

我假设有某种方法可以将经过排序/修改的数据集复制回原始数据集,这样一切都好吗?在

我承认,我不使用arcpy,文档可以更明确。在

一种可能的解决方案是在创建更新光标时。您可以为光标指定希望排序的字段(抱歉,我的英语是…),他们在文档中对此进行了解释:http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000003m000000

结果是这样的: UpdateCursor(dataset, {where_clause}, {spatial_reference}, {fields}, {sort_fields}) 而且您只对sort_字段感兴趣,因此假设您的代码可以在排序表上正常工作,并且您希望将代码的第二部分排序的表排序如下:

fc = r"Z:\test.gdb\testfc"

x = 12001

cursor = arcpy.UpdateCursor(fc,"","","","SITE A, SITE_ID_FD A") 
#if you want to sort it descending you need to write it with a D 
#>>  cursor = arcpy.UpdateCursor(fc,"","","","SITE D, SITE_ID_FD D")

for row in cursor:
    row.setValue("SITE_ID", x)
    cursor.updateRow(row)
    x+= 1

我希望这有帮助

相关问题 更多 >

    热门问题