Плагины

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

Re: Плагины

Сообщение Матвеич » 16 янв 2024, 12:09

Александр, я не нашел тригонометрических функций в API Python , подскажите пожалуйста где они находятся
Аватара пользователя
Александр
Сообщения: 439
Зарегистрирован: 18 апр 2019, 08:21

Re: Плагины

Сообщение Александр » 17 янв 2024, 06:54

Они находятся в стандартной библиотеке Python в модуле math
Аватара пользователя
Матвеич
Сообщения: 86
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 17 янв 2024, 07:19

Следовательно - знание питона необходимо. Охоньки хо хо Где мои 40 лет
Аватара пользователя
Матвеич
Сообщения: 86
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 21 янв 2024, 12:23

Уважаемый Александр! Доброго дня.
На Вас уповаю


Запускаем програмку MapTopik
C:\Аксиома\Axi_Topik\pythonProject\MapTopik.py

****************************************************
from axipy import Position, ActionButton
from axipy import init_axioma, mainwindow
from axipy import tr

# Инициализация ядра
app = init_axioma()

# Пункты меню MapTopik
# 1

button = ActionButton("Открыть землю", on_click=lambda: print("запустить мою процедуру открытия таблица земля") ,
tooltip="открыть рабочую таблицу MapTopik земля.tab")
position = Position(tr("Основные"), tr("Команды"))
position.add(button)

# 2
button = ActionButton("Проверка структуры редактируемой таблицы", on_click=lambda: print("trig_2"),
tooltip="соответствие структуры *.Tab стандарту MapTopik")
position = Position(tr("Основные"), tr("Команды"))
position.add(button)

# классификатор условных знаков
# 3
button = ActionButton("Классификатор условных знаков", on_click=lambda: print("trig_3"),
tooltip="вызов классификатора точечных, линейных, площадных, текстовых условных знаков ")
position = Position(tr("Основные"), tr("Команды"))
position.add(button)

# 4
button = ActionButton("Точечный условный знак", icon="C:\\Аксиома\\Axi_Topik\\pythonProject\\images\\16px\\voronoi.png",
on_click=lambda: print("trig_4"), tooltip="создание точечного условного знака")
position = Position(tr("Основные"), tr("Команды"))
position.add(button)


# Создание и отображение главного окна Аксиомы
mainwindow.show()
# Запуск основного цикла приложения

app.exec_()

***********************************************



Как правильно организовать запуск процедуры OpenEarth.py из моей папки C:\Аксиома\Axi_Topik\pythonProject\buttons при выборе пункта меню “Открыть землю”.
Или при нажатии иконки на пользовательской панели инструментов
Аватара пользователя
Александр
Сообщения: 439
Зарегистрирован: 18 апр 2019, 08:21

Re: Плагины

Сообщение Александр » 22 янв 2024, 16:02

Если создать файл OpenEarth.py рядом с файлом MapTopik.py

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

def test():
    print('test')
то запустить функцию test по нажатию на кнопку "Открыть землю" можно так:

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

from OpenEarth import test

........................

button = ActionButton("Открыть землю", on_click=test,
                      tooltip="открыть рабочую таблицу MapTopik земля.tab")
position = Position(tr("Основные"), tr("Команды"))
position.add(button)

...............
Если файл OpenEarth.py в подпапке buttons, то импорт слегка поменяется:

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

from buttons.OpenEarth import test
Аватара пользователя
Матвеич
Сообщения: 86
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 23 янв 2024, 08:51

Милостивый Государь АЛЕКСАНДР !!! Примите мои уверения в совершеннейшем к Вам почтении!!!! Кричу как кот Матроскин -"УРА ЗАРАБОТАЛО !!!"
Аватара пользователя
Матвеич
Сообщения: 86
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 25 янв 2024, 13:52

модуль Cr_point.py (пункт меню - точечный условный знак )



открываем таблицу в окне , слой редактируемый и выбираем пункт меню : "точечный условный знак"
в консоли пишет :

построение точки
Точка (1000.0, 1000.0)
но в окне не создает точку


from axipy import (CoordSystem, Point, Rect, Unit)
def Cr_p():

print('построение точки')
cs = CoordSystem.from_units(Unit.m, Rect(0, 0, 1000000, 1000000))
point = Point(1000, 1000, cs)
print('Точка ({}, {})'.format(point.x, point.y))

'''
>>> Точка (1000, 1000)
'''
Аватара пользователя
Матвеич
Сообщения: 86
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 25 янв 2024, 14:00

Где можно почитать о создании графических объектов (точка, линия , полилиния, регион)
и посмотреть хотя бы рабочие примитивные тексты модулей (запустил и работает)
Аватара пользователя
Александр
Сообщения: 439
Зарегистрирован: 18 апр 2019, 08:21

Re: Плагины

Сообщение Александр » 25 янв 2024, 20:28

Матвеич писал(а): 25 янв 2024, 13:52 но в окне не создает точку
Чтобы точка появилась на карте, её нужно добавить в таблицу, например на косметический слой карты.

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

import axipy


def put_point():
    win = axipy.view_manager.active                 # Получаем активное окно
    if not isinstance(win, axipy.MapView):          # Активное окно - окно карты
        print("Сделайте активным окно карты")
        return

    cs = axipy.CoordSystem.from_units(axipy.Unit.m, axipy.Rect(0, 0, 1000000, 1000000))
    point = axipy.Point(1000, 1000, cs)
    
    table = win.map.cosmetic.data_object            # Данные косметического слоя
    # Создадим запись для вставки в таблицу
    feature = axipy.Feature(geometry=point, style=axipy.PointStyle.create_mi_compat(35, 0))
    table.insert(feature)                           # Вставляем запись в таблицу
    print("OK")


put_point()
Матвеич писал(а): 25 янв 2024, 14:00 Где можно почитать о создании графических объектов (точка, линия , полилиния, регион)
тут: https://axioma-gis.ru/axipy/dev-guide/5.1/user_guide/geometry.html
и посмотреть хотя бы рабочие примитивные тексты модулей (запустил и работает)
Примеры есть в Модулях, на вкладке Основные - Настройки - Модули. Нужно нажать галку "Показать примеры".
Чтобы посмотреть расположение примера его нужно выбрать и нажать на кнопку Показать в правой части диалога.
Аватара пользователя
Матвеич
Сообщения: 86
Зарегистрирован: 09 янв 2024, 11:43

Re: Плагины

Сообщение Матвеич » 26 янв 2024, 08:01

Александр !
Благодарю Вас ! Толковый, точный с пояснениями работоспособный ответ !!! Хоть что-то начинаю понимать.
Переход от MapBasic к Python API трудный процесс.
Жаль , что в руководстве разработчика , нет подобных примеров с описанием работы . (Скопировал, запустил - работает)

Александр ! Примите мои уверения в совершеннейшем к Вам почтении.
Ответить