a
    ’1$e„  ã                   @   s`   d Z ddlmZmZmZ ddlmZmZmZ G dd„ deƒZ	G dd„ deƒZ
G dd	„ d	eƒZd
S )zD
This module is for building datums to be used when
building a CRS.
é    )ÚAnyÚOptionalÚUnion)ÚDatumÚ	EllipsoidÚPrimeMeridianc                   @   s$   e Zd ZdZd	eeedœdd„ZdS )
ÚCustomDatumzg
    .. versionadded:: 2.5.0

    Class to build a datum based on an ellipsoid and prime meridian.
    Ú	undefinedúWGS 84Ú	Greenwich)ÚnameÚ	ellipsoidÚprime_meridianc                 C   s.   dd|t  |¡ ¡ t |¡ ¡ dœ}|  |¡S )a¬  
        Parameters
        ----------
        name: str, default="undefined"
            Name of the datum.
        ellipsoid: Any, default="WGS 84"
            Anything accepted by :meth:`pyproj.crs.Ellipsoid.from_user_input`
            or a :class:`pyproj.crs.datum.CustomEllipsoid`.
        prime_meridian: Any, default="Greenwich"
            Anything accepted by :meth:`pyproj.crs.PrimeMeridian.from_user_input`.
        ú2https://proj.org/schemas/v0.2/projjson.schema.jsonZGeodeticReferenceFrame)ú$schemaÚtyper   r   r   )r   Zfrom_user_inputZto_json_dictr   Úfrom_json_dict)Úclsr   r   r   Ú
datum_json© r   úL/var/www/html/django/DPS/env/lib/python3.9/site-packages/pyproj/crs/datum.pyÚ__new__   s    ÿû	zCustomDatum.__new__N)r	   r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   r   r   r   r   r   
   s      üür   c                   @   s8   e Zd ZdZdeee ee ee ee dœdd„ZdS )ÚCustomEllipsoidzI
    .. versionadded:: 2.5.0

    Class to build a custom ellipsoid.
    r	   N)r   Úsemi_major_axisÚinverse_flatteningÚsemi_minor_axisÚradiusc                 C   sV   dd|dœ}|dur||d< |dur,||d< |dur<||d< |durL||d< |   |¡S )	aŸ  
        Parameters
        ----------
        name: str, default="undefined"
            Name of the ellipsoid.
        semi_major_axis: float, optional
            The semi major axis in meters. Required if missing radius.
        inverse_flattening: float, optional
            The inverse flattening in meters.
            Required if missing semi_minor_axis and radius.
        semi_minor_axis: float, optional
            The semi minor axis in meters.
            Required if missing inverse_flattening and radius.
        radius: float, optional
            The radius in meters. Can only be used alone.
            Cannot be mixed with other parameters.
        r   r   )r   r   r   Nr   r   r    r!   ©r   )r   r   r   r   r    r!   Zellipsoid_jsonr   r   r   r   5   s    ýzCustomEllipsoid.__new__)r	   NNNN)r   r   r   r   r   r   Úfloatr   r   r   r   r   r   .   s        úúr   c                   @   s"   e Zd ZdZdeedœdd„ZdS )ÚCustomPrimeMeridianz\
    .. versionadded:: 2.5.0

    Class to build a prime meridian based on a longitude.
    r	   )Ú	longituder   c                 C   s   dd||dœ}|   |¡S )zµ
        Parameters
        ----------
        longitude: float
            Longitude of prime meridian.
        name: str, optional
            Name of the prime meridian.
        r   r   )r   r   r   r%   r"   )r   r%   r   r   r   r   r   r   e   s    
üzCustomPrimeMeridian.__new__N)r	   )r   r   r   r   r#   r   r   r   r   r   r   r$   ^   s   r$   N)r   Útypingr   r   r   Zpyproj._crsr   r   r   r   r   r$   r   r   r   r   Ú<module>   s
   $0