Модуль ядра 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)