CoordSystem

class axioma.cs.CoordSystem

Данный класс позволяет производить работу с координатными проекциями

EARTH_SPHERE_RADIUS

Радиус сферы

DEGREES_TO_RADIANS

Коэффициент пересчета градусов в радианы

DEGREES_TO_METERS

Градусы в метры для сферы

METERS_TO_DEGREES

Метры в градусы для сферы

LAT_LON_EPSG

EPSG для координатной системы Широта/Долгота

RADIANS_TO_DEGREES

Коэффициент пересчета радиан в градусы

Тип исходных данных при формировании объекта координатной системы SourceType:
Наименование величины Значение Описание
St_Unknown 0 Не определен
St_Prj 1 Строка MapBasic
St_Proj4 2 Строка Proj4
St_Epsg 3 Значение EPSG
St_Wkt 4 Строка Wkt
forward(p_in, p_out)

Получение картезианских координат из градусов точки

Параметры:
  • p_in (QPointF) – входное значение
  • p_out (QPointF) – выходное значение
Результат:

успешность операции. True выполнено успешно. False преобразование не произведено

Тип результата:

bool

forward(r_in, r_out)

Получение картезианских координат из градусов rect

Параметры:
  • r_in (QRectF) – входное значение
  • r_out (QRectF) – выходное значение
Результат:

успешность операции. True выполнено успешно. False преобразование не произведено

Тип результата:

bool

forward(list_in, list_out)

Получение картезианских координат из градусов массива точек

Параметры:
  • list_in (list [QPointF]) – входное значение
  • list_out (list [QPointF]) – выходное значение
Результат:

успешность операции. True выполнено успешно. False преобразование не произведено

Тип результата:

bool

inverse(p_in, p_out)

Получение географических координат (градусов) из картезианских координат для точки

Параметры:
  • p_in (QPointF) – входное значение
  • p_out (QPointF) – выходное значение
Результат:

успешность операции. True выполнено успешно. False преобразование не произведено

Тип результата:

bool

inverse(r_in, r_out)

Получение географических координат (градусов) из картезианских координат для rect

Параметры:
  • r_in (QRectF) – входное значение
  • r_out (QRectF) – выходное значение
Результат:

успешность операции. True выполнено успешно. False преобразование не произведено

Тип результата:

bool

inverse(list_in, list_out)

Получение географических координат (градусов) из картезианских координат для массива точек

Параметры:
  • list_in (list [QPointF]) – Входное значение
  • list_out (list [QPointF]) – Выходное значение
Результат:

Успешность операции. True выполнено успешно. False преобразование не произведено

Тип результата:

bool

clone()

Клонирует текущую КС

Результат:Копию координатной системы
Тип результата:CoordSystem
unit()

Единицы измерения в текущей КС

Результат:Единица измерения
Тип результата:LinearUnit
isEqual(coordSystem)

Сравнение с другой координатной системой

Параметры:coordSystem (CoordSystem) – КС для сравнения
Результат:Результат сравнения. True, если эквивалентны
Тип результата:bool
isLatLong()

Является ли данная КС широтой/долготой

Результат:True, если да
Тип результата:bool
proj4Str()

Формирует строку формата proj4

Результат:Строка proj4 или пустая строка если аналога не найдено
Тип результата:str
PRJStr()

Формирует строку формата MapBasic

Результат:Строка prj или пустая строка если аналога не найдено
Тип результата:str
epsg()

Пробует найти номер EPSG. Сначала ищем в описании проекции PRJ файла, затем пробуем использовать алгоритмы OGR, и наконец, ищем соответствие в файле epsg.xml

Результат:Соответствующее проекции значение EPSG. -1 если соответствующей не найдено
Тип результата:int
exportToWKT()

Экспорт в формат WKT

Результат:Строка WKT или пустая строка если аналога не найдено
Тип результата:str
setDescription(description)

Задание описания координатной системы

Параметры:description (str) – Описание координатной системы
description()

Описание координатной системы

Результат:Описание координатной системы
Тип результата:str
cartesianDistance(point_1, point_2)

Расчет расстояния между двумя точками в текущей проекции

Параметры:
  • point_1 (QPointF) – первая точка
  • point_2 (QPointF) – вторая точка
Результат:

расстояние между точками

Тип результата:

float

sphericalDistance(point_1, point_2)

Расчет расстояния между двумя точками на сфере

Параметры:
  • point_1 (QPointF) – первая точка
  • point_2 (QPointF) – вторая точка
Результат:

расстояние между точками, успешность операции

Тип результата:

float, bool

isNonEarth()

Является ли данная КС декартовой

Результат:True, если да
Тип результата:bool
rectNumericCoordSys()

Возвращает MBR для КС

Результат:Прямоугольник для данной КС в случае успешного выполнения или пустой QRectF
Тип результата:QRectF
setRectCoordSystem(rect)

Установка нового ограничивающего прямоугольника для проекции

Параметры:rect (QRectF) – Новое значение прямоугольника
static testEqual(cs1, cs2)

Сравнение двух координатных систем

Параметры:
  • cs1 (CoordSystem) – Первая КС для сравнения
  • cs2 (CoordSystem) – Вторая КС для сравнения
Результат:

Результат сравнения. True, если эквивалентны

Тип результата:

bool

affineTransform()

Возвращает матрицу афинного преобразования, если таковая имеется

Результат:Матрица афинного преобразования
Тип результата:QTransform
setAffineTransform(value)

Установка нового значения матрицы преобразования для проекции

Параметры:value (QTransform) – Матрица
getSemiMajor()

Большая полуось эллипсоида

Результат:Размер большой полуоси
Тип результата:float
getSemiMinor()

Малая полуось эллипсоида

Результат:Размер малой полуоси
Тип результата:float
getInvFlattening()

Коэффициент сжатия эллипсоида

Результат:Значение коэффициента
Тип результата:float
getTOWGS84Params()

Коэффициенты преобразования датума к WGS84

Результат:Коэффициенты. Если получить невозможно, возникает ошибка.
Тип результата:list [ str ]
class SourceData

Описывает источник, на базе которого была создана координатная система

type

Тип источника

Type:SourceType
string

Исходные данные при формировании координатной системы

Type:str
axioma.cs.sourceData()

Данные, которые использовались при создании данной координатной системы

Тип результата:SourceData

Пример использования:

from axioma.cs import *
from PyQt5.QtCore import *

cs_latlon = CoordSysFactory.defaultCoordSysFactory().createFromEPSG(4326)
cs_merc = CoordSysFactory.defaultCoordSysFactory().createFromPRJ("Earth Projection 12, 62, \"m\", 0")

# forward / inverse
if cs_latlon is not None:
    p_out = QPointF()
    p_in = QPointF(45.0, 45.0)
    res = cs_latlon.forward(p_in, p_out)
    if res:
        print ("Forward (%f, %f) res=%r" % (p_out.x(), p_out.y(), res))
    p_out1= QPointF()
    res = cs_latlon.inverse(p_out, p_out1)
    if res:
        print ("Inverse (%f, %f) res=%r" % (p_out1.x(), p_out1.y(), res))

#rect
rect = cs_merc.rectNumericCoordSys();
print ("Rect of CoordSystem: (%.1f %.1f) (%.1f %.1f)" % (rect.left(), rect.top(), rect.right(), rect.bottom()))

#distance
print( "Cartesian distance %f" % cs_latlon.cartesianDistance(QPointF(0.0, 0.0), QPointF(45.0, 45.0)))
sd = cs_latlon.sphericalDistance(QPointF(0.0, 0.0), QPointF(45.0, 45.0))
print( "Spherical distance %f (success=%r)" % (sd[0], sd[1]))

#compare
print ("Compare CoordSystems: %r %r" % ( cs_latlon.isEqual(cs_merc), cs_latlon.isEqual(cs_latlon)))

# export
print( cs_latlon.PRJStr())
print( cs_latlon.proj4Str())
print( cs_latlon.exportToWKT())