# CoordSystem - Система Координат (СК)

class axipy.CoordSystem

  Система координат (СК). СК описывает каким образом реальные объекты на земной поверхности могут быть представлены в виде двумерной проекции. Выбор СК для представления данных зависит от конкретных исходных условий по представлению исходных данных.

  Примечание

  Проверка на идентичность параметров двух СК производится простым сравнением.

  Примечание

  Для получения текстового представления можно воспользоваться функцией `str`.

  Поддерживается создание СК посредством следующих вариантов:

  - Из строки MapInfo PRJ `from_prj()`

  - Из строки PROJ `from_proj()`

  - Из строки WKT `from_wkt()`

  - Из значения EPSG `from_epsg()`

  - План/Схему с указанием единиц измерения и охвата `from_units()`

  Пример создания СК разного типа.

      cs_epsg = CoordSystem.from_epsg(4326)
      cs_prj = CoordSystem.from_prj('1, 104')
      cs_proj = CoordSystem.from_proj('+proj=longlat +ellps=WGS84 +no_defs')
      cs_wkt = CoordSystem.from_wkt('GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]')
      # Создание из строки с указанием вида формата
      crs1 = CoordSystem.from_string('epsg:4326')
      crs2 = CoordSystem.from_string('prj:1,104')

  Проверка на идентичность координатных систем производится простым сравнением.

      cs1 = CoordSystem.from_prj("1, 104")
      cs2 = CoordSystem.from_prj("1, 104")
      if cs1 == cs2:
          print("Координатные системы эквивалентны.")
      '''
      >>> Координатные системы эквивалентны.
      '''

  Классовые методы:

  `current`() | Текущая установленная система координат (СК).
  `from_epsg`(code) | Создает координатную систему по коду EPSG.
  `from_prj`(prj) | Создает координатную систему из строки MapBasic.
  `from_proj`(proj) | Создает координатную систему из строки proj.
  `from_string`(string) | Создает систему координат из строки.
  `from_units`(unit[, rect]) | Создает декартову систему координат.
  `from_wkt`(wkt) | Создает координатную систему из строки WKT.
  `set_current`(coordsystem) | Устанавливает новую текущую систему координат.

  Свойства:

  `default_calc_mode` | Возвращает режим расчета для данной СК по умолчанию.
  `epsg` | Возвращает код EPSG если существует, иначе None.
  `inv_flattening` | Возвращает полярное сжатие.
  `lat_lon` | Возвращает признак, является ли СК широтой/долготой.
  `name` | Возвращает наименование системы координат.
  `non_earth` | Возвращает признак, является ли СК декартовой.
  `prj` | Возвращает строку prj формата MapBasic или пустую строку, если аналога не найдено.
  `proj` | Возвращает строку PROJ или пустую строку, если аналога не найдено.
  `rect` | Устанавливает или возвращает максимально допустимый охват.
  `semi_major` | Возвращает большую полуось.
  `semi_minor` | Возвращает малую полуось.
  `supported_calc_modes` | Возвращает возможный перечень режимов расчета для данной СК.
  `title` | Возвращает наименование системы координат.
  `unit` | Возвращает единицы измерения.
  `wkt` | Возвращает строку WKT или пустую строку, если аналога не найдено.

  Методы:

  `clone`() | Возвращает копию координатной системы.
  `convert_from_degree`() | Переводит из градусов в единицы измерения системы координат.
  `convert_to_degree`() | Переводит из единиц измерения системы координат в градусы.
  `is_equal`(other[, ignore_rect]) | Сравнивает координатные системы, с возможностью не учитывать охват.
  `to_string`() | Текстовое представление в виде <тип>:<строка>.

  Специальные методы:

  `__copy__`() | Поверхностная копия объекта.
  `__deepcopy__`(_mem_dict) | Глубокая копия объекта.
  `__eq__`(other) | Оператор равенства (==).
  `__repr__`() | Официальное строковое представление объекта при вызове `repr()`.
  `__str__`() | Неформальное строковое представление объекта при вызове `str` или `print()`.

  __copy__() → CoordSystem

    Поверхностная копия объекта. (функция `copy.copy()`)

  __deepcopy__(_mem_dict: dict) → CoordSystem

    Глубокая копия объекта. (функция `copy.deepcopy()`)

  __eq__(other: object) → bool

    Оператор равенства (==).

  __repr__() → str

    Официальное строковое представление объекта при вызове `repr()`.

  __str__() → str

    Неформальное строковое представление объекта при вызове `str` или `print()`.

  clone() → CoordSystem

    Возвращает копию координатной системы.

  convert_from_degree(value: Union[Rect, QRectF]) → Rect
  convert_from_degree(value: Union[Tuple[float, float], Pnt, QPointF]) → Pnt
  convert_from_degree(value: List[Union[Tuple[float, float], Pnt, QPointF]]) → List[Pnt]

    Переводит из градусов в единицы измерения системы координат.

  convert_to_degree(value: Union[Rect, QRectF]) → Rect
  convert_to_degree(value: Union[Tuple[float, float], Pnt, QPointF]) → Pnt
  convert_to_degree(value: List[Union[Tuple[float, float], Pnt, QPointF]]) → List[Pnt]

    Переводит из единиц измерения системы координат в градусы.

    Пример.

        csMercator = CoordSystem.from_prj("10, 104, 7, 0")
        p_out = csMercator.convert_to_degree((1000000, 1000000))
        print(p_out)
        '''
        >>> (8.983152841195214 9.005882635078796)
        '''

  classmethod current() → CoordSystem

    Текущая установленная система координат (СК).

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

  property default_calc_mode: CalcMode

    Возвращает режим расчета для данной СК по умолчанию.

  property epsg: Optional[int]

    Возвращает код EPSG если существует, иначе None.

  classmethod from_epsg(code: int) → CoordSystem

    Создает координатную систему по коду EPSG.

    См.также

    Подробнее см. EPSG

    Параметры:

      code – Стандартное значение EPSG.

  classmethod from_prj(prj: str) → CoordSystem

    Создает координатную систему из строки MapBasic.

    Параметры:

      prj – Строка MapBasic. Допустима короткая нотация.

    Пример.

        csMercator = CoordSystem.from_prj('10, 104, 7, 0')
        csLatLon = CoordSystem.from_prj('Earth Projection 1, 104')
        csMercator = CoordSystem.from_prj('NonEarth 0, \'m\'')

  classmethod from_proj(proj: str) → CoordSystem

    Создает координатную систему из строки proj.

    См.также

    Подробнее см. PROJ

    Параметры:

      proj – Строка proj.

  classmethod from_string(string: str) → CoordSystem

    Создает систему координат из строки. Строка состоит из двух частей: префикса и строки представления СК. Возможные значения префиксов: «proj», «wkt», «epsg», «prj».

    Параметры:

      string – Строка.

  classmethod from_units(unit: LinearUnit, rect: Optional[Union[Rect, QRectF]] = None) → CoordSystem

    Создает декартову систему координат.

    Параметры:

      - unit – Единицы измерения системы координат.

      - rect – Охват системы координат. По умолчанию, `axipy.Rect(xmin=-10000, ymin=-10000, xmax=10000, ymax=10000)`.

    Пример.

        ne = CoordSystem.from_units(Unit.km, Rect(-100, -100, 100, 100))

  classmethod from_wkt(wkt: str) → CoordSystem

    Создает координатную систему из строки WKT.

    См.также

    Подробнее см.

      WKT

    Параметры:

      wkt – Строка WKT.

  property inv_flattening: float

    Возвращает полярное сжатие.

  is_equal(other: CoordSystem, ignore_rect: bool = False) → bool

    Сравнивает координатные системы, с возможностью не учитывать охват.

  property lat_lon: bool

    Возвращает признак, является ли СК широтой/долготой.

  property name: str

    Возвращает наименование системы координат.

  property non_earth: bool

    Возвращает признак, является ли СК декартовой.

  property prj: str

    Возвращает строку prj формата MapBasic или пустую строку, если аналога не найдено.

  property proj: str

    Возвращает строку PROJ или пустую строку, если аналога не найдено.

  property rect: Rect

    Устанавливает или возвращает максимально допустимый охват.

  property semi_major: float

    Возвращает большую полуось.

  property semi_minor: float

    Возвращает малую полуось.

  classmethod set_current(coordsystem: CoordSystem)

    Устанавливает новую текущую систему координат.

    Параметры:

      coordsystem – Новое значение системы координат.

    Пример установки нового значения:

        CoordSystem.set_current(CoordSystem.from_prj("10, 104, 7"))

  property supported_calc_modes: Tuple[CalcMode, ...]

    Возвращает возможный перечень режимов расчета для данной СК.

  property title: str

    Возвращает наименование системы координат.

  to_string() → str

    Текстовое представление в виде <тип>:<строка>.

  property unit: LinearUnit

    Возвращает единицы измерения.

  property wkt: str

    Возвращает строку WKT или пустую строку, если аналога не найдено.