Системы Координат

Термины «проекция» и «координатная система» иногда используются один вместо другого, но, на самом деле, понятия, которые они отражают, различны.

Проекция – это уравнения или наборы уравнений, которые содержат математические параметры для карты. Точное число и природа параметров зависят от типа проекции. Проекция – это метод уменьшения искажений карты, вызванных кривизной земной поверхности или, точнее говоря, проекция компенсирует недостатки отображения карты на плоскости в двух измерениях, в то время как координаты существуют в трёх измерениях.

Координатная система – когда параметрам проекции присваиваются определенные значения, они становятся системой координат. Система координат – это набор параметров, описывающих координаты, одна из которых является проекцией.

Системы Координат (СК) представлены типом axipy.cs.CoordSystem. Объекты типа CoordSystem могут быть созданы, используя:

Примечание

Полный список доступных функций создания систем координат содержится в документации к классу axipy.cs.CoordSystem.

Например:

merc = CoordSystem.from_epsg(3395)
merc.name
>>> 'Меркатора WGS84'

Функция from_string() позволяет создавать СК из “универсального представления” - строки с префиксом типа, двоеточием и значением. Возможные префиксы: proj, wkt, epsg, prj.

Например:

crs = CoordSystem.from_string('prj:Earth Projection 12, 62, "m", 0')
crs.name
>>> 'Робинсона NAD27'

Трансформация координат

Координаты любой точки земной поверхности в разных системах координат будут различаться, переход от одной системы координат к другой осуществляется с помощью специальных формул преобразований и набора параметров,используемых в этих формулах.

Функционал по переходу координат из одной СК в другую выделен в отельный класс axipy.cs.CoordTransformer. Он позволяет преобразовывать координаты между двумя СК.

Например:

from axipy import *

transformer = CoordTransformer('epsg:4326', 'epsg:26953')
coordinate = (55.76, 37.6)
result = transformer.transform(coordinate)
f"Point({result.x}, {result.y})"
>>> 'Point(8513601.095442554, 9873107.576049749)'