Модуль ядра core¶
Данный модуль является модулем ядра. Модуль состоит из подмодулей.
Список подмодулей¶
Список классов¶
- Core - Базовый сервисный класс
- Notification - Уведомление
- NotificationManager - Менеджер уведомлений
- PythonProgressHandler - Обработчик прогресса длительной операции
- PythonTask - Базовый класс для выполняемой задачи
- PythonTaskManageable
- SettingsManager - Менеджер настроек
- TaskThreadPool - класс который управляет выполнением длительных задач
- Операции общего назначения
Пример минимального приложения с инициализацией ядра:
import axioma.core import sys from PyQt5.QtGui import * a = QGuiApplication(sys.argv) core = axioma.core.Core() core.initialize()
Функции¶
-
axioma.core.open_json(json)¶ Открыть объект данных по описанию в формате JSON
- Параметры
json (
dict[str,QJsonValue]) – описание элементов в формате JSON- Результат
открытый объект данных
- Тип результата
- Исключение
RuntimeException –
RuntimeException- ошибка открытия объекта данныхBasicException –
BasicException- внутренняя ошибка
Формат описания объектов данных индивидуален для каждого провайдера данных, однако многие элементы используются для всех провайдеров данных
Общие для всех элементы:
openWith- текстовый идентификатор, который определяет, каким провайдером требуется открыть объект данных. Если этот элемент не задан, то будет произведена попытка автоматического подбора провайдера данныхaccess- если установлено значениеrилиro, то объект данных будет открыт только на чтение; если установлено значениеrw, то объект данных будет открыт на чтение и запись. Если этот элемент не задан, то поведение программы определяется провайдеромsrc- строка, определяющая источник данных (см. далее). Требуется для всех провайдеровobj- строка, определяющая объект данных. Может отсутствовать.prj- строка в формате PRJ, определяющая координатную систему для пространственных объектов данных. Так-же есть возможность задания координатной системы в другом формате. Для этого необходимо добавить префикс типа. Поддерживаемые значения: «proj:», «wkt:», «epsg:», «prj:». Если префикс явно не указан, рассматривается как строка MapBasic. В случае отсутствия поведение программы определяется провайдером.charset- строка, задающая кодировку символов для объекта данных.
Перечень всех доступных текстовых идентификаторов можно получить следующим образом:¶import axioma.app for dp in axioma.app.core.dataProviders(): print(dp.class_id())
Для файловых провайдеров:
src- путь к файлу, который требуется открыть
Для файлов формата sqlite:
src- путь к файлу, который требуется открытьobj- название таблицы, которую надо открыть из sqlite файла
Пример открытия sqlite файла:¶# Пусть в папке C:/sqlite есть файл world.sqlite, # и в нем надо открыть таблицу countries json = { "src": "C:/sqlite/world.sqlite", "obj": "countries" } table = axioma.core.open_json(json) axioma.app.mainWindow.registerDataObject(table)
Для СУБД:
src- доменное имя или IP-адрес сервераport- номер порта для подключенияdb- имя базы данных на сервереuser- имя пользователя для подключенияpassword- пароль для подключенияsql- текст SQL-запроса к базе данных. В случае отсутствия этого элемента имя таблицы в базе данных берется из поляobj
Для СУБД PostgreSQL поле
objдолжно иметь вид"<schema>"."<table>"Пример использования СУБД PostgreSQL:¶json = { "openWith": "PgDataProvider", "src": "<Адрес сервера БД>", "port": 5432, "db": "<Имя базы данных>", "user": "<Имя прользователя>", "password": "<Пароль>", "obj": '"DataAxi"."World"', "access": "ro" }
Для файлов в формате CSV:
src- имя файлаhasNamesRow- еслиTrue, то провайдер ожидает, что в первой строке CSV-файла будут записаны имена столбцов таблицы; еслиFalse, то провайдер ожидает, что в первой строке CSV-файла будет записана первая строка данныхdelimiter- какой символ используется в качестве разделителя полей. По умолчанию используется запятая
Пример открытия CSV:¶import axioma.core table = axioma.core.open_json({'src': '/tmp/world.csv', "hasNamesRow": False, "delimiter": ",", "charset": "windows-1251"})
Для растров:
bindingPoints- в этом элементе можно задать привязку (см. пример использования)элемент
worldзадает координаты точки в координатной системе картыэлемент
layerзадает координаты точки в координатной системе растраэлемент
descriptionне является обязательным и используется для записи текстового описания для точки
prj- строка в формате PRJ, определяющая координатную систему. Поддерживаются указание КС в другом формате (см. выше).
Пример использования:¶import axioma.core json = { "src": "~/test-data/images/TrueMarble.png", "bindingPoints" : [ { "world" : [ 0.0, 0.0 ], "layer": [0.0, 0.0], "description": "Base" }, { "world" : [ 10, 0 ], "layer": [20, 0]}, { "world" : [ 0, 10 ], "layer": [0, 20]} ], "prj": "epsg:4284" } t = axioma.core.open_json(json) axioma.app.mainWindow.registerDataObject(t)
-
axioma.core.create_from_json(json)¶ Создать объект данных по описанию в формате JSON
- Параметры
json (
dict[str,QJsonValue]) – описание элементов в формате JSON- Результат
созданный объект данных
- Тип результата
- Исключение
RuntimeException –
RuntimeException- ошибка создания объекта данныхBasicException –
BasicException- внутренняя ошибка
Функция может создавать таблицы в файлах формата MapInfo TAB и таблицы в памяти
Для описания создаваемых объектов используются следующие параметры:
src- строка, определяющая местоположение источника данных. Это может быть либо путь к файлу с расширением TAB, либо пустая строка (для таблицы, размещаемой в памяти)obj- строка, определяющая название объекта данныхspec- для создаваемых таблиц задает схему таблицы. Задается массивом объектов, содержащих следующие атрибуты:name- имя атрибута. Может не указываться для геометрического атрибутаtype- тип атрибута. Допустимые значения:string- строкаint,int32- 32-битное целоеint16- 16-битное целоеint64- 64-битное целоеdouble- вещественное число с плавающей запятойdecimal- вещественное число с фиксированной запятойbool- логическое значениеdate- датаtime- времяdatetime- дата и времяgeometry- геометрия
lengthдля атрибутов типаstringиdecimalуказывает максимальную длинуprecisionдля атрибутов типаdecimalуказывает число знаков после запятойprjдля атрибута типаgeometryзадает географическую проекцию в формате MapInfo PRJ. Поддерживаются указание КС в другом формате (см. выше).boundsдля атрибута типаgeometryуказывает допустимые границы координат объектов.Записывается в виде массива [Xmin Ymin Xmax Ymax]
Пример использования:¶import axioma import axioma.core json = { "src": "", "obj": "test", "spec": [ {"name": "CITY", "type": "string", "length": 20}, {"name": "COUNTRY", "type": "int", "length": 30}, {"type": "geometry", "prj": "CoordSys Earth Projection 26, 28, 7, 0, 60"} ] } t = axioma.core.create_from_json(json) axioma.app.mainWindow.registerDataObject(t)