Python 使用Where语句中的变量在for循环中按属性选择

Python 使用Where语句中的变量在for循环中按属性选择,python,gis,arcpy,Python,Gis,Arcpy,我已经看过几篇类似的关于这种技术的文章,但是我仍然有一些问题。以下脚本旨在从一个形状文件中选择第二个多边形形状文件边界内的所有点,然后将所选点数编辑到其中一个多边形字段中。我无法使where子句语句正常运行,尽管从错误消息来看它似乎是正确的。这两个形状文件都位于文件地理数据库和要素图层中,为使用选择功能而在其中创建 arcpy.MakeFeatureLayer_management("treatment_maps",'maps') arcpy.MakeFeatureLayer_managemen

我已经看过几篇类似的关于这种技术的文章,但是我仍然有一些问题。以下脚本旨在从一个形状文件中选择第二个多边形形状文件边界内的所有点,然后将所选点数编辑到其中一个多边形字段中。我无法使where子句语句正常运行,尽管从错误消息来看它似乎是正确的。这两个形状文件都位于文件地理数据库和要素图层中,为使用选择功能而在其中创建

arcpy.MakeFeatureLayer_management("treatment_maps",'maps')
arcpy.MakeFeatureLayer_management("points_2014",'points')
cursor=arcpy.UpdateCursor("treatment_maps")

for row in cursor:
    map=row.getValue('map_name')
    where='"map_name"' + '=' + '\'' + str(map) + '\''
    arcpy.SelectLayerByAttribute_management("maps","NEW_SELECTION",where)
    arcpy.SelectLayerByLocation_management("points","COMPLETELY_WITHIN","maps")
    count=arcpy.GetCount_management("points")
    row.setValue('DI_Count', count)
    cursor.updateRow(row)
错误消息:

Executing: SelectLayerByAttribute maps NEW_SELECTION "map_name"='Airport'
Start Time: Wed Jan 15 13:00:56 2014
ERROR 000358: Invalid expression
Cannot acquire a lock.
Cannot acquire a lock.
Failed to execute (SelectLayerByAttribute).
Failed at Wed Jan 15 13:00:56 2014 (Elapsed Time: 0.00 seconds)
treatment_maps features类包含多边形和位于每个多边形内的点的计数(DI_计数),需要更新。我希望这个脚本能够正常工作,因为我有大约100个多边形需要更新。谢谢你的帮助和建议

更新:
在对每一行进行实验之后,我发现select by attribute“where”语句运行正常,但当光标设置在同一对象上时,select by attribute函数不起作用。但我仍然需要一个解决方案

我不确定。但是ArcGIS帮助示例中的字段表达式是:[map\u name],而不是“map\u name”。 尝试将第6行替换为:

其中='[map\u name]'+'='+'\''+str(map)+'\''


祝你好运

[]对于个人地理数据库,引用其他所有内容。我尝试过这样做,但它给出了相同的错误消息。我还认为,对于文件地理数据库,arcpy使用“Field”=语法,而[Field]=适用于其他数据源。