Плагины

Вопросы связанные с работой ГИС Аксиома
Аватара пользователя
Матвеич
Сообщения: 79
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 10 апр 2024, 10:53

Уважаемый Дмитрий !!! Благодарю Вас помощь, осталось крайнее усилие...
Детали в файле ...
Вложения
Уважаемый Дмитрий.docx
(514.33 КБ) 17 скачиваний
Аватара пользователя
Дмитрий
Сообщения: 62
Зарегистрирован: 04 июн 2019, 08:33

Re: Плагины

Сообщение Дмитрий » 10 апр 2024, 15:00

Текст Вашего плагина очень большой и ориентироваться сложно. Как вариант, у Вас два плагина в одном. Этого делать нельзя и нужно объединить. Должен остаться один.
Аватара пользователя
Матвеич
Сообщения: 79
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 10 апр 2024, 15:36

Дмитрий доброго времени суток !

Благодарю Вас за подсказку , буду пробовать.
Аватара пользователя
Матвеич
Сообщения: 79
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 16 апр 2024, 08:58

Форумчане доброго времени суток!

Дано: открытая ,средствами ГИС Аксиома , таблица земля с текстовыми объектами : 1,2,3,4
Необходимо: удалить все записи из таблицы земля и сохранить изменения.(очистить землю)
Мои действия :
----------------- фрагмент программы --------------------
# выбрать все записи в таблице земля
qry = axipy.data_manager.query('select * from земля')
# удалить выбранные записи
for f in qry.items():
print('>>>', f.id)
qry.remove(f.id)
- --------------------------------------------------------------------

печать идентификаторов записей
>>> 0;1;2;3
и удаляет только объекты 1;2. Таблица Запрос формируется правильно (выбраны все записи в таблице земля).
Запускаю еще раз "очистить землю" и все удаляется и мы добиваемся своей цели.

Вопрос : Каким образом одним махом удалить выбранные записи ?
Аватара пользователя
Александр
Сообщения: 433
Зарегистрирован: 18 апр 2019, 08:21

Re: Плагины

Сообщение Александр » 16 апр 2024, 13:46

Ниже приведен пример кода, который создает таблицу, вставляет несколько записей, сохраняет её и затем удаляет все записи.

Code: Select all

import axipy as axp

# создаём таблицу
schema = axp.Schema(
axp.Attribute.integer('Num'),
axp.Attribute.string('Name', 150)
)
table = provider_manager.tab.create_open('path/to/datadir/newtable.tab', schema)

# вставляем записи
table.insert(axp.Feature(Num = 1, Name = 'Объект 1'))
table.insert(axp.Feature(Num = 2, Name = 'Объект 2'))
table.insert(axp.Feature(Num = 3, Name = 'Объект 3'))
table.insert(axp.Feature(Num = 4, Name = 'Объект 4'))

# сохраняем таблицу
table.commit()

# получаем список всех идентификаторов
ids = []
for item in table.items():
ids.append(item.id)

# удаляем записи
table.remove(ids)

Если требуется удалить несохранённые данные, то можно воспользоваться Table.rollback()
Аватара пользователя
Матвеич
Сообщения: 79
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 16 апр 2024, 16:44

Александр Доброго времени суток !
Благодарю Вас ! Все получилось .
Ваши бы примеры да в руководство !
Если я правильно понял , то все операции с записями в таблице производим только через идентификаторы записей ?
Аватара пользователя
Александр
Сообщения: 433
Зарегистрирован: 18 апр 2019, 08:21

Re: Плагины

Сообщение Александр » 16 апр 2024, 17:30

Матвеич писал(а): 16 апр 2024, 16:44 Если я правильно понял , то все операции с записями в таблице производим только через идентификаторы записей ?
Да.
Аватара пользователя
gisamap
Сообщения: 217
Зарегистрирован: 18 окт 2019, 08:03

Re: Плагины

Сообщение gisamap » 17 апр 2024, 09:26

Добрый день.
Удалить все записи можно проще
qry = axipy.data_manager.query_hide('DELETE FROM земля')
Матвеич писал(а): 16 апр 2024, 08:58 Форумчане доброго времени суток!

Дано: открытая ,средствами ГИС Аксиома , таблица земля с текстовыми объектами : 1,2,3,4
Необходимо: удалить все записи из таблицы земля и сохранить изменения.(очистить землю)
Мои действия :
----------------- фрагмент программы --------------------
# выбрать все записи в таблице земля
qry = axipy.data_manager.query('select * from земля')
# удалить выбранные записи
for f in qry.items():
print('>>>', f.id)
qry.remove(f.id)
- --------------------------------------------------------------------

печать идентификаторов записей
>>> 0;1;2;3
и удаляет только объекты 1;2. Таблица Запрос формируется правильно (выбраны все записи в таблице земля).
Запускаю еще раз "очистить землю" и все удаляется и мы добиваемся своей цели.

Вопрос : Каким образом одним махом удалить выбранные записи ?
Аватара пользователя
Матвеич
Сообщения: 79
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 17 апр 2024, 10:45

доброго времени суток gimap !

Попробовал Ваш вариант : qry = axipy.data_manager.query_hide('DELETE FROM земля')
выдает ошибку : (вероятно что-то не подключено ?)

File "C:\Users\User\AppData\Roaming\ESTI\Axioma.GIS\v5\installed_modules\modules\MapTopik\__init__.py", line 365, in map_clear
qry = axipy.data_manager.query_hide('DELETE FROM земля')
AttributeError: 'DataManager' object has no attribute 'query_hide'
Аватара пользователя
gisamap
Сообщения: 217
Зарегистрирован: 18 окт 2019, 08:03

Re: Плагины

Сообщение gisamap » 17 апр 2024, 11:33

Ошибся
query_hidden
qry = axipy.data_manager.query_hidden('DELETE FROM земля')
Матвеич писал(а): 17 апр 2024, 10:45 доброго времени суток gimap !

Попробовал Ваш вариант : qry = axipy.data_manager.query_hide('DELETE FROM земля')
выдает ошибку : (вероятно что-то не подключено ?)

File "C:\Users\User\AppData\Roaming\ESTI\Axioma.GIS\v5\installed_modules\modules\MapTopik\__init__.py", line 365, in map_clear
qry = axipy.data_manager.query_hide('DELETE FROM земля')
AttributeError: 'DataManager' object has no attribute 'query_hide'
Ответить