在 Arcmap 中创建自定义工具时遇到问题
Trouble with creaing custom tool in Arcmap
我正在尝试创建自己的工具以在 ArcMap 中使用,但一直 运行 遇到问题。我想创建一个缓冲区(我可以这样做),然后剪辑落在缓冲区内的点。我 运行 遇到的问题是我不知道如何使用缓冲区作为我工具剪辑部分的输入特征。
import arcpy
import os
from arcpyimmport env
env.workspace = "C:/LabData"
arcpy.env.overwriteOutput = True
In_lake = arcpy.GetParameterAsText(0)
Out_Buff = arcpy.GetParameterAsText(1)
Buffer_Distance = arcpy.GetParameterAstext(2)
in_cities = arcpy.GetParameterAsText(3)
cliped_cities = GetParameterAsText(4)
New_Table = arcpy.GetParameterAsText(5)
Join_Input = arcpy.GetParameteAsText(6)
# step 1 create a buffer around the lakes
arcpy.Buffer_analysis(In_Lake, Out_Buff, Buffer_Distance)
# Step 2 Clip all cities that fall within the buffer
arcpy.Clip_analysis( in_cities,out_Buff, clipped_cities)
# Step 3
arcpy.Statistics_analysis(clipped_cities, New_Table, statistics_fields,\
'Population SUM', 'CNTRY_NAME')
# Step 5
arcpy.AddField_management (New_Table, 'Country', 'TEXT')
]1
仔细检查您的变量名称是否匹配 -- Python 和 ArcPy 区分大小写。
In_Lake = arcpy.GetParameterAsText(0) ## was In_lake
Out_Buff = arcpy.GetParameterAsText(1)
Buffer_Distance = arcpy.GetParameterAstext(2)
in_cities = arcpy.GetParameterAsText(3)
clipped_cities = GetParameterAsText(4) ## was cliped_cities
New_Table = arcpy.GetParameterAsText(5)
Join_Input = arcpy.GetParameteAsText(6)
# step 1 create a buffer around the lakes
arcpy.Buffer_analysis(In_Lake, Out_Buff, Buffer_Distance)
# Step 2 Clip all cities that fall within the buffer
arcpy.Clip_analysis(in_cities, Out_Buff, clipped_cities) ## was out_Buff
除非你想保留湖缓冲区,否则它不一定需要是用户指定的输入参数。考虑改用 the in_memory workspace——请注意,一旦工具执行完成,其中的任何数据都将被删除。
Out_Buff = r'in_memory\lakeBuffer'
对于您并不真正关心的 任何 中间特征 class 或 table 可以使用类似的策略。但是,有时使用这些中间结果来验证您的工具是否在每一步都按照您的预期进行是很有用的。
我正在尝试创建自己的工具以在 ArcMap 中使用,但一直 运行 遇到问题。我想创建一个缓冲区(我可以这样做),然后剪辑落在缓冲区内的点。我 运行 遇到的问题是我不知道如何使用缓冲区作为我工具剪辑部分的输入特征。
import arcpy
import os
from arcpyimmport env
env.workspace = "C:/LabData"
arcpy.env.overwriteOutput = True
In_lake = arcpy.GetParameterAsText(0)
Out_Buff = arcpy.GetParameterAsText(1)
Buffer_Distance = arcpy.GetParameterAstext(2)
in_cities = arcpy.GetParameterAsText(3)
cliped_cities = GetParameterAsText(4)
New_Table = arcpy.GetParameterAsText(5)
Join_Input = arcpy.GetParameteAsText(6)
# step 1 create a buffer around the lakes
arcpy.Buffer_analysis(In_Lake, Out_Buff, Buffer_Distance)
# Step 2 Clip all cities that fall within the buffer
arcpy.Clip_analysis( in_cities,out_Buff, clipped_cities)
# Step 3
arcpy.Statistics_analysis(clipped_cities, New_Table, statistics_fields,\
'Population SUM', 'CNTRY_NAME')
# Step 5
arcpy.AddField_management (New_Table, 'Country', 'TEXT')
仔细检查您的变量名称是否匹配 -- Python 和 ArcPy 区分大小写。
In_Lake = arcpy.GetParameterAsText(0) ## was In_lake
Out_Buff = arcpy.GetParameterAsText(1)
Buffer_Distance = arcpy.GetParameterAstext(2)
in_cities = arcpy.GetParameterAsText(3)
clipped_cities = GetParameterAsText(4) ## was cliped_cities
New_Table = arcpy.GetParameterAsText(5)
Join_Input = arcpy.GetParameteAsText(6)
# step 1 create a buffer around the lakes
arcpy.Buffer_analysis(In_Lake, Out_Buff, Buffer_Distance)
# Step 2 Clip all cities that fall within the buffer
arcpy.Clip_analysis(in_cities, Out_Buff, clipped_cities) ## was out_Buff
除非你想保留湖缓冲区,否则它不一定需要是用户指定的输入参数。考虑改用 the in_memory workspace——请注意,一旦工具执行完成,其中的任何数据都将被删除。
Out_Buff = r'in_memory\lakeBuffer'
对于您并不真正关心的 任何 中间特征 class 或 table 可以使用类似的策略。但是,有时使用这些中间结果来验证您的工具是否在每一步都按照您的预期进行是很有用的。