
    \ib                     j    S r SSKJr  SSKJrJrJr   " S S\5      r " S S\5      r " S S	\5      r	g
)zD
This module is for building datums to be used when
building a CRS.
    )Any)Datum	EllipsoidPrimeMeridianc                   8    \ rS rSrSr   S	S\S\S\4S jjrSrg)
CustomDatum   z[
.. versionadded:: 2.5.0

Class to build a datum based on an ellipsoid and prime meridian.
name	ellipsoidprime_meridianc                     SSU[         R                  " U5      R                  5       [        R                  " U5      R                  5       S.nU R	                  U5      $ )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        S/var/www/html/kml_chatgpt/mouzaenv/lib/python3.13/site-packages/pyproj/crs/datum.py__new__CustomDatum.__new__   sW    $ L,"229=JJL+;;ln

 !!*--     N)	undefinedzWGS 84	Greenwich)	__name__
__module____qualname____firstlineno____doc__strr   r   __static_attributes__r   r   r   r   r      s8      !)	.. . 	. .r   r   c                   \    \ rS rSrSr     SS\S\S-  S\S-  S\S-  S\S-  4
S	 jjrS
rg)CustomEllipsoid/   z=
.. versionadded:: 2.5.0

Class to build a custom ellipsoid.
Nr
   semi_major_axisinverse_flatteningsemi_minor_axisradiusc                 h    SSUS.nUb  X&S'   Ub  X6S'   Ub  XFS'   Ub  XVS'   U R                  U5      $ )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
   r(   r)   r*   r+   r   )r   r
   r(   r)   r*   r+   ellipsoid_jsons          r   r   CustomEllipsoid.__new__6   sc    4 L2

 &0?,-)3E/0&0?,-'-8$!!.11r   r   )r   NNNN)	r   r   r    r!   r"   r#   floatr   r$   r   r   r   r&   r&   /   sb      (,+/(,#&2&2 &2 "DL	&2
 &2 &2 &2r   r&   c                   .    \ rS rSrSrSS\S\4S jjrSrg)	CustomPrimeMeridian_   zP
.. versionadded:: 2.5.0

Class to build a prime meridian based on a longitude.
	longituder
   c                 2    SSUUS.nU R                  U5      $ )z}
Parameters
----------
longitude: float
    Longitude of prime meridian.
name: str, optional
    Name of the prime meridian.
r   r   )r   r   r
   r4   r-   )r   r4   r
   r   s       r   r   CustomPrimeMeridian.__new__f   s+     L#"	

 !!*--r   r   N)r   )	r   r   r    r!   r"   r0   r#   r   r$   r   r   r   r2   r2   _   s    . .S . .r   r2   N)
r"   typingr   pyproj._crsr   r   r   r   r&   r2   r   r   r   <module>r9      s;   
  7 7!.% !.H-2i -2`.- .r   