Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 3, 2017 19:12:11

Yana21
Зарегистрирован: 2017-05-31
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

выдаёт ошибку

import arcpy #Подключение модуля инструментов геообработки
import sys #Подключение модуля стандартной библиотеки Python
from math import * #Подключение модуля математических функций

#Задается функция, которая считает вероятность
def probability_function(a, K, M):
return (((M*a)**K)*exp(-M*K))/K

#Входные параметры
table = sys.argv #Длины участков железной дороги L
K = float(sys.argv) #Число пожаров K
M = float(sys.argv) #Среднее число пожаров M

in_field = u'Dlina;Srednee_chislo_PZ' #Название входных полей
out_field = u'Probability' #Название выходного поля

#Создаем курсор, считывающий пары из значений входных полей, кото-рый поместит #их в список in_field_values
rows = arcpy.SearchCursor(table, ‘', ’', in_field)
in_field_values =
for row in rows:
tmp =
in_field_values.append(tmp)
del row
del rows

#Создаем курсор, обновляющий значения выходного поля, в цикле пере-бираем все #строки таблицы, считая и записывая значения; теперь значения а и М берем из #соответствующих пар значений
rows = arcpy.UpdateCursor(table, ‘', ’', out_field)
i = 0
for row in rows:
a = in_field_values
M = in_field_values
row.setValue(out_field, probability_function(a, K, M))
rows.updateRow(row)
i += 1
del row
del rows
Выдаёт ошибку UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 1-6: ordinal not in range(128)
Что не так, подскажите

Офлайн

#2 Июнь 3, 2017 20:08:17

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

выдаёт ошибку

В начале файла *.py не указана его кодировка. Попробуйте удалить все русские комментарии



Офлайн

#3 Июнь 4, 2017 11:44:55

Yana21
Зарегистрирован: 2017-05-31
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

выдаёт ошибку

doza_and
В начале файла *.py не указана его кодировка. Попробуйте удалить все русские комментарии
как указать его кодировку?

Офлайн

#4 Июнь 4, 2017 13:07:25

Yana21
Зарегистрирован: 2017-05-31
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

выдаёт ошибку

Теперь вот что пишет

Прикреплённый файлы:
attachment Безымянныйпр.png (170,9 KБ)

Офлайн

#5 Июнь 4, 2017 16:41:22

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

выдаёт ошибку

Ну дык вы не передали параметр при вызове скрипта. Скорее всего вы просто нажали в PyScripter кнопку пуск, а у вас скрипт берет данные из параметров коммандной строки

 .....
table = sys.argv[1] #Длины участков железной дороги L
K = float(sys.argv[2]) #Число пожаров K
M = float(sys.argv[3]) #Среднее число пожаров M
.....
тоесть его нужно запускать из коммандной строки примерно так: python.exe mod1.py “путь_к_таблице_с_длиннами_участков” 4 5
где 4 у-во пожаров, 5 среднее число пожаров(вписать свое)
ну или в самом PyScripter -е в меню пуск есть “парметры коммандной строки” нужно поставить галку “использовать параметры коммандной строки” и прописать параметры.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 4, 2017 16:42:59)

Офлайн

#6 Июнь 5, 2017 21:11:14

Yana21
Зарегистрирован: 2017-05-31
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

выдаёт ошибку

PEHDOM
Ну дык вы не передали параметр при вызове скрипта. Скорее всего вы просто нажали в PyScripter кнопку пуск, а у вас скрипт берет данные из параметров коммандной строки
Вообще мне нужно это проделать в питоне в arcgis, там по идеи должно появиться окно, куда я должна вписать данные(путь к таблице, число пожаров)..но там мне пишет вот что

Прикреплённый файлы:
attachment питон1.png (22,1 KБ)

Офлайн

#7 Июнь 5, 2017 23:42:29

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

выдаёт ошибку

Yana21
Вообще мне нужно это проделать в питоне в arcgis, там по идеи должно появиться окно, куда я должна вписать данные(путь к таблице, число пожаров)..но там мне пишет вот что
Не знаю как там в архгисе, окуда оно окно должно брать, но ваш скрипт кушает эти данные из параметров коммандной строки.
sys.argv это список где каждый элемент это параметр коммандной строки.
sys.argv(0) - это собственно имя самого скрипта, остальные по факту того что вы туда передали. Когда вы обращаетесь к sys.argv(1) вы получаете indexError потому как вы (или архгис) не передали никаких других параметров в коммандной строке и вас в sys.argv толко один элемент.
Возможно вы должны вызывать этот скрипт из другого где оно спрашивает путь к таблице и число пожаров, и передать ему веденные данные?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 5, 2017 23:42:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version