CoordSysFactory
=================

.. currentmodule:: axioma.cs

.. class:: CoordSysFactory

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

		.. py:staticmethod:: defaultCoordSysFactory()

			Экземпляр класса, определенный по умолчанию

			:return: Созданный при инициализации приложения экземпляр
			:rtype: :class:`~axioma.cs.CoordSysFactory`

		.. py:method:: LatLongCoordSystem()

			Инициализированная координатная система Широта/Долгота

			:return: Ссылка на проекцию
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: currentCoordSystem()

			Координатная система, установленная как текущая

			:return: Ссылка на установленную КС
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: setCurrentCoordSystem(coordSystem)

			Установка текущей координатной системы

			:param coordSystem: входное значение
			:type coordSystem: :class:`~axioma.cs.CoordSystem`

		.. py:method:: createFromPrj(prj_str)

			Создание координатной системы из строки MapBasic

			:param prj_str: строка MapBasic
			:type prj_str: :class:`str`
			:return: Результирующая координатная система. None, если результат отрицательный
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: createFromProj(proj_str)

			Создание координатной системы из строки proj

			:param proj_str: строка proj
			:type proj_str: :class:`str`
			:return: Результирующая координатная система. None, если результат отрицательный
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: createFromEpsg(epsg)

			Создание координатной системы из `EPSG <http://www.epsg.org>`_

			:param epsg: Стандартное значение EPSG
			:type epsg: :class:`int`
			:return: Результирующая координатная система. None, если результат отрицательный
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: createFromOracleSRID(srid)

			Создание координатной системы на основе внутреннего кода РСУБД Oracle

			:param srid: Код
			:type srid: :class:`int`
			:return: Результирующая координатная система. None, если результат отрицательный
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: createFromWkt(wkt_str)

			Создание координатной системы из строки WKT

			:param wkt_str: строка WKT
			:type wkt_str: :class:`str`
			:return: Результирующая координатная система. None, если результат отрицательный
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: createNonEarth(linearUnitId, rect = QRectF())

			Создание декартовой координатной системы

			:param linearUnitId: код единицы измерения координатной системы. См. LinearUnit
			:type linearUnitId: :class:`int`
			:param rect: Охват координатной системы. Если значение не указано, устанавливается значение по умолчанию :attribute:`~axioma.cs.CoordSystem.RectEarth` 
			:type rect: :class:`~PyQt5.QtCore.QRectF`
			:return: Результирующая координатная система. None, если результат отрицательный
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: userCoordSystem()

			Контейнер хранения пользовательских координатных систем

			:rtype: :class:`~axioma.cs.UserCoordSystem`

		.. py:method:: unitById(codeMapinfo)

			Получение объекта единиц измерения расстояний по его идентификатору

			:param codeMapinfo: Код единицы измерения
			:type codeMapinfo: :class:`~axioma.cs.LinearUnit.UnitCode`
			:rtype: :class:`~axioma.cs.LinearUnit`

		.. py:method:: areaUnitById(codeMapinfo)

			Получение объекта единиц измерения площадей по его идентификатору

			:param codeMapinfo: Код единицы измерения
			:type codeMapinfo: :class:`~axioma.cs.LinearUnit.UnitCode`
			:rtype: :class:`~axioma.cs.AreaUnit`
			
		.. py:method:: distanceUnits()

			Получение списка единиц измерения расстояний

			:rtype: :class:`list` [ :class:`~axioma.cs.LinearUnit` ]
			
		.. py:method:: areaUnits()

			Получение списка единиц измерения площадей

			:rtype: :class:`list` [ :class:`~axioma.cs.AreaUnit` ]

			
Пример использования:
  
  .. code-block:: python
  
      from axioma.cs import *
      
      # Инициализация по значению EPSG
      cs_latlon = CoordSysFactory.defaultCoordSysFactory().createFromEpsg(4326)
      if cs_latlon is not None:
        print ("Ok: %s" % cs_latlon.description())
      # Инициализация координатной системы из строки MapBasic PRJ
      cs_merc = CoordSysFactory.defaultCoordSysFactory().createFromPrj("Earth Projection 12, 62, \"m\", 0")
      # Инициализация координатной системы из строки Proj
      robin_proj4_str = "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=clrk66 +towgs84=-8,160,176,-0,-0,-0,0 +units=m +no_defs"
      robin_proj4 = CoordSysFactory.defaultCoordSysFactory().createFromProj(robin_proj4_str)
      # Инициализация координатной системы из строки WKT
      ll_wkt_str = "GEOGCS[\"unnamed\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563],TOWGS84[0,0,0,-0,-0,-0,0]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]"
      ll_wkt = CoordSysFactory.defaultCoordSysFactory().createFromWkt(ll_wkt_str)
      # Получение единицы измерения расстояния по ее идентификатору
      unit = CoordSysFactory.defaultCoordSysFactory().unitById(LinearUnit.MIUnit_Kilometer)
