2016-01-20 54 views
0

我有一個覆蓋整個城市的shapefile,以及城市中不同地方的緩衝區列表。我想用每個緩衝區剪輯城市。我嘗試在Python中使用ArcPy,但代碼無法正常工作。我究竟做錯了什麼?arcpy中的剪輯分析

import arcpy 
from arcpy import env 
from arcpy.sa import * 
env.workspace = "U:\Park and Residential Area\Test\SBA park_res_buffer_5\SBA.gdb" 
infeature= "U:\Park and Residential Area\Test\park_res_merge.shp" 
clipfeatture = arcpy.ListFeatureClasses("*", "polygon") 
for i in clipfeatture: 
    outclipfeatture = arcpy.Clip_analysis(infeature,i) 
    outclipfeatture.save("U:\Park and Residential Area\Test\SBA park_res_buffer_5/"*i) 
+0

你能具體談談如何代碼是不工作:是輸出一個錯誤,或做比你期待什麼其他的東西嗎? – Erica

+0

還要注意包含路徑的字符串; 「\」是Python中的一個轉義字符。我最喜歡的選擇是使它們像這樣的原始字符串:myString = r「path \ to \ data」 – TomAdair

回答

4

這是適當的語法for using Clip in ArcPy

arcpy.Clip_analysis(in_features, clip_features, out_feature_class)

所以你for迴路應改爲類似:

for i in clipfeatture: 
    outfeature = "U:\Foo\Bar\" + i 
    arcpy.Clip_analysis(infeature, i, outfeature) 
1

我也要print()各個F le路徑字符串,以便您可以檢查其語法是否正確使用。反斜槓是Python中的轉義字符,並且在後跟關鍵字時可以具有特殊屬性。

我總是把r放在任何包含文件路徑的字符串前面,例如, r"\\srvr\drv\proj\gdb.gdb\fc";這告訴Python它是一個原始字符串並忽略轉義函數。

請參閱下面的鏈接,瞭解如何處理文件名中的反斜槓。

https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/

-1

您可以從模型構建器,如果每個地方都是獨一無二的還出口迭代要素選擇工具。

http://desktop.arcgis.com/en/arcmap/10.3/tools/modelbuilder-toolbox/iterate-feature-selection.htm

# Import arcpy module 
import arcpy 

# Load required toolboxes 
arcpy.ImportToolbox("Model Functions") 


# Local variables: 
Selected_Features = "" 
Value = "1" 

# Process: Iterate Feature Selection 
arcpy.IterateFeatureSelection_mb("inputfeature", "fields", "false") 
+0

該模型構建工具是否在獨立的Python腳本中工作? (許多人不這樣做,但我沒有'IterateFeatureSelection'的使用經驗。) – Erica

+0

對於像爲每個單獨緩衝區創建緩衝區這樣的簡單過程。您可以保存模型構建器並轉到文件> export> export作爲python腳本,然後將其放入您想要使用的模塊中。我上面的例子只是迭代特徵選擇工具 - 沒有額外的數據添加。 ArcGIS會添加其他信息(如局部變量),但是如果您構建數據模型並將其導出,並且所有變量都將根據您在模型構建器中所做的操作自動完成。 – Smithw1

+0

構建模型,你只想: 插入>迭代器>特徵選擇 選定的功能它就會成爲你的價值觀緩衝區 這將是你唯一的字段(如工作搜索光標) 然後附上您的剪輯工具。使用選定的功能(您當前的緩衝區)作爲剪輯和城市作爲輸入功能。確保你使輸出名稱唯一。 %Value%_Buffer將在最後使用_Buffer打印地名,以簡化操作。 – Smithw1