Данный модуль является модулем ядра. Модуль состоит из подмодулей.
Пример минимального приложения с инициализацией ядра:
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 ( |
---|---|
Результат: | открытый объект данных |
Тип результата: | |
Исключение: |
|
Формат описания объектов данных индивидуален для каждого провайдера данных, однако многие элементы используются для всех провайдеров данных
Общие для всех элементы:
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
- путь к файлу, который требуется открыть
Для СУБД:
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 ( |
---|---|
Результат: | созданный объект данных |
Тип результата: | |
Исключение: |
|
Функция может создавать таблицы в файлах формата 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
указывает допустимые границы координат объектов.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)