我已經看到了幾個與此技術相關的類似帖子,但我仍然遇到問題。以下腳本旨在選擇一個shape文件中位於第二個多邊形shapefile邊界內的所有點,然後編輯選定的點數到其中一個多邊形字段中。儘管從錯誤消息看來它是正確的,但我還是無法使where子句聲明正常工作。這兩個shape文件都位於文件地理數據庫和要素圖層中,爲了使用選擇功能而創建這兩個圖層。在for語句中使用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特徵類包含位於每個多邊形內的點,這需要更新多邊形和計數(DI_Count)。我希望讓這個腳本能夠正常工作,因爲我有大約100個多邊形要更新。感謝您的任何幫助或建議!
更新: 經過對每一行的實驗後,我發現select by屬性'where'語句正常工作,但select by屬性函數在光標設置在同一對象上時不起作用。但我仍然需要一個解決方案。
[]爲個人地理數據庫,引用其他所有內容。 – M4rtini
我試過了,但它給出了相同的錯誤信息。我也相信,對於文件地理數據庫,arcpy使用「Field」=語法,而[Field] =適用於其他數據源。 – user3174452