2016-03-18 6 views
1

Я создал инструмент скрипта python и смог выбрать слой, предоставив классы объектов, как показано ниже.не удалось выбрать слой для ввода многоугольника в дуге

import arcpy 

arcpy.env.workspace = "C:/project/pmms.gdb" 

arcpy.SelectLayerByLocation_management('stops', 'intersect', 'adminarea') 

Но когда я использовал следующий код, чтобы принимать пользовательский ввод многоугольник (FeatureSet), он терпит неудачу и сообщение об ошибке дается. Я создал параметр FeatureSet, чтобы разрешить пользователю предоставлять интерактивный многоугольный вход. Пожалуйста, предоставьте свои предложения. сообщение

import arcpy 

fc = "C:/project/pmms.gdb/stops" 

infeat = arcpy.GetParameterAsText(0) 

arcpy.SelectLayerByLocation_management(fc, 'intersect', infeat) 

Ошибка:

Traceback (most recent call last): 
    File "C:\project\scripts\select.py", line 7, in <module> 
    arcpy.SelectLayerByLocation_management(fc, 'intersect', infeat) 
    File "c:\program files\arcgis\desktop10.1\arcpy\arcpy\management.py", line 6585, in SelectLayerByLocation 
    raise e 
ExecuteError: Failed to execute. Parameters are not valid. 
ERROR 000368: Invalid input data. 
Failed to execute (SelectLayerByLocation). 
+0

Отформатированный код и сообщение об ошибке –

ответ

1

Из ArcGIS help page on the Select Layer By Location function:

вход должен быть особенностью слоя; это не может быть класс объектов.

Включите операцию Make Feature Layer перед тем, как попытаться выбрать, и она должна работать должным образом.

fc = "C:/project/pmms.gdb/stops" 
arcpy.MakeFeatureLayer_management(fc, 'stops') 
arcpy.SelectLayerByLocation_management('stops', 'intersect', infeat) 

Просто убедитесь, что вы уже не имеют слой в ArcMap оглавлении, что называется stops (который, предположительно, почему предыдущая версия кода работает правильно).

+0

Привет, Спасибо за это, теперь он отлично работает. Могу ли я назначить результат из MakeFeatureLayer_management для некоторой переменной и использовать ее? или мне нужно использовать SaveLayerFile_management? – user2439245

+0

Бросьте 'lyrName = 'останавливается' там, а затем вы можете использовать' lyrName' (или любую другую переменную, которую вы хотите) вместо строки :) – Erica

 Смежные вопросы

  • Нет связанных вопросов^_^