2016-04-18 6 views
0

Я пытаюсь создать свой собственный инструмент для использования в 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') 

[Here is a picture of my tool in ArcMap] 1

ответ

0

Внимательно проверьте, что ваши имена переменных совпадают - 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' 

Подобная стратегия может быть использована для любого промежуточного класса или таблицы, которые вы на самом деле не волнует. Однако иногда бывает полезно иметь эти промежуточные результаты, чтобы убедиться, что ваш инструмент делает то, что вы ожидаете на каждом шагу.

+0

Thank you, Это помогло решить мою проблему –