arcpy 中的剪辑分析
clip analysis in arcpy
我有一个覆盖整个城市的 shapefile,以及一个 shapefile 列表,这些 shapefile 是城市不同地方的缓冲区。我想用每个缓冲区剪辑城市。我尝试在 Python 中使用 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)
这是合适的语法 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)
我还会 print()
每个文件路径字符串,以便您可以检查其语法是否被正确使用。反斜杠是 Python 中的转义字符,当其后跟关键字母时可以具有特殊属性。
我总是在任何包含文件路径的字符串前放置一个 r
,例如r"\srvr\drv\proj\gdb.gdb\fc"
;这告诉 Python 它是一个原始字符串并忽略转义函数。
有关处理文件名中的反斜杠的有趣类比,请参阅下面的 link。
如果每个地方都是独一无二的,您还可以从模型构建器中导出迭代特征选择工具。
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")
要使用多个剪辑功能进行多个剪辑,您必须首先创建所有剪辑功能的列表并迭代它们。
import arcpy
arcpy.env.workspace = file_path
fcList = arcpy.ListFeatureClasses()
for fc in fcList:
arcpy.Clip_analysis(input_feature, fc, output_feature)
请务必为您的多个输出使用不同的名称。您可以使用 arcpy.CreateUniqueName()
创建不同的名称,例如 Buffer.shp、Buffer_1.shp、Buffer_2.shp ...
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:
outfeature = "U:\Foo\Bar\" + i
arcpy.Clip_analysis(infeature, i, outfeature)
使用 arcpy 在 ArcMap 中裁剪多个图层:
import os
import arcpy as arc
if __name__ == '__main__':
input_layers = arc.GetParameterAsText(0) #list of layers for clipping
clip_layer = arc.GetParameterAsText(1) # contour clip layer
xy_tolerance = arc.GetParameterAsText(2)
output_db = arc.GetParameterAsText(3) # database with saved layers
for lay_for_clipping in input_layers.split(";"):
arc.AddMessage("Clip for " + lay_for_clipping)
layer_path, layer_name = os.path.split(lay_for_clipping)
output_layer = os.path.join(output_db, layer_name)
arc.Clip_analysis(lay_for_clipping, clip_layer, output_layer, xy_tolerance)
我有一个覆盖整个城市的 shapefile,以及一个 shapefile 列表,这些 shapefile 是城市不同地方的缓冲区。我想用每个缓冲区剪辑城市。我尝试在 Python 中使用 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)
这是合适的语法 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)
我还会 print()
每个文件路径字符串,以便您可以检查其语法是否被正确使用。反斜杠是 Python 中的转义字符,当其后跟关键字母时可以具有特殊属性。
我总是在任何包含文件路径的字符串前放置一个 r
,例如r"\srvr\drv\proj\gdb.gdb\fc"
;这告诉 Python 它是一个原始字符串并忽略转义函数。
有关处理文件名中的反斜杠的有趣类比,请参阅下面的 link。
如果每个地方都是独一无二的,您还可以从模型构建器中导出迭代特征选择工具。
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")
要使用多个剪辑功能进行多个剪辑,您必须首先创建所有剪辑功能的列表并迭代它们。
import arcpy
arcpy.env.workspace = file_path
fcList = arcpy.ListFeatureClasses()
for fc in fcList:
arcpy.Clip_analysis(input_feature, fc, output_feature)
请务必为您的多个输出使用不同的名称。您可以使用 arcpy.CreateUniqueName()
创建不同的名称,例如 Buffer.shp、Buffer_1.shp、Buffer_2.shp ...
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:
outfeature = "U:\Foo\Bar\" + i
arcpy.Clip_analysis(infeature, i, outfeature)
使用 arcpy 在 ArcMap 中裁剪多个图层:
import os
import arcpy as arc
if __name__ == '__main__':
input_layers = arc.GetParameterAsText(0) #list of layers for clipping
clip_layer = arc.GetParameterAsText(1) # contour clip layer
xy_tolerance = arc.GetParameterAsText(2)
output_db = arc.GetParameterAsText(3) # database with saved layers
for lay_for_clipping in input_layers.split(";"):
arc.AddMessage("Clip for " + lay_for_clipping)
layer_path, layer_name = os.path.split(lay_for_clipping)
output_layer = os.path.join(output_db, layer_name)
arc.Clip_analysis(lay_for_clipping, clip_layer, output_layer, xy_tolerance)