Arcpy,根据字符串

时间:2016-08-19 17:52:43

标签: python string select arcpy

因此,对于我的例子,我有一个大型州立公园形状文件,其中一些是实际的公园,其他只是小径。然而,没有列定义哪些是路径与实际公园,我想选择那些是路径并删除它们。我有一个列的每个功能的名称,通常在字符串中的某处包含单词“trail”。然而,它并不总是在开头或结尾。

我只是在基本级别熟悉Python,虽然我可以手动选择我想要的那些,但我很想知道它是否可以自动化。我一直在使用arcpy.Select_analysis并尝试在我的where_clause中使用“LIKE”并且已经看过使用切片的示例,但是无法获得有效的解决方案。我也试过使用'is in'函数,但我不确定我是否正确使用where_clause。在询问和搜索时,我可能还没有充分掌握正确的术语。任何帮助表示赞赏。我一直在ArcMap 10.3中使用Python窗口。

目前我在:

  
    
      

arcpy.Select_analysis(“stateparks”,“notrails”,''trail'位于\“SITE_NAME \”')

    
  

1 个答案:

答案 0 :(得分:0)

虽然使用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