gis.stackexchange.com/q/268973/115
ТИРОВАТЬ: Я откатил версии PyCharm, и он снова работает. ЯСНО проблема IDE, а не проблема сценария. Версия PyCharm 2017.2.4 - это то, к чему я откатился.
Итак, у меня есть сценарий, который отлично работал для меня до сегодняшнего дня. По какой-то причине скрипт будет работать без ошибок, если я не использую PyCharm (Community Edition 2017.3.3) в режиме отладки. Мне нужно использовать отладчик, поэтому, когда он выдает ошибки без причины и останавливает сценарий, это делает его бессмысленной IDE.
Причина, по которой я знаю, что это проблема PyCharm, заключается в том, что я скопировал весь скрипт в другую IDE (Wing), установил тот же интерпретатор Python и прошел его в режиме отладки, и он работал нормально, без ошибок.
Я провел обширное тестирование ошибок, чтобы убедиться, что их нет в моем скрипте; они не. Сценарий должен работать как написано. Он продолжает говорить, что наборы данных не существуют, или входные объекты для инструментов arcpy (пространственная программа, которая подключается к python через библиотеку под названием «arcpy»), не имеют значений, когда они есть. Это не проблема скрипта, это проблема IDE.
Кто-нибудь сталкивался с этим и знает, как это исправить?
У меня нет никаких конкретных настроек среды, я просто подключил туда интерпретатор Python ArcGIS для проекта, чтобы я мог получить доступ к библиотеке arcpy и все. Следует отметить, что этот интерпретатор является python 2.7, потому что ArcGIS еще не совместим с python 3+. Я сомневаюсь, что это как-то связано с этим, но вы никогда не знаете ...
Это кусок скрипта, вызывающий проблемы (если у вас нет / не знаете, как использовать ArcGIS, не пытайтесь запустить его, он не будет работать для вас). Я хочу отметить, что если я поставлю точку останова наqh_buffer
строка будет прервана после попытки запуска этой строки с дугообразным сообщением об ошибке, в котором будут указаны недопустимые входные данные / параметры (они не являются недействительными, написано именно так, как должно быть, и я проверил, чтоqhPolys
создается и существует). ТОГДА, если я перенесу точку останова наcrop_intersect
в строке и запустите его в режиме отладки, он проходит по всему коду, включая оператор буфера, но затем выдает ошибку с ошибкой 000732 «Входные данные: набор данных # 1; # 2 не существует или не поддерживается» (оба они существуют, потому что я жестко запрограммировал их в выходной каталог раньше, и они создаются просто отлично).
import arcpy
arcpy.env.overwriteOutput = True
svyPtFC = r"C:\Users\xxx\GIS_Testing\Crop_Test.shp"
select_query = '"FID" = 9'
qhPolys = arcpy.Select_analysis(svyPtFC, 'in_memory/qhPolys', select_query)
qh_buffer = arcpy.Buffer_analysis(qhPolys, 'in_memory/qh_buffer', '50
Meters')
cropFID = '"FID" = 1'
cropPoly = arcpy.Select_analysis(svyPtFC, 'in_memory/cropPoly', cropFID)
crop_intersect = arcpy.Intersect_analysis([[cropPoly, 1], [qh_buffer, 2]],
r'C:\Users\xxx\GIS_Testing\crp_int.shp')
feature_count = arcpy.GetCount_management(crop_intersect)
print feature_count
Не имеет смысла, что это может вызвать ошибку в строке буфера, если я поставлю точку останова рядом с ней, но затем, если я переместлю точку останова дальше вниз, эта строка будет работать нормально, и она просто сломается на следующей точке останова. объясняет, почему это работает, когда вы просто нажимаете «Выполнить» вместо того, чтобы делать режим отладки. Нет точек останова!