Плагины

Вопросы связанные с работой ГИС Аксиома
Аватара пользователя
gisamap
Пользователь
Сообщения: 402
Зарегистрирован: 18 окт 2019, 11:03

Re: Плагины

Сообщение gisamap » 12 янв 2025, 19:04

Ну это точно не ко мне.
Возможно раздел FAQ имел бы смысл , но это все к администраторам сайта (форума)
Матвеич писал(а): 12 янв 2025, 18:41 добрый вечер gisamap !!!

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

P.S. Может имеет смысл собрать , систематизировать наши вопросы и Ваши ответы и создать рабочие примеры
с инструкцией для чайников (новичков) для освоения Python API ГИС Аксиома
Аватара пользователя
Матвеич
Пользователь
Сообщения: 124
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

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

Уважаемый gisamap !
Извините, я был уверен , что Вы один из модераторов форума, судя по уровню ответов. Благодарю Вас за помощь!!!
Аватара пользователя
gisamap
Пользователь
Сообщения: 402
Зарегистрирован: 18 окт 2019, 11:03

Re: Плагины

Сообщение gisamap » 12 янв 2025, 20:09

Ничего страшного.
Я больше занимаюсь написанием плагинов и параллельно тестирую axipy
Матвеич писал(а): 12 янв 2025, 20:02 Уважаемый gisamap !
Извините, я был уверен , что Вы один из модераторов форума, судя по уровню ответов. Благодарю Вас за помощь!!!
Аватара пользователя
Матвеич
Пользователь
Сообщения: 124
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

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

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

создаю объект "Дуга"
ar1=axipy.Arc(axipy.Rect(356.65,261.80,367.787,270.27),180,270)

кликаю по объекту "Дуга" границы геометрии

xmin=356.66 xmax=362.2185
ymin=261.80 ymax=266.035
нач. угол =180 , кон. угол=270

В чем причина ошибки , что заданные значения RECT отличаются от графики?
Аватара пользователя
Александр
Администратор
Сообщения: 568
Зарегистрирован: 18 апр 2019, 11:21

Re: Плагины

Сообщение Александр » 27 янв 2025, 20:50

Дуга представляет собой часть эллипса, а сам эллипс вписан в прямоугольник.
Когда вы создаете дугу, вы задаёте прямоугольник (Rect), который определяет размеры этого эллипса.
Таким образом, дуга — это часть эллипса, которая помещается в этот прямоугольник.
Границы геометрии обозначают область, которая охватывает саму дугу.
arc.png
arc.png (4.12 КБ) 4285 просмотров
На изображении:
• Зелёным цветом обозначена дуга.
• Зелёным пунктиром показан эллипс.
• Синим пунктиром выделен прямоугольник, который определяет размеры эллипса.
• Красным пунктиром обозначен прямоугольник, который представляет границы геометрии дуги.

Ниже код, создающий это изображение

Code: Select all

from PySide2.QtCore import Qt
table = axipy.data_manager['test']
rect = axipy.Rect(356.65,261.80,367.787,270.27)
arc = axipy.Arc(rect, 180, 270)

print(rect)
print(axipy.Rect(arc.center.x - arc.xRadius, arc.center.y - arc.yRadius, arc.center.x + arc.xRadius, arc.center.y + arc.yRadius))
print(arc.bounds)

style = axipy.LineStyle(2, Qt.green)
f_arc = axipy.Feature(geometry = arc, style = style)

style = axipy.PolygonStyle(0)
style.set_pen(9, Qt.green)
f_ellipse = axipy.Feature(geometry = axipy.Ellipse(rect), style = style)

style = axipy.PolygonStyle(0)
style.set_pen(9, Qt.blue)
f_rectangle = axipy.Feature(geometry = axipy.Rectangle(rect), style = style)

style = axipy.PolygonStyle(0)
style.set_pen(9, Qt.red)
f_bounds = axipy.Feature(geometry = axipy.Rectangle(arc.bounds), style = style)

table.insert([f_bounds, f_rectangle, f_ellipse, f_arc])
Аватара пользователя
Матвеич
Пользователь
Сообщения: 124
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

Сообщение Матвеич » 28 янв 2025, 08:07

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

Re: Плагины

Сообщение Матвеич » 03 фев 2025, 07:49

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

В пользовательской панели создал кнопку "точечный знак".
....................
self._action5: ActionButton = ActionButton(
title=self.tr("точечный знак"),
icon=st3 ,
on_click=self.uz_point,
enable_on=axipy.ObserverManager.HasTables,
tooltip=self.tr("точечный топографический условный знак")
)
position = Position(tr("Условные знаки"), tr("Минимальный"))
position.add(self._action5)
............

Задача: при нажатии на кнопку указатель курсора
должен стать крестиком. Указателем курсора намечаем место в карте и кликая ЛКМ строим точечный условный знак с заранее
выбранным стилем точечного объекта.(такая же задача стоит для линейных ,площадных и текстовых объектов).

Итог: все мои попытки оживить кнопку с помощью - MapTool - Инструмент окна карты,ActiveToolPanel - Панель активного инструмента
не привели к успеху.

Возможно ли привести рабочий пример с созданием точечного знака
используя пользовательскую кнопку.
Аватара пользователя
Дмитрий
Администратор
Сообщения: 89
Зарегистрирован: 04 июн 2019, 11:33

Re: Плагины

Сообщение Дмитрий » 03 фев 2025, 11:36

Здравствуйте!
Для решения данной задачи Вам необходимо реализовать свой инструмент карты от класса axipy.MapTool https://axipy.axioma-gis.ru/6.1/referen ... ool.cursor.
Курсор в этом случае устанавливается при загрузке в методе load

Как образец можно посмотреть пример "Пример Инструмента axipy", который входит в поставку и расположен в каталоге plugins/ru_axioma_gis_axipy_example_tool.
Аватара пользователя
Матвеич
Пользователь
Сообщения: 124
Зарегистрирован: 09 янв 2024, 14:43

Re: Плагины

Сообщение Матвеич » 07 фев 2025, 17:42

Благодарю Дмитрий ! К сожалению таких примеров на которые Вы указываете мало.

Надо создать текстовый объект в карте. Стиль текста D431 , size=10 ,цвет текста красный

# Получение активного окна
win = axipy.view_manager.active # Получаем активное окно
# Получение редактируемого слоя активного окна карты
editable_layer = win.editable_layer
# Получение таблицы редактируемого слоя
table = editable_layer.data_object

# задаем новый стиль текста
new_style = axipy.TextStyle("D431", 10,0,Qt.red)
gtxt='Проба пера'
text = axipy.Text.create_by_style(gtxt, ls.points[0], style=new_style, view=win, angle=0)

table.insert(axipy.Feature(geometry=text))


print(new_style) >>> Font ("D431", 2, 10, 16711680)
создается текстовый объект "Проба пера" , в нужном месте , но стиль текста "Carlito"

Где допущена ошибка, почему стиль текста не изменяется ?
Аватара пользователя
gisamap
Пользователь
Сообщения: 402
Зарегистрирован: 18 окт 2019, 11:03

Re: Плагины

Сообщение gisamap » 08 фев 2025, 09:07

Добрый день
Замените строчку
table.insert(axipy.Feature(geometry=text))
на
table.insert(axipy.Feature(geometry=text,style= new_style))
Матвеич писал(а): 07 фев 2025, 17:42 Благодарю Дмитрий ! К сожалению таких примеров на которые Вы указываете мало.

Надо создать текстовый объект в карте. Стиль текста D431 , size=10 ,цвет текста красный

# Получение активного окна
win = axipy.view_manager.active # Получаем активное окно
# Получение редактируемого слоя активного окна карты
editable_layer = win.editable_layer
# Получение таблицы редактируемого слоя
table = editable_layer.data_object

# задаем новый стиль текста
new_style = axipy.TextStyle("D431", 10,0,Qt.red)
gtxt='Проба пера'
text = axipy.Text.create_by_style(gtxt, ls.points[0], style=new_style, view=win, angle=0)

table.insert(axipy.Feature(geometry=text))


print(new_style) >>> Font ("D431", 2, 10, 16711680)
создается текстовый объект "Проба пера" , в нужном месте , но стиль текста "Carlito"

Где допущена ошибка, почему стиль текста не изменяется ?
Ответить