Добавление векторного слоя в GUI с условием where

Ответить
Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Добавление векторного слоя в GUI с условием where

Сообщение rhot » 24 май 2012, 08:56

Добавляю через GUI векторный слой, выбирая нужные объекты с помощью 'where'. Получаю ошибку:

Код: Выделить всё

Traceback (most recent call last):
  File "/usr/local/grass-7.0.svn/etc/gui/wxpython/gui_core/f
orms.py", line 674, in OnApply

self)
  File "/usr/local/grass-7.0.svn/etc/gui/wxpython/lmgr/layer
tree.py", line 1463, in GetOptData

self.ChangeLayer(layer)
  File "/usr/local/grass-7.0.svn/etc/gui/wxpython/lmgr/layer
tree.py", line 1564, in ChangeLayer

l_active = chk, l_hidden = hidden, l_opacity = opac,
l_render = False)
  File
"/usr/local/grass-7.0.svn/etc/gui/wxpython/core/render.py",
line 1205, in ChangeLayer

layer.SetCmd(kargs['command'])
  File
"/usr/local/grass-7.0.svn/etc/gui/wxpython/core/render.py",
line 280, in SetCmd

self.cmd  = utils.CmdToTuple(cmd)
  File
"/usr/local/grass-7.0.svn/etc/gui/wxpython/core/utils.py",
line 485, in CmdToTuple

dcmd[str(key)] = str(value).replace('"', '')
UnicodeEncodeError
:
'ascii' codec can't encode characters in position 10-18:
ordinal not in range(128)
С консоли вывести получается командами:

Код: Выделить всё

d.mon start=wx0
d.vect map=v_tax layer=1 type=area,boundary where="vozr='Молод'" --v
Векторный слой имеет свыше 100К объектов + 15 полей с атрибутами в кодировке cp1251
--
Ubuntu 11.10
GRASS 7.0.svn50461 (2012)
./configure --with-postgres=yes --with-motif=yes --with-cairo=yes --with-freetype=yes --with-postgres-includes=/usr/include/postgresql --with-tcltk-includes=/usr/include/tcl8.4 --with-freetype-includes=/usr/include/freetype2
driver:dbf
database:$GISDBASE/$LOCATION_NAME/$MAPSET/
schema:
group:
--
В чём может быть проблема? В wxPython? Как её решить?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Добавление векторного слоя в GUI с условием where

Сообщение Александр Мурый » 24 май 2012, 09:18

Первый совет (так часто отвечают сами разработчики): попробовать то же на стабильной версии (6.4.*). GRASS 7.0 по большому счёту не предназначена для "продакшена". Хотя wxGUI там посвежее, чем в 6.4.*, но обычно важные обновления бэкпортируются в стабильную ветку.

Как я понял по сообщениям, что-то не так с кодировками в wxGUI.

P.S. Так если получается из ком. строки, может, так и делать? :)
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Добавление векторного слоя в GUI с условием where

Сообщение rhot » 24 май 2012, 09:29

В том то и дело, что для "продакшена" мне удобней в 7.0 работать, есть много новых функций. =Р

В 6.4.1 такая же ошибка:

Код: Выделить всё

Traceback (most recent call last):
  File
"/usr/lib/grass64/etc/wxpython/gui_modules/menuform.py",
line 920, in OnOK

cmd = self.OnApply(event)
  File
"/usr/lib/grass64/etc/wxpython/gui_modules/menuform.py",
line 935, in OnApply

self)
  File
"/usr/lib/grass64/etc/wxpython/gui_modules/layertree.py",
line 1327, in GetOptData

self.ChangeLayer(layer)
  File
"/usr/lib/grass64/etc/wxpython/gui_modules/layertree.py",
line 1428, in ChangeLayer

l_active=chk, l_hidden=hidden, l_opacity=opac,
l_render=False)
  File
"/usr/lib/grass64/etc/wxpython/gui_modules/render.py", line
1045, in ChangeLayer

layer.SetCmd(kargs['command'])
  File
"/usr/lib/grass64/etc/wxpython/gui_modules/render.py", line
322, in SetCmd

self.cmd  = utils.CmdToTuple(cmd)
  File "/usr/lib/grass64/etc/wxpython/gui_modules/utils.py",
line 478, in CmdToTuple

dcmd[str(key)] = str(value)
UnicodeEncodeError
:
'ascii' codec can't encode characters in position 10-18:
ordinal not in range(128)
amuriy писал(а):Так если получается из ком. строки, может, так и делать?
А как мне включать/выключать этот вектор через командную строку тогда?

Занимаюсь сбором тренировочных данных для полуавтоматической классификации, требуется постоянное включение/выключение векторов. С d.erase ведь весь экран очистится, а не только вектор.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Добавление векторного слоя в GUI с условием where

Сообщение Александр Мурый » 24 май 2012, 22:21

rhot писал(а): А как мне включать/выключать этот вектор через командную строку тогда?
Добро пожаловать в рецепты :)
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Добавление векторного слоя в GUI с условием where

Сообщение rhot » 25 май 2012, 08:53

Вы забываете, что я пользуюсь версией 7.0, а в ней некоторые принятые в 6.4 модули d.* упразднены, в т.ч. d.save.

Есть ли аналогичные команды управления для новой архитектуры вывода (Cairo, wx)?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Добавление векторного слоя в GUI с условием where

Сообщение Александр Мурый » 26 май 2012, 08:45

rhot писал(а): Есть ли аналогичные команды управления для новой архитектуры вывода (Cairo, wx)?
Вроде бы, нет.

"Костыльное" решение -- исп-ть для подобных задач 6.4.*+консоль (а может, стоит старый-добрый Tcl/Tk попробовать?)
Редактор материалов, модератор форума

Ответить

Вернуться в «GRASS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя