CoordTransform
=================

.. currentmodule:: axioma.cs

.. class:: CoordTransform

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

		.. py:method:: CoordTransform(cs_from, cs_to)

			Конструктор

			:param cs_from: Исходная КС
			:type cs_from: :class:`~axioma.cs.CoordSystem`
			:param cs_to: Целевая КС
			:type cs_to: :class:`~axioma.cs.CoordSystem`

		.. py:method:: forward(p_in)

			Прямое преобразование точки из ``sourceCoordSystem`` в ``destinationСoordSystem``

			:param p_in: входное значение
			:type p_in: :class:`~PyQt5.QtCore.QPointF`
			:return: выходное значение
			:rtype: :class:`~PyQt5.QtCore.QPointF`
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования

		.. py:method:: forward(r_in)

			Прямое преобразование прямоугольника из ``sourceCoordSystem`` в ``destinationСoordSystem``

			:param r_in: входное значение
			:type r_in: :class:`~PyQt5.QtCore.QRectF`
			:return:  выходное значение
			:rtype: :class:`~PyQt5.QtCore.QRectF`
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования

		.. py:method:: forward(list_in)

			Прямое преобразование массива точек из ``sourceCoordSystem`` в ``destinationСoordSystem``

			:param list_in: входное значение
			:type list_in: :class:`list` [:class:`~PyQt5.QtCore.QPointF`]
			:return: выходное значение
			:rtype: :class:`list` [:class:`~PyQt5.QtCore.QPointF`]
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования

		.. py:method:: forwardMesh(r_in, pointCount = 100)

			Прямое преобразование прямоугольника из ``sourceCoordSystem`` в ``destinationСoordSystem`` на базе сетки

			:param r_in: входное значение
			:type r_in: :class:`~PyQt5.QtCore.QRectF`
			:param pointCount: количество дополнительных точек на ребре по X. На базе этих дополнительных точек строится сетка, которая в виде входного параметра передается вместо rect
			:type pointCount: :class:`int`
			:return: выходное значение
			:rtype: :class:`~PyQt5.QtCore.QRectF`
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования

		.. py:method:: inverse(p_in, p_out)

			Обратное преобразование точки из ``destinationСoordSystem`` в ``sourceCoordSystem``

			:param p_in: входное значение
			:type p_in: :class:`~PyQt5.QtCore.QPointF`
			:return: выходное значение
			:rtype: :class:`~PyQt5.QtCore.QPointF`
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования
			
		.. py:method:: inverse(r_in)

			Обратное преобразование прямоугольника из ``destinationСoordSystem`` в ``sourceCoordSystem``

			:param r_in: входное значение
			:type r_in: :class:`~PyQt5.QtCore.QRectF`
			:return: выходное значение
			:rtype: :class:`~PyQt5.QtCore.QRectF`
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования

		.. py:method:: inverse(list_in)

			Обратное преобразование массива точек из ``destinationСoordSystem`` в ``sourceCoordSystem``

			:param list_in: входное значение
			:type list_in: :class:`list` [:class:`~PyQt5.QtCore.QPointF`]
			:return: выходное значение
			:rtype: :class:`list` [:class:`~PyQt5.QtCore.QPointF`]
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования

		.. py:method:: inverseMesh(r_in, pointCount = 100)

			Обратное преобразование прямоугольника из ``destinationСoordSystem`` в ``sourceCoordSystem`` на базе сетки

			:param r_in: входное значение
			:type r_in: :class:`~PyQt5.QtCore.QRectF`
			:param pointCount: количество дополнительных точек на ребре по X. На базе этих дополнительных точек строится сетка, которая в виде входного параметра передается вместо rect
			:type pointCount: :class:`int`
			:return: выходное значение
			:rtype: :class:`~PyQt5.QtCore.QRectF`
			:raises RuntimeException: :exc:`~axioma.common.RuntimeException` - ошибка выполнения преобразования

		.. py:method:: sourceCoordSystem()

			Исходная координатная система

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

		.. py:method:: destinationСoordSystem()

			Целевая координатная система

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

		.. py:method:: isEqualsCS()

			Проверка факта преобразования при приведении операций

			:return: True, если исходная и целевая КС идентичны
			:rtype: :class:`bool`


Пример использования:
  
  .. code-block:: python
  
    from axioma.cs import *
    from PyQt5.QtCore import *

    cs_latlon = CoordSysFactory.defaultCoordSysFactory().createFromEpsg(4326)
    cs_merc = CoordSysFactory.defaultCoordSysFactory().createFromPrj("Earth Projection 10, 104, \"m\", 0")

    p_in = QPointF(45.0, 45.0)
    transform = CoordTransform(cs_latlon, cs_merc)
    p_out = transform.forward(p_in)
    print ("p_out = (%f, %f)" % (p_out.x(), p_out.y()))
 
