2015-07-15 2 views
0

Я пытаюсь изменить первый скрипт и преобразовать его в пользовательский инструмент ArcGIS. Первый скрипт принимает форму шейпов и преобразует их в слои объектов, а затем пересекает новые функциональные слои и, наконец, копирует вывод в файл формы. Эта часть скрипта работает.ArcMap 10.2: Пользовательский инструмент ArcGIS.

Второй скрипт должен быть модифицированной версией первого скрипта. Большинство скриптов работают, за исключением count = int (arcpy.GetCount_management («output_features»). GetOutput (0)), arcpy.AddMessage и arcpy.AddWarning.

Я не уверен, если сценарий является правильным для подсчета = INT (arcpy.GetCount_management ("output_features"). GetOutput (0))

В настоящее время возвращается arcpy.AddMessage «Новый класс объектов (полный путь выходных_файлов), был создан! "

Я хочу, чтобы он сказал: «Создан новый класс объектов« selected_parcels »!»

Кроме того, я хочу, чтобы arcpy.AddWarning возвращал количество строк в selected_parcels. В настоящее время я получаю сообщение об ошибке, указывающее, что счетчик не существует.

#Current code: 

#Part I 


try: 
    userWorkspace = raw_input("What is the workspace location?") 
    input_class = raw_input("What is the input feature class name?") 
    select_class = raw_input("What is the select feature class name?") 
    output_class = raw_input("What is the output feature class name?") 

    arcpy.env.workspace = userWorkspace 
    arcpy.env.overwriteOutput = True 
    arcpy.MakeFeatureLayer_management(input_class,"lyr") 
    arcpy.MakeFeatureLayer_management(select_class,"select_lyr") 
    arcpy.SelectLayerByLocation_management('lyr','intersect','select_lyr') 
    arcpy.CopyFeatures_management("lyr",output_class) 
    print "A new feature class",output_class," has been created!" 
except: 
    print arcpy.GetMessages() 

#Part II 


import arcpy 

arcpy.env.workspace = r"C:\Users\tpmorris\ProgramingAndScripting\Lab 5 Data\Lab 5 Data" 
arcpy.env.overwriteOutput = True 

input_features = arcpy.GetParameterAsText(0) 
selected_parcels = arcpy.GetParameterAsText(1) 
output_features = arcpy.GetParameterAsText(2) 



arcpy.MakeFeatureLayer_management("coa_parcels.shp","lyr") 
arcpy.MakeFeatureLayer_management("floodplains.shp","select_lyr") 
arcpy.SelectLayerByLocation_management('lyr','intersect','select_lyr') 
arcpy.CopyFeatures_management("lyr","selected_parcels") 


count = int(arcpy.GetCount_management("output_features").getOutput(0)) 
arcpy.AddMessage("A new feature class" + output_features + "has been created!") 
arcpy.AddWarning("There are" + count + "in the new feature class.") 

Любые указания будут оценены!

ответ

1

Я считаю, что проблема с вашим кодом заключается в том, что при вызове arcpy.GetCount_management вы передаете строку («output_features») в качестве параметра, а не переменную output_features.

Что-то, как это должно работать:

result = arcpy.GetCount_management(output_features) 
 
count = int(result.getOutput(0)) 
 
arcpy.AddWarning("There are {0} in the new feature class.".format(count))

Удачи!

Том

+0

Это исправлено. спасибо –