2016-01-20 21 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