Arcpy,根据字符串的一部分选择特征

2024-10-16 20:43:08 发布

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

以我的例子来说,我有一个大型的州立公园的形状文件,其中一些是实际的公园,其他的只是小径。然而,没有一个列定义哪些是小径,哪些是实际的公园,我想选择那些是小径并删除它们。我有一个列来显示每个特性的名称,通常在字符串的某个地方包含单词“trail”。但它并不总是在开始或结束。在

我只对Python有基本的了解,虽然我可以手动选择我想要的,但我很想知道它是否可以自动化。我一直在用arcpy.Select_分析并尝试在我的where\u子句中使用“LIKE”并看到了使用切片的示例,但未能得到有效的解决方案。我也尝试过使用“is in”函数,但我不确定是否正确地使用了where\u子句。我可能只是不太了解在询问和搜索时使用的适当术语。感谢任何帮助。我一直在使用arcmap10.3中的Python窗口。在

目前我在:

arcpy.Select_analysis ("stateparks", "notrails", ''trail' is in \"SITE_NAME\"')


Tags: 文件in名称定义is特性whereselect
1条回答
网友
1楼 · 发布于 2024-10-16 20:43:08

虽然使用Select工具是一个不错的选择,但是SQL表达式的语法可能是一个挑战。考虑使用Update Cursor来解决这个问题。在

import arcpy

stateparks = r"C:\path\to\your\shapefile.shp"
notrails = r"C:\path\to\your\shapefile_without_trails.shp"

# Make a copy of your shapefile
arcpy.CopyFeatures_management(stateparks, notrails)

# Check if "trail" exists in the string delete row if so
with arcpy.da.UpdateCursor(notrails, "SITE_NAME") as cursor:
    for row in cursor:
        if "trails" in row[0]: # row[0] refers to the current row in the "SITE_NAME" field
            cursor.deleteRow() # Delete the row if condition is true

相关问题 更多 >