
    f                         d Z ddlmZmZmZ ddlmZmZmZ  G d de          Z	 G d de          Z
 G 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                   .    e Zd ZdZ	 	 	 d
dededef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                     dd|t          j        |                                          t          j        |                                          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.jsonGeodeticReferenceFrame)$schematyper   r   r   )r   from_user_inputto_json_dictr   from_json_dict)clsr   r   r   
datum_jsons        J/var/www/html/Alfredo/env/lib/python3.11/site-packages/pyproj/crs/datum.py__new__zCustomDatum.__new__   sf    $ L,"29==JJLL+; lnn
 

 !!*---    N)r   r   r   )__name__
__module____qualname____doc__strr   r    r   r   r
   r
   
   s^           !)	. .. . 	. . . . . .r   r
   c                   j    e Zd ZdZ	 	 	 	 	 d
dedee         dee         dee         dee         f
d	ZdS )CustomEllipsoidzI
    .. versionadded:: 2.5.0

    Class to build a custom ellipsoid.
    r   Nr   semi_major_axisinverse_flatteningsemi_minor_axisradiusc                 p    dd|d}|||d<   |||d<   |||d<   |||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)   ellipsoid_jsons          r   r   zCustomEllipsoid.__new__5   ss    4 L8
 8

 &0?N,-)3EN/0&0?N,-'-N8$!!.111r   )r   NNNN)r   r   r    r!   r"   r   floatr   r#   r   r   r%   r%   .   s           +/.2+/"&&2 &2&2 "%&2 %UO	&2
 "%&2 &2 &2 &2 &2 &2 &2r   r%   c                   $    e Zd ZdZddedefdZdS )CustomPrimeMeridianz\
    .. versionadded:: 2.5.0

    Class to build a prime meridian based on a longitude.
    r   	longituder   c                 :    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   r0   r+   )r   r0   r   r   s       r   r   zCustomPrimeMeridian.__new__e   s3     L#"	
 

 !!*---r   N)r   )r   r   r    r!   r-   r"   r   r#   r   r   r/   r/   ^   sE         . . .S . . . . . .r   r/   N)r!   typingr   r   r   pyproj._crsr   r   r   r
   r%   r/   r#   r   r   <module>r4      s     ( ' ' ' ' ' ' ' ' ' 7 7 7 7 7 7 7 7 7 7!. !. !. !. !.% !. !. !.H-2 -2 -2 -2 -2i -2 -2 -2`. . . . .- . . . . .r   