§
    óŽ’jÄF  ã                   ó2  — d dl Zd dlZd dlmZ d dlmZ d dlmZ	 d dl
mZ d dlmZ d dlmZ d dlmZ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 G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Ú_api)ÚAxes©ÚCircle)ÚPath)Ú	FormatterÚNullLocatorÚFixedLocatorÚNullFormatter)ÚAffine2DÚBboxTransformToÚ	Transformc                   óê   ‡ — e Zd ZdZ G d„ de¦  «        ZdZd„ Zˆ fd„Zd„ Z	d„ Z
dd
„Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ ZeZeZeZd„ ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$ˆ xZ%S ) ÚGeoAxesz2An abstract base class for geographic projections.c                   ó"   — e Zd ZdZdd„Zdd„ZdS )úGeoAxes.ThetaFormatterz‹
        Used to format the theta tick labels.  Converts the native
        unit of radians into degrees and adds a degree symbol.
        ç      ð?c                 ó   — || _         d S ©N)Ú	_round_to)ÚselfÚround_tos     úHC:\Projects\DSCons\.venv\Lib\site-packages\matplotlib\projections\geo.pyÚ__init__zGeoAxes.ThetaFormatter.__init__   s   € Ø%ˆDŒNˆNˆNó    Nc                 óp   — t          t          j        |¦  «        | j        z  ¦  «        | j        z  }|d›d�S )Nz0.0fõ   Â°)ÚroundÚnpÚrad2degr   )r   ÚxÚposÚdegreess       r   Ú__call__zGeoAxes.ThetaFormatter.__call__   s7   € Ý�BœJ q™MœM¨D¬NÑ:Ñ;Ô;¸d¼nÑLˆGØÐ3Ð3Ð3Ð3Ð3r   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   © r   r   ÚThetaFormatterr      sF   € € € € € ð	ð 	ð	&ð 	&ð 	&ð 	&ð	4ð 	4ð 	4ð 	4ð 	4ð 	4r   r*   éK   c                 ó¼   — t          j        | d¬¦  «        | _        t          j        | d¬¦  «        | _        | j        d                              | j        ¦  «         d S )NF)ÚclearÚgeo)ÚmaxisÚXAxisÚxaxisÚYAxisÚyaxisÚspinesÚregister_axis©r   s    r   Ú
_init_axiszGeoAxes._init_axis    sQ   € Ý”[ ¨UÐ3Ñ3Ô3ˆŒ
Ý”[ ¨UÐ3Ñ3Ô3ˆŒ
ØŒ�EÔ×(Ò(¨¬Ñ4Ô4Ð4Ð4Ð4r   c                 óþ  •— t          ¦   «                              ¦   «          |                      d¦  «         |                      d¦  «         |                      d¦  «         | j                             t          ¦   «         ¦  «         | j                             t          ¦   «         ¦  «         | j         	                    d¦  «         | j         	                    d¦  «         | j         
                    d¬¦  «         |                      t          j        d         ¦  «         t          j        | t           j         t           j        ¦  «         t          j        | t           j         dz  t           j        dz  ¦  «         d S )	Né   é   r+   ÚnoneT)Úlabel1Onz	axes.gridç       @)Úsuperr-   Úset_longitude_gridÚset_latitude_gridÚset_longitude_grid_endsr1   Úset_minor_locatorr	   r3   Úset_ticks_positionÚset_tick_paramsÚgridÚmplÚrcParamsr   Úset_xlimr   ÚpiÚset_ylim©r   Ú	__class__s    €r   r-   zGeoAxes.clear%   s&  ø€ å‰Œ�Š‰Œˆà×Ò Ñ#Ô#Ð#Ø×Ò˜rÑ"Ô"Ð"Ø×$Ò$ RÑ(Ô(Ð(ØŒ
×$Ò$¥[¡]¤]Ñ3Ô3Ð3ØŒ
×$Ò$¥[¡]¤]Ñ3Ô3Ð3ØŒ
×%Ò% fÑ-Ô-Ð-ØŒ
×%Ò% fÑ-Ô-Ð-ØŒ
×"Ò"¨DÐ"Ñ1Ô1Ð1ð 	�	Š	•#”,˜{Ô+Ñ,Ô,Ð,åŒ�d�RœU˜F¥B¤EÑ*Ô*Ð*ÝŒ�d�RœU˜F S™L­"¬%°#©+Ñ6Ô6Ð6Ð6Ð6r   c                 óÂ  — |                       | j        ¦  «        | _        |                      ¦   «         | _        t          | j        ¦  «        | _        | j        | j        z   | j        z   | _        t          ¦   «          
                    d| j        dz  ¦  «                             d| j         ¦  «        | _        | j        | j        z   | _        t          ¦   «          
                    dd¦  «        | j        z   t          ¦   «                              dd¦  «        z   | _        t          ¦   «          
                    dd¦  «        | j        z   t          ¦   «                              dd¦  «        z   | _        t          ¦   «          
                    t"          j        dz  d¦  «                             t"          j         d¦  «        }t          ¦   «          
                    dd¦  «        }|| j        z   | _        || j        z   || j        z   | j        z   z   }|t          ¦   «                              dd¦  «        z   | _        |t          ¦   «                              dd¦  «        z   | _        d S )	Né   é   r   é   éüÿÿÿgš™™™™™ñ?iøÿÿÿé   )Ú_get_core_transformÚ
RESOLUTIONÚtransProjectionÚ_get_affine_transformÚtransAffiner   ÚbboxÚ	transAxesÚ	transDatar   ÚscaleÚ_longitude_capÚ	translateÚ_xaxis_pretransformÚ_xaxis_transformÚ_xaxis_text1_transformÚ_xaxis_text2_transformr   rI   Ú_yaxis_transformÚ_yaxis_text1_transformÚ_yaxis_text2_transform)r   Úyaxis_stretchÚyaxis_spaceÚyaxis_text_bases       r   Ú_set_lim_and_transformszGeoAxes._set_lim_and_transforms9   s5  € à#×7Ò7¸¼ÑHÔHˆÔà×5Ò5Ñ7Ô7ˆÔå(¨¬Ñ3Ô3ˆŒð
 Ô ØÔñàŒNñð 	Œõ ‰JŒJßŠU�1�dÔ)¨AÑ-Ñ.Ô.ßŠY�q˜4Ô.Ð.Ñ/Ô/ð 	Ô ð
 Ô$ØŒNñð 	Ôõ ‰JŒJ×Ò˜Q Ñ"Ô"ØŒNñå‰JŒJ× Ò   AÑ&Ô&ñ'ð 	Ô#õ
 ‰JŒJ×Ò˜Q Ñ"Ô"ØŒNñå‰JŒJ× Ò   BÑ'Ô'ñ(ð 	Ô#õ !™
œ
×(Ò(­¬°©°AÑ6Ô6×@Ò@Å"Ä%ÀÈÑKÔKˆÝ‘j”j×&Ò& q¨#Ñ.Ô.ˆàØŒNñð 	Ôð ØÔ ñ!àØÔñàŒ^ññð 	ð Ý‰JŒJ× Ò   QÑ'Ô'ñ(ð 	Ô#ð Ý‰JŒJ× Ò   AÑ&Ô&ñ'ð 	Ô#Ð#Ð#r   c                 ó:  — |                       d¦  «        }|                     t          j        df¦  «        \  }}|                     dt          j        dz  f¦  «        \  }}t	          ¦   «                              d|z  d|z  ¦  «                             dd¦  «        S )NrN   r   rO   ç      à?)rS   Ú	transformr   rI   r   r[   r]   )r   rk   ÚxscaleÚ_Úyscales        r   rV   zGeoAxes._get_affine_transforml   s…   € Ø×,Ò,¨QÑ/Ô/ˆ	Ø×'Ò'­¬°¨
Ñ3Ô3‰	ˆ�Ø×'Ò'¨­B¬E°!©G¨Ñ5Ô5‰	ˆˆ6Ý‰zŒzßŠU�3˜‘<  v¡Ñ.Ô.ßŠY�s˜CÑ Ô ð	!r   rE   c                 ó@   — t          j        g d¢|¬¦  «         | j        S ©N)Útick1Útick2rE   )Úwhich)r   Úcheck_in_listr_   ©r   rs   s     r   Úget_xaxis_transformzGeoAxes.get_xaxis_transformt   ó(   € ÝÔÐ5Ð5Ð5¸UÐCÑCÔCÐCØÔ$Ð$r   c                 ó   — | j         ddfS )NÚbottomÚcenter)r`   ©r   Úpads     r   Úget_xaxis_text1_transformz!GeoAxes.get_xaxis_text1_transformx   s   € ØÔ*¨H°hÐ>Ð>r   c                 ó   — | j         ddfS )NÚtoprz   )ra   r{   s     r   Úget_xaxis_text2_transformz!GeoAxes.get_xaxis_text2_transform{   s   € ØÔ*¨E°8Ð;Ð;r   c                 ó@   — t          j        g d¢|¬¦  «         | j        S rp   )r   rt   rb   ru   s     r   Úget_yaxis_transformzGeoAxes.get_yaxis_transform~   rw   r   c                 ó   — | j         ddfS )Nrz   Úright)rc   r{   s     r   Úget_yaxis_text1_transformz!GeoAxes.get_yaxis_text1_transform‚   s   € ØÔ*¨H°gÐ=Ð=r   c                 ó   — | j         ddfS )Nrz   Úleft)rd   r{   s     r   Úget_yaxis_text2_transformz!GeoAxes.get_yaxis_text2_transform…   s   € ØÔ*¨H°fÐ<Ð<r   c                 ó"   — t          dd¦  «        S )N©rj   rj   rj   r   r6   s    r   Ú_gen_axes_patchzGeoAxes._gen_axes_patchˆ   s   € Ý�j #Ñ&Ô&Ð&r   c                 óH   — dt           j                             | dd¦  «        iS )Nr.   rŠ   rj   )ÚmspinesÚSpineÚcircular_spiner6   s    r   Ú_gen_axes_spineszGeoAxes._gen_axes_spines‹   s!   € Ø•w”}×3Ò3°D¸*ÀcÑJÔJÐKÐKr   c                 ó,   — |d         dk    rt           ‚d S )Nr   Úlinear)ÚNotImplementedError©r   ÚargsÚkwargss      r   Ú
set_yscalezGeoAxes.set_yscaleŽ   s   € Ø�Œ7�hÒÐÝ%Ð%ð Ðr   c                 ó    — t          d¦  «        ‚©z-Not supported. Please consider using Cartopy.zaChanging axes limits of a geographic projection is not supported.  Please consider using Cartopy.©Ú	TypeErrorr”   s      r   rH   zGeoAxes.set_xlim”   ó   € åð Iñ Jô Jð 	Jr   c                 ó    — t          d¦  «        ‚r™   rš   r6   s    r   Úinvert_xaxiszGeoAxes.invert_xaxis�   rœ   r   c                 ó¢   — t          j        ||g¦  «        \  }}|dk    rdnd}|dk    rdnd}dt          |¦  «        |t          |¦  «        |fz  S )z1Return a format string formatting the coordinate.ç        ÚNÚSÚEÚWu   %fÂ°%s, %fÂ°%s)r   r    Úabs)r   ÚlonÚlatÚnsÚews        r   Úformat_coordzGeoAxes.format_coord¤   s`   € å”:˜s C˜jÑ)Ô)‰ˆˆSØ˜3’J�JˆSˆS CˆØ˜3’J�JˆSˆS CˆØ:Ý�s‘8”8˜R¥ S¡¤¨2Ð.ñ/ð 	0r   c                 ó  — t          j        d|z   d|¦  «        }| j                             t	          t          j        |¦  «        ¦  «        ¦  «         | j                             |                      |¦  «        ¦  «         dS )zH
        Set the number of degrees between each longitude grid.
        iLÿÿÿé´   N)r   Úaranger1   Úset_major_locatorr
   Údeg2radÚset_major_formatterr*   ©r   r#   rE   s      r   r?   zGeoAxes.set_longitude_grid¬   sm   € õ
 Œy˜ ™¨¨gÑ6Ô6ˆØŒ
×$Ò$¥\µ"´*¸TÑ2BÔ2BÑ%CÔ%CÑDÔDÐDØŒ
×&Ò& t×':Ò':¸7Ñ'CÔ'CÑDÔDÐDÐDÐDr   c                 ó  — t          j        d|z   d|¦  «        }| j                             t	          t          j        |¦  «        ¦  «        ¦  «         | j                             |                      |¦  «        ¦  «         dS )zG
        Set the number of degrees between each latitude grid.
        i¦ÿÿÿéZ   N)r   r­   r3   r®   r
   r¯   r°   r*   r±   s      r   r@   zGeoAxes.set_latitude_gridµ   sm   € õ
 Œy˜˜w™¨¨GÑ4Ô4ˆØŒ
×$Ò$¥\µ"´*¸TÑ2BÔ2BÑ%CÔ%CÑDÔDÐDØŒ
×&Ò& t×':Ò':¸7Ñ'CÔ'CÑDÔDÐDÐDÐDr   c                 óÖ   — t          j        |¦  «        | _        | j                             ¦   «                              d| j        dz  ¦  «                             d| j         ¦  «         dS )zS
        Set the latitude(s) at which to stop drawing the longitude grids.
        r   r=   r    N)r   r¯   r\   r^   r-   r[   r]   )r   r#   s     r   rA   zGeoAxes.set_longitude_grid_ends¾   sZ   € õ !œj¨Ñ1Ô1ˆÔØÔ ßŠU‰WŒWßŠU�3˜Ô+¨cÑ1Ñ2Ô2ßŠY�s˜TÔ0Ð0Ñ1Ô1Ð1Ð1Ð1r   c                 ó   — dS )z+Return the aspect ratio of the data itself.r   r)   r6   s    r   Úget_data_ratiozGeoAxes.get_data_ratioÈ   s   € àˆsr   c                 ó   — dS )z—
        Return whether this Axes supports the zoom box button functionality.

        This Axes object does not support interactive zoom box.
        Fr)   r6   s    r   Úcan_zoomzGeoAxes.can_zoomÎ   ó	   € ð ˆur   c                 ó   — dS )z—
        Return whether this Axes supports the pan/zoom button functionality.

        This Axes object does not support interactive pan/zoom.
        Fr)   r6   s    r   Úcan_panzGeoAxes.can_panÖ   r¹   r   c                 ó   — d S r   r)   )r   r!   ÚyÚbuttons       r   Ú	start_panzGeoAxes.start_panÞ   ó   € Øˆr   c                 ó   — d S r   r)   r6   s    r   Úend_panzGeoAxes.end_paná   rÀ   r   c                 ó   — d S r   r)   )r   r¾   Úkeyr!   r½   s        r   Údrag_panzGeoAxes.drag_panä   rÀ   r   )rE   )&r%   r&   r'   r(   r   r*   rT   r7   r-   rh   rV   rv   r}   r€   r‚   r…   rˆ   r‹   r�   r—   Ú
set_xscalerH   rJ   Ú
set_xboundÚ
set_yboundrž   Úinvert_yaxisrª   r?   r@   rA   r¶   r¸   r»   r¿   rÂ   rÅ   Ú__classcell__©rL   s   @r   r   r      s  ø€ € € € € Ø<Ð<ð
4ð 
4ð 
4ð 
4ð 
4˜ñ 
4ô 
4ð 
4ð €Jð5ð 5ð 5ð
7ð 7ð 7ð 7ð 7ð(1'ð 1'ð 1'ðf!ð !ð !ð%ð %ð %ð %ð?ð ?ð ?ð<ð <ð <ð%ð %ð %ð %ð>ð >ð >ð=ð =ð =ð'ð 'ð 'ðLð Lð Lð&ð &ð &ð €JðJð Jð Jð
 €HØ€JØ€JðJð Jð Jð
  €Lð0ð 0ð 0ðEð Eð EðEð Eð Eð2ð 2ð 2ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð ð ð r   r   c                   ó2   ‡ — e Zd ZdxZZˆ fd„Zd„ Zd„ Zˆ xZS )Ú_GeoTransformrO   c                 óV   •— t          ¦   «                              ¦   «          || _        dS )zÁ
        Create a new geographical transform.

        Resolution is the number of steps to interpolate between each input
        line segment to approximate its path in curved space.
        N)r>   r   Ú_resolution)r   Ú
resolutionrL   s     €r   r   z_GeoTransform.__init__ì   s)   ø€ õ 	‰Œ×ÒÑÔÐØ%ˆÔÐÐr   c                 ó@   — t          | ¦  «        j        › d| j        › d�S )Nú(ú))Útyper%   rÏ   r6   s    r   Ú__str__z_GeoTransform.__str__ö   s%   € Ý�t‘*”*Ô%Ð;Ð;¨Ô(8Ð;Ð;Ð;Ð;r   c                 ó�   — |                      | j        ¦  «        }t          |                      |j        ¦  «        |j        ¦  «        S r   )ÚinterpolatedrÏ   r   rk   ÚverticesÚcodes)r   ÚpathÚipaths      r   Útransform_path_non_affinez'_GeoTransform.transform_path_non_affineù   s8   € à×!Ò! $Ô"2Ñ3Ô3ˆÝ�D—N’N 5¤>Ñ2Ô2°E´KÑ@Ô@Ð@r   )	r%   r&   r'   Ú
input_dimsÚoutput_dimsr   rÕ   rÜ   rÊ   rË   s   @r   rÍ   rÍ   è   sg   ø€ € € € € à Ð €J�ð&ð &ð &ð &ð &ð<ð <ð <ðAð Að Að Að Að Að Ar   rÍ   c                   ó`   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zˆ fd„Zd„ Zˆ xZ	S )Ú
AitoffAxesÚaitoffc                   ó   — e Zd ZdZd„ Zd„ ZdS )úAitoffAxes.AitoffTransformzThe base Aitoff transform.c                 ój  — |j         \  }}|dz  }t          j        |¦  «        }t          j        |t          j        |¦  «        z  ¦  «        }t          j        |t          j        z  ¦  «        }|t          j        |¦  «        z  |z  }t          j        |¦  «        |z  }	t          j        ||	g¦  «        S )Nr=   )ÚTr   ÚcosÚarccosÚsincrI   ÚsinÚcolumn_stack)
r   ÚvaluesÚ	longitudeÚlatitudeÚ	half_longÚcos_latitudeÚalphaÚ
sinc_alphar!   r½   s
             r   Útransform_non_affinez/AitoffAxes.AitoffTransform.transform_non_affine  sœ   € à"(¤(ÑˆI�xð " C™ˆIÝœ6 (Ñ+Ô+ˆLå”I˜l­R¬V°IÑ->Ô->Ñ>Ñ?Ô?ˆEÝœ ­¬¡Ñ/Ô/ˆJà¥¤ yÑ 1Ô 1Ñ1°ZÑ?ˆAÝ”�xÑ Ô  :Ñ-ˆAÝ”? A q 6Ñ*Ô*Ð*r   c                 ó@   — t                                | j        ¦  «        S r   )rà   ÚInvertedAitoffTransformrÏ   r6   s    r   Úinvertedz#AitoffAxes.AitoffTransform.inverted  ó   € å×5Ò5°dÔ6FÑGÔGÐGr   N©r%   r&   r'   r(   rò   rõ   r)   r   r   ÚAitoffTransformrã     s=   € € € € € Ø(Ð(ð	+ð 	+ð 	+ð	Hð 	Hð 	Hð 	Hð 	Hr   rø   c                   ó   — e Zd Zd„ Zd„ ZdS )ú"AitoffAxes.InvertedAitoffTransformc                 ó@   — t          j        |t           j        ¦  «        S r   )r   Ú	full_likeÚnan)r   rë   s     r   rò   z7AitoffAxes.InvertedAitoffTransform.transform_non_affine  s   € õ ”< ­¬Ñ/Ô/Ð/r   c                 ó@   — t                                | j        ¦  «        S r   )rà   rø   rÏ   r6   s    r   rõ   z+AitoffAxes.InvertedAitoffTransform.inverted  ó   € å×-Ò-¨dÔ.>Ñ?Ô?Ð?r   N©r%   r&   r'   rò   rõ   r)   r   r   rô   rú     s7   € € € € € ð	0ð 	0ð 	0ð
	@ð 	@ð 	@ð 	@ð 	@r   rô   c                 óº   •— t           j        dz  | _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S ©Nr=   rj   ÚboxÚC©Ú
adjustableÚanchor©r   rI   r\   r>   r   Ú
set_aspectr-   ©r   r•   r–   rL   s      €r   r   zAitoffAxes.__init__#  óV   ø€ Ý œe c™kˆÔØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ø�Š˜¨°cˆÑ:Ô:Ð:Ø�
Š
‰Œˆˆˆr   c                 ó,   — |                       |¦  «        S r   )rø   ©r   rÐ   s     r   rS   zAitoffAxes._get_core_transform)  ó   € Ø×#Ò# JÑ/Ô/Ð/r   )
r%   r&   r'   ÚnamerÍ   rø   rô   r   rS   rÊ   rË   s   @r   rà   rà   ÿ   s°   ø€ € € € € Ø€DðHð Hð Hð Hð H˜-ñ Hô Hð Hð,	@ð 	@ð 	@ð 	@ð 	@ -ñ 	@ô 	@ð 	@ðð ð ð ð ð0ð 0ð 0ð 0ð 0ð 0ð 0r   rà   c                   ó`   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zˆ fd„Zd„ Zˆ xZ	S )Ú
HammerAxesÚhammerc                   ó   — e Zd ZdZd„ Zd„ ZdS )úHammerAxes.HammerTransformzThe base Hammer transform.c                 óh  — |j         \  }}|dz  }t          j        |¦  «        }t          j        d¦  «        }t          j        d|t          j        |¦  «        z  z   ¦  «        }d|z  |t          j        |¦  «        z  z  |z  }|t          j        |¦  «        z  |z  }	t          j        ||	g¦  «        S )Nr=   r   )rå   r   ræ   Úsqrtré   rê   )
r   rë   rì   rí   rî   rï   Úsqrt2rð   r!   r½   s
             r   rò   z/HammerAxes.HammerTransform.transform_non_affine3  s¥   € à"(¤(ÑˆI�xØ! C™ˆIÝœ6 (Ñ+Ô+ˆLÝ”G˜C‘L”LˆEÝ”G˜C ,µ´¸	Ñ1BÔ1BÑ"BÑBÑCÔCˆEØ�u‘ µ´°yÑ0AÔ0AÑ!AÑBÀUÑJˆAØ�œ Ñ)Ô)Ñ)¨UÑ2ˆAÝ”? A q 6Ñ*Ô*Ð*r   c                 ó@   — t                                | j        ¦  «        S r   )r  ÚInvertedHammerTransformrÏ   r6   s    r   rõ   z#HammerAxes.HammerTransform.inverted>  rö   r   Nr÷   r)   r   r   ÚHammerTransformr  0  s=   € € € € € Ø(Ð(ð		+ð 		+ð 		+ð	Hð 	Hð 	Hð 	Hð 	Hr   r  c                   ó   — e Zd Zd„ Zd„ ZdS )ú"HammerAxes.InvertedHammerTransformc                 ó  — |j         \  }}t          j        d|dz  dz  z
  |dz  dz  z
  ¦  «        }dt          j        ||z  dd|dz  z  dz
  z  z  ¦  «        z  }t          j        ||z  ¦  «        }t          j        ||g¦  «        S )NrN   rP   rO   )rå   r   r  ÚarctanÚarcsinrê   )r   rë   r!   r½   Úzrì   rí   s          r   rò   z7HammerAxes.InvertedHammerTransform.transform_non_affineD  sŠ   € à”8‰DˆAˆqÝ”˜˜Q ™U q™LÑ(¨A°©E°a©<Ñ7Ñ8Ô8ˆAØ�BœI q¨1¡u°°a¸!¸q¹&±jÀ1±nÑ1EÑ&FÑGÔGÑGˆIÝ”y  1¡‘~”~ˆHÝ”? I¨xÐ#8Ñ9Ô9Ð9r   c                 ó@   — t                                | j        ¦  «        S r   )r  r  rÏ   r6   s    r   rõ   z+HammerAxes.InvertedHammerTransform.invertedL  rÿ   r   Nr   r)   r   r   r  r  B  s7   € € € € € ð	:ð 	:ð 	:ð	@ð 	@ð 	@ð 	@ð 	@r   r  c                 óº   •— t           j        dz  | _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S r  r  r
  s      €r   r   zHammerAxes.__init__P  r  r   c                 ó,   — |                       |¦  «        S r   )r  r  s     r   rS   zHammerAxes._get_core_transformV  r  r   )
r%   r&   r'   r  rÍ   r  r  r   rS   rÊ   rË   s   @r   r  r  -  s°   ø€ € € € € Ø€DðHð Hð Hð Hð H˜-ñ Hô Hð Hð$@ð @ð @ð @ð @ -ñ @ô @ð @ðð ð ð ð ð0ð 0ð 0ð 0ð 0ð 0ð 0r   r  c                   ó`   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zˆ fd„Zd„ Zˆ xZ	S )ÚMollweideAxesÚ	mollweidec                   ó   — e Zd ZdZd„ Zd„ ZdS )ú MollweideAxes.MollweideTransformzThe base Mollweide transform.c                 ó  ‡— ˆfd„}|j         \  }}t          j        dz  t          j        |¦  «        z
  }|dk     }| }t          j        |j        t          ¬¦  «        }|                     ¦   «         r”t          j        t          j        ||         ¦  «        z  Šd||         z  }	 ||	¦  «        \  }
}t          j        |¦  «        r8|	|xx         |
|         z  cc<    ||	¦  «        \  }
}t          j        |¦  «        °8|	dz  ||<   |                     ¦   «         rS||         }ddt          j        z  |dz  z  dz  z  }t          j        dz  |z
  t          j	        ||         ¦  «        z  ||<   t          j        |j        t          ¬¦  «        }dt          j
        d¦  «        z  t          j        z  |z  t          j        |¦  «        z  |d d …d	f<   t          j
        d¦  «        t          j        |¦  «        z  |d d …d
f<   |S )Nc                 óž   •— | t          j        | ¦  «        z   ‰z
   dt          j        | ¦  «        z   z  }|t          j        |¦  «        dk    fS )NrN   gü©ñÒMbP?)r   ré   ræ   r¥   )ÚthetaÚdeltaÚpi_sin_ls     €r   Údz@MollweideAxes.MollweideTransform.transform_non_affine.<locals>.db  sJ   ø€ Ø ¥2¤6¨%¡=¤=Ñ0°8Ñ;Ð<Ø¥¤ u¡¤Ñ-ñ/�à�bœf U™mœm¨eÒ3Ð3Ð3r   rO   gƒÀÊ¡E¶?)Údtyper=   rj   é   gUUUUUUÕ?r   rN   )rå   r   rI   r¥   ÚemptyÚshapeÚfloatÚanyré   Úsignr  ræ   )r   rë   r.  rì   rí   ÚclatÚihighÚilowÚauxr+  r,  Úlarge_deltaÚeÚxyr-  s                 @r   rò   z5MollweideAxes.MollweideTransform.transform_non_affine`  sò  ø€ ð4ð 4ð 4ð 4ð 4ð
 #)¤(ÑˆI�xå”5˜‘7�RœV HÑ-Ô-Ñ-ˆDØ˜5’LˆEØ�6ˆDÝ”(˜8œ>µÐ7Ñ7Ô7ˆCà�xŠx‰zŒzð &Ýœ5¥2¤6¨(°4¬.Ñ#9Ô#9Ñ9�Ø˜h tœnÑ,�Ø%& Q u¡X¤XÑ"��{Ý”f˜[Ñ)Ô)ð 2Ø˜+Ð&Ð&Ô&¨%°Ô*<Ñ<Ð&Ð&Ñ&Ø)*¨¨5©¬Ñ&�E˜;õ ”f˜[Ñ)Ô)ð 2ð " A™I��D‘	à�yŠy‰{Œ{ð FØ˜”K�Ø˜1�rœu™9 q¨!¡tÑ+°Ñ7Ñ7�Ý œe A™g¨™k­R¬W°X¸e´_Ñ-EÔ-EÑE��E‘
å”˜&œ,­eÐ4Ñ4Ô4ˆBØ�bœg c™lœlÑ*­R¬UÑ2°iÑ?Å"Ä&ÈÁ+Ä+ÑMˆBˆqˆqˆq�!ˆt‰HÝ”w˜s‘|”|¥b¤f¨S¡k¤kÑ1ˆBˆqˆqˆq�!ˆt‰HàˆIr   c                 ó@   — t                                | j        ¦  «        S r   )r%  ÚInvertedMollweideTransformrÏ   r6   s    r   rõ   z)MollweideAxes.MollweideTransform.inverted‚  s   € å ×;Ò;¸DÔ<LÑMÔMÐMr   Nr÷   r)   r   r   ÚMollweideTransformr(  ]  s>   € € € € € Ø+Ð+ð 	ð  	ð  	ðD	Nð 	Nð 	Nð 	Nð 	Nr   r?  c                   ó   — e Zd Zd„ Zd„ ZdS )ú(MollweideAxes.InvertedMollweideTransformc                 ó„  — |j         \  }}t          j        |t          j        d¦  «        z  ¦  «        }t          j        dt          j        d¦  «        z  z  |z  t          j        |¦  «        z  }t          j        d|z  t          j        d|z  ¦  «        z   t          j        z  ¦  «        }t          j        ||g¦  «        S )NrO   )rå   r   r  r  rI   ræ   ré   rê   )r   rë   r!   r½   r+  rì   rí   s          r   rò   z=MollweideAxes.InvertedMollweideTransform.transform_non_affineˆ  s–   € à”8‰DˆAˆqõ ”I˜a¥"¤'¨!¡*¤*™nÑ-Ô-ˆEÝœ !¥b¤g¨a¡j¤j¡.Ñ1°QÑ6½¼À¹¼ÑFˆIÝ”y ! e¡)­b¬f°Q¸±YÑ.?Ô.?Ñ"?Å2Ä5Ñ!HÑIÔIˆHÝ”? I¨xÐ#8Ñ9Ô9Ð9r   c                 ó@   — t                                | j        ¦  «        S r   )r%  r?  rÏ   r6   s    r   rõ   z1MollweideAxes.InvertedMollweideTransform.inverted’  s   € å ×3Ò3°DÔ4DÑEÔEÐEr   Nr   r)   r   r   r>  rA  †  s7   € € € € € ð	:ð 	:ð 	:ð	Fð 	Fð 	Fð 	Fð 	Fr   r>  c                 óº   •— t           j        dz  | _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S r  r  r
  s      €r   r   zMollweideAxes.__init__–  r  r   c                 ó,   — |                       |¦  «        S r   )r?  r  s     r   rS   z!MollweideAxes._get_core_transformœ  s   € Ø×&Ò& zÑ2Ô2Ð2r   )
r%   r&   r'   r  rÍ   r?  r>  r   rS   rÊ   rË   s   @r   r%  r%  Z  s±   ø€ € € € € Ø€Dð'Nð 'Nð 'Nð 'Nð 'N˜]ñ 'Nô 'Nð 'NðRFð Fð Fð Fð F ]ñ Fô Fð Fð ð ð ð ð ð3ð 3ð 3ð 3ð 3ð 3ð 3r   r%  c                   óx   ‡ — e Zd ZdZ G d„ de¦  «        Z G d„ de¦  «        Zdddœˆ fd„
Zˆ fd	„Zd
„ Z	d„ Z
ˆ xZS )ÚLambertAxesÚlambertc                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )úLambertAxes.LambertTransformzThe base Lambert transform.c                 óX   — t                                | |¦  «         || _        || _        dS )zÔ
            Create a new Lambert transform.  Resolution is the number of steps
            to interpolate between each input line segment to approximate its
            path in curved Lambert space.
            N©rÍ   r   Ú_center_longitudeÚ_center_latitude©r   Úcenter_longitudeÚcenter_latituderÐ   s       r   r   z%LambertAxes.LambertTransform.__init__¦  s0   € õ ×"Ò" 4¨Ñ4Ô4Ð4Ø%5ˆDÔ"Ø$3ˆDÔ!Ð!Ð!r   c                 ó<  — |j         \  }}| j        }| j        }t          j        |¦  «        }t          j        |¦  «        }||z
  }t          j        |¦  «        }	t          j        dt          j        |¦  «        |z  z   t          j        |¦  «        |z  |	z  z   d¦  «        }
t          j        d|
z  ¦  «        }||z  t          j        |¦  «        z  }|t          j        |¦  «        |z  t          j        |¦  «        |z  |	z  z
  z  }t          j        ||g¦  «        S )NrN   gVçž¯Ò<rO   )	rå   rM  rN  r   ræ   ré   Úmaximumr  rê   )r   rë   rì   rí   Úclongr6  Úcos_latÚsin_latÚ	diff_longÚcos_diff_longÚinner_kÚkr!   r½   s                 r   rò   z1LambertAxes.LambertTransform.transform_non_affine°  s  € à"(¤(ÑˆI�xØÔ*ˆEØÔ(ˆDÝ”f˜XÑ&Ô&ˆGÝ”f˜XÑ&Ô&ˆGØ! EÑ)ˆIÝœF 9Ñ-Ô-ˆMå”jØ•B”F˜4‘L”L Ñ(Ñ(­2¬6°$©<¬<¸Ñ+?ÀÑ+MÑMØñô ˆGõ ”˜˜G™Ñ$Ô$ˆAØ�G‘�BœF 9Ñ-Ô-Ñ-ˆAØ•R”V˜D‘\”\ 'Ñ)­B¬F°4©L¬L¸Ñ,@ÀÑ,NÑNÑOˆAå”? A q 6Ñ*Ô*Ð*r   c                 óX   — t                                | j        | j        | j        ¦  «        S r   )rG  ÚInvertedLambertTransformrM  rN  rÏ   r6   s    r   rõ   z%LambertAxes.LambertTransform.invertedÃ  s,   € å×7Ò7ØÔ&ØÔ%ØÔ ñ"ô "ð "r   N)r%   r&   r'   r(   r   rò   rõ   r)   r   r   ÚLambertTransformrJ  £  sG   € € € € € Ø)Ð)ð	4ð 	4ð 	4ð	+ð 	+ð 	+ð&	"ð 	"ð 	"ð 	"ð 	"r   r]  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ú$LambertAxes.InvertedLambertTransformc                 óX   — t                                | |¦  «         || _        || _        d S r   rL  rO  s       r   r   z-LambertAxes.InvertedLambertTransform.__init__Ì  s.   € Ý×"Ò" 4¨Ñ4Ô4Ð4Ø%5ˆDÔ"Ø$3ˆDÔ!Ð!Ð!r   c           	      ó`  — |j         \  }}| j        }| j        }t          j        t          j        ||¦  «        d¦  «        }dt          j        d|z  ¦  «        z  }t          j        |¦  «        }t          j        |¦  «        }	t          j        |	t          j        |¦  «        z  ||z  t          j        |¦  «        z  |z  z   ¦  «        }
|t          j	        ||z  |t          j        |¦  «        z  |	z  |t          j        |¦  «        z  |z  z
  z  ¦  «        z   }t          j
        ||
g¦  «        S )Ng•Ö&è.>rO   rj   )rå   rM  rN  r   rS  Úhypotr  ré   ræ   r  rê   )r   rë   r!   r½   rT  r6  ÚpÚcÚsin_cÚcos_crí   rì   s               r   rò   z9LambertAxes.InvertedLambertTransform.transform_non_affineÑ  s  € à”8‰DˆAˆqØÔ*ˆEØÔ(ˆDÝ”
�2œ8 A q™>œ>¨4Ñ0Ô0ˆAØ•B”I˜c A™gÑ&Ô&Ñ&ˆAÝ”F˜1‘I”IˆEÝ”F˜1‘I”IˆEå”y ¥r¤v¨d¡|¤|Ñ!3Ø#$ U¡7­2¬6°$©<¬<Ñ#7¸1Ñ"<ñ">ñ ?ô ?ˆHà¥¤	Ø�5‘˜Q�rœv d™|œ|™^¨EÑ1°Aµb´f¸T±l´l±NÀ5Ñ4HÑHÑIñ!Kô !Kñ KˆIõ ”? I¨xÐ#8Ñ9Ô9Ð9r   c                 óX   — t                                | j        | j        | j        ¦  «        S r   )rG  r]  rM  rN  rÏ   r6   s    r   rõ   z-LambertAxes.InvertedLambertTransform.invertedâ  s,   € å×/Ò/ØÔ&ØÔ%ØÔ ñ"ô "ð "r   N)r%   r&   r'   r   rò   rõ   r)   r   r   r\  r_  Ê  sA   € € € € € ð	4ð 	4ð 	4ð
	:ð 	:ð 	:ð"	"ð 	"ð 	"ð 	"ð 	"r   r\  r   )rP  rQ  c                óÖ   •— t           j        dz  | _        || _        || _         t          ¦   «         j        |i |¤Ž |                      ddd¬¦  «         |                      ¦   «          d S )NrO   Úequalr  r  r  )	r   rI   r\   rM  rN  r>   r   r	  r-   )r   rP  rQ  r•   r–   rL   s        €r   r   zLambertAxes.__init__é  sf   ø€ Ý œe a™iˆÔØ!1ˆÔØ /ˆÔØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ø�Š˜¨E¸#ˆÑ>Ô>Ð>Ø�
Š
‰Œˆˆˆr   c                 ó”   •— t          ¦   «                              ¦   «          | j                             t	          ¦   «         ¦  «         d S r   )r>   r-   r3   r°   r   rK   s    €r   r-   zLambertAxes.clearñ  s4   ø€ å‰Œ�Š‰ŒˆØŒ
×&Ò&¥}¡¤Ñ7Ô7Ð7Ð7Ð7r   c                 óD   — |                       | j        | j        |¦  «        S r   )r]  rM  rN  r  s     r   rS   zLambertAxes._get_core_transformö  s)   € Ø×$Ò$ØÔ"ØÔ!Øñô ð 	r   c                 ól   — t          ¦   «                              d¦  «                             dd¦  «        S )Ng      Ð?rj   )r   r[   r]   r6   s    r   rV   z!LambertAxes._get_affine_transformü  s(   € Ý‰zŒzßŠU�4‰[Œ[ßŠY�s˜CÑ Ô ð	!r   )r%   r&   r'   r  rÍ   r]  r\  r   r-   rS   rV   rÊ   rË   s   @r   rG  rG     sÚ   ø€ € € € € Ø€Dð%"ð %"ð %"ð %"ð %"˜=ñ %"ô %"ð %"ðN"ð "ð "ð "ð " =ñ "ô "ð "ð> 01À!ð ð ð ð ð ð ð ð8ð 8ð 8ð 8ð 8ð
ð ð ð!ð !ð !ð !ð !ð !ð !r   rG  ) Únumpyr   Ú
matplotlibrF   r   Úmatplotlib.axesr   Úmatplotlib.axisÚaxisr/   Úmatplotlib.patchesr   Úmatplotlib.pathr   Úmatplotlib.spinesr4   r�   Úmatplotlib.tickerr   r	   r
   r   Úmatplotlib.transformsr   r   r   r   rÍ   rà   r  r%  rG  r)   r   r   ú<module>rw     s  ðØ Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø  Ð  Ð  Ð  Ð  Ð  Ø #Ð #Ð #Ð #Ð #Ð #ð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FðVð Vð Vð Vð Vˆdñ Vô Vð VðrAð Að Að Að A�Iñ Aô Að Að.+0ð +0ð +0ð +0ð +0�ñ +0ô +0ð +0ð\*0ð *0ð *0ð *0ð *0�ñ *0ô *0ð *0ðZC3ð C3ð C3ð C3ð C3�Gñ C3ô C3ð C3ðL_!ð _!ð _!ð _!ð _!�'ñ _!ô _!ð _!ð _!ð _!r   