Интеграция скрипта ArcGIS 10.5 в скрипт / инструмент, не выводящий данные - PullRequest
0 голосов
/ 20 февраля 2019

В ArcGIS 10.5 У меня есть скрипт Python, который хорошо работает в окне Python, однако я пытаюсь интегрировать его в инструмент, главным образом, чтобы использовать функцию ввода arcpy.GetParametersAsText() для имен входных и выходных файлов/ дорожки.

Основная цель скрипта - вывести ряд полей атрибутов из определенного класса пространственных объектов в очень специфический формат для очень специфического текстового файла (файл строки опроса .PTS для WinFrog, если кто-нибудь это знает).

Первоначально, это происходило из-за ошибки Unicode при попытке .write() к объекту файла, созданному с .open().Как вы можете видеть ниже, я попробовал множество вещей, чтобы гарантировать, что файловый объект 'outfile' действительно является обычным файловым объектом, а не Unicode, который определяется только путем в начале строки.

В любом случае, теперь скрипт будет запускаться и завершаться 'успешно' , создавая файл в каталоге, указанном при вводе инструмента / скрипта.Но теперь это не заполнено никакими данными!Опять же, скрипт работает каждый раз, когда при запуске из окна python любая помощь будет потрясающей.Полностью понимаю, что это ошибка пользователя, и я, скорее всего, упускаю из виду что-то простое.

Скрипт ниже, извините за любые проблемы с отображением, новинка в переполнении стека.

import arcp

fcpath = str(arcpy.GetParameterAsText(0))
fc = "r\"" + fcpath + "\""
fields = ["LineName", "Lat_SOL" , "Lon_SOL", "Lat_EOL", "Lon_EOL", "Northing_SOL", "Easting_SOL", "Northing_EOL", "Easting_EOL", "Shape_Length"]
filelocation = str(arcpy.GetParameterAsText(1))
outfile = open("r\"" + filelocation + ".PTS", 'w')

with arcpy.da.SearchCursor(fc, fields) as cursor:
    for row in cursor:
        r1 = ("0,{0},0,0.000,0.000,1,2,65280,0,0.200,0,0,1.000,1,0\n".format(row[0]))
        r2 = ("1,{0},{1},0.0m,0.0m,{2},{3},0.000\n".format(row[1], row[2], row[5], row[6]))
        r3 = ("1,{0},{1},0.0m,0.0m,{2},{3},{4}\n".format(row[3], row[4], row[7], row[8], row[9]))

        outfile.write(r1 + r2 + r3)

1 Ответ

0 голосов
/ 26 февраля 2019

В параметрах панели инструментов установите для параметра типа данных 0 значение FeatureClass, а для параметра 1 значение File.Оба должны быть входами.

import arcpy

fcpath = arcpy.GetParameterAsText(0)
fields = ["LineName", "Lat_SOL" , "Lon_SOL", "Lat_EOL", "Lon_EOL", "Northing_SOL", "Easting_SOL", "Northing_EOL", "Easting_EOL", "Shape_Length"]
filelocation = arcpy.GetParameterAsText(1)
outfile = open(filelocation, 'w')

    with arcpy.da.SearchCursor(fc, fields) as cursor:
        for row in cursor:
            r1 = ("0,{0},0,0.000,0.000,1,2,65280,0,0.200,0,0,1.000,1,0\n".format(row[0]))
            r2 = ("1,{0},{1},0.0m,0.0m,{2},{3},0.000\n".format(row[1], row[2], row[5], row[6]))
            r3 = ("1,{0},{1},0.0m,0.0m,{2},{3},{4}\n".format(row[3], row[4], row[7], row[8], row[9]))

            outfile.write(r1 + r2 + r3)
...