Плагины

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

Re: Плагины

Сообщение Матвеич » 09 янв 2025, 14:56

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

Дано : В активном окне открыто n-е кол-во таблиц (слоев) rкарты.
Необходимо: во время выполнения цикла по количеству слоев(таблиц) карты ,
текущий слой (таблицу ) карты делать изменяемым(ой) т.е. редактируемым(ой)

Это возможно или каждый раз слой(таблицу) карты делать изменяемым в ручном режиме ?
Аватара пользователя
gisamap
Пользователь
Сообщения: 384
Зарегистрирован: 18 окт 2019, 11:03

Re: Плагины

Сообщение gisamap » 10 янв 2025, 10:11

Добрый день.
не совсем понятна постановка задачи .
Вы хотите из axipy назначать нужному слою свойство редактируемог редактируемого ?
У каждой карты ( class Map ) существует свойство
https://axipy.axioma-gis.ru/6.1/referen ... able_layer
property editable_layer: VectorLayer
Матвеич писал(а): 09 янв 2025, 14:56 Доброго времени суток !

Дано : В активном окне открыто n-е кол-во таблиц (слоев) rкарты.
Необходимо: во время выполнения цикла по количеству слоев(таблиц) карты ,
текущий слой (таблицу ) карты делать изменяемым(ой) т.е. редактируемым(ой)

Это возможно или каждый раз слой(таблицу) карты делать изменяемым в ручном режиме ?
Аватара пользователя
Матвеич
Пользователь
Сообщения: 118
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

Сообщение Матвеич » 10 янв 2025, 13:26

Добрый день gisamap !

Уточнение :

цикл по слоям активной карты

for layer in axipy.view_manager.active.map.layers

как сделать каждый текущий слой карты редактируемым ?
..............
выполняем с объектами редактируемого слоя операции
...........

propertyeditable_layer: VectorLayer - как правильно написать этот оператор для редактирования текущего слоя карты ?

P.S. Подскажите в Python API есть оператор аналогичный Alter Object (MapBasic) который изменяет
форму , положение и графический тип объекта. Меня интересует изменение положения объектов: точки, линии и т.д.
Аватара пользователя
Матвеич
Пользователь
Сообщения: 118
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

Сообщение Матвеич » 10 янв 2025, 13:56

или для изменения положения объектов применяем :

Для простых операций типа сдвиг, масштабирование и поворот, рекомендуется использовать shift(), scale(), rotate() соответственно.
Аватара пользователя
gisamap
Пользователь
Сообщения: 384
Зарегистрирован: 18 окт 2019, 11:03

Re: Плагины

Сообщение gisamap » 10 янв 2025, 14:03

feature.geometry=feature.geometry.shift(dx,dy)
Матвеич писал(а): 10 янв 2025, 13:56 или для изменения положения объектов применяем :

Для простых операций типа сдвиг, масштабирование и поворот, рекомендуется использовать shift(), scale(), rotate() соответственно.
Аватара пользователя
Матвеич
Пользователь
Сообщения: 118
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

Сообщение Матвеич » 10 янв 2025, 15:31

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

Re: Плагины

Сообщение Матвеич » 12 янв 2025, 13:31

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

Помогите понять логику перемещения графических объектов в axipy Python API Гис Аксиома
Этот пример приведен в руководстве разработчика. Запускаю в редакторе - выполнение .Все Океюшки .
Могу догадываться , что пример это только фрагмент в процессе изменения положения объекта , а связь
применения оператора (изменения положения объекта ) с записями таблицы остается за скобками.


Координаты линии пересчитывает и печатает правильно, а как увидеть графическое изменение положения этой линии
в окне открытой таблицы.

На практике у меня в окне открыта таблица "земля.tab" СК План-схема. Отрисована линия begin=(300.0 200.0) end=(320.0 220.0).
Как увидеть на карте изменение положения этой линии ? т.е. линия с координатами Line begin=(300.0 200.0) end=(320.0 220.0) должна переехать в другое место с новыми координатами begin=(320.0 220.0) end=(340.0 240.0).
Если возможно приведите тестовый рабочий пример !!! или дополните этот пример.




******** ПРИМЕР ИЗ РУКОВОДСТВА ***************************
import axipy
from PySide2.QtGui import QTransform

dx = 20
dy = 20
scale_x = 1
scale_y = 1
# Исходная линия
line = axipy.Line((300,200), (320,220))
print('source>>', line)
'''
source>> Line begin=(300.0 200.0) end=(320.0 220.0)
'''
# Формируем матрицу
# Сначала масштабируем
tr = QTransform.fromScale(scale_x, scale_y)
# Затем перемещаем
tr *= QTransform.fromTranslate(dx, dy)
# Применяем матрицу
line_transform = line.affine_transform(tr)
print('transformed>>', line_transform)
'''
transformed>> Line begin=(320.0 220.0) end=(340.0 240.0)
'''
#***************************************************
Аватара пользователя
gisamap
Пользователь
Сообщения: 384
Зарегистрирован: 18 окт 2019, 11:03

Re: Плагины

Сообщение gisamap » 12 янв 2025, 17:23

Добрый день.
Во вложении пример
Требуется что бы была открыта таблица с именем name_table='test_sift_object' можете изменить
далее в цикле проходим по всем записям и изменяем геометрию ( сдвигаем )
ft.geometry=ft.geometry.shift(20,20)
в место ft.geometry.shift(20,20) может быть любая вновь созданная геометрия
Матвеич писал(а): 12 янв 2025, 13:31 Доброго времени суток форумчане !

Помогите понять логику перемещения графических объектов в axipy Python API Гис Аксиома
Этот пример приведен в руководстве разработчика. Запускаю в редакторе - выполнение .Все Океюшки .
Могу догадываться , что пример это только фрагмент в процессе изменения положения объекта , а связь
применения оператора (изменения положения объекта ) с записями таблицы остается за скобками.


Координаты линии пересчитывает и печатает правильно, а как увидеть графическое изменение положения этой линии
в окне открытой таблицы.

На практике у меня в окне открыта таблица "земля.tab" СК План-схема. Отрисована линия begin=(300.0 200.0) end=(320.0 220.0).
Как увидеть на карте изменение положения этой линии ? т.е. линия с координатами Line begin=(300.0 200.0) end=(320.0 220.0) должна переехать в другое место с новыми координатами begin=(320.0 220.0) end=(340.0 240.0).
Если возможно приведите тестовый рабочий пример !!! или дополните этот пример.




******** ПРИМЕР ИЗ РУКОВОДСТВА ***************************
import axipy
from PySide2.QtGui import QTransform

dx = 20
dy = 20
scale_x = 1
scale_y = 1
# Исходная линия
line = axipy.Line((300,200), (320,220))
print('source>>', line)
'''
source>> Line begin=(300.0 200.0) end=(320.0 220.0)
'''
# Формируем матрицу
# Сначала масштабируем
tr = QTransform.fromScale(scale_x, scale_y)
# Затем перемещаем
tr *= QTransform.fromTranslate(dx, dy)
# Применяем матрицу
line_transform = line.affine_transform(tr)
print('transformed>>', line_transform)
'''
transformed>> Line begin=(320.0 220.0) end=(340.0 240.0)
'''
#***************************************************
Вложения
shiftObject.py
(271 байт) 19 скачиваний
Аватара пользователя
gisamap
Пользователь
Сообщения: 384
Зарегистрирован: 18 окт 2019, 11:03

Re: Плагины

Сообщение gisamap » 12 янв 2025, 17:26

Смотрю и не вижу вложение с примером наверное забыл
Матвеич писал(а): 10 янв 2025, 13:26 Добрый день gisamap !

Уточнение :

цикл по слоям активной карты

for layer in axipy.view_manager.active.map.layers

как сделать каждый текущий слой карты редактируемым ?
..............
выполняем с объектами редактируемого слоя операции
...........

propertyeditable_layer: VectorLayer - как правильно написать этот оператор для редактирования текущего слоя карты ?

P.S. Подскажите в Python API есть оператор аналогичный Alter Object (MapBasic) который изменяет
форму , положение и графический тип объекта. Меня интересует изменение положения объектов: точки, линии и т.д.
Вложения
SetEditableLayer.py
(474 байт) 16 скачиваний
Аватара пользователя
Матвеич
Пользователь
Сообщения: 118
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

Сообщение Матвеич » 12 янв 2025, 18:41

добрый вечер gisamap !!!

благодарю за ответ , буду разбираться.

P.S. Может имеет смысл собрать , систематизировать наши вопросы и Ваши ответы и создать рабочие примеры
с инструкцией для чайников (новичков) для освоения Python API ГИС Аксиома
Ответить