§
    ¤”j6  ã                   óR   — d dl mZ d dlmZ d dlmZ d dlmZ  G d„ de¦  «        Z	dS )é    )Ú
prototypes)ÚGEOSGeometry)ÚGEOM_PTR)Ú
LinearRingc                   óö   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zed„ ¦   «         Zd„ Z	d„ Z
	 dd	„Zd
„ Zd„ Zd„ Zej        Zej        Zed„ ¦   «         Zd„ Zd„ Z eee¦  «        ZeZed„ ¦   «         ZeZed„ ¦   «         Zˆ xZS )ÚPolygoné   c                 óØ  •— |s0 t          ¦   «         j        |                      dd¦  «        fi |¤Ž dS |^}}t          |¦  «        }|dk    rgt	          |d         t
          t          f¦  «        rE|d         sd}d}n8t	          |d         d         t          ¦  «        r|d         }t          |¦  «        }|                      |dz   |g|¢¦  «        } t          ¦   «         j        |fi |¤Ž dS )aÓ  
        Initialize on an exterior ring and a sequence of holes (both
        instances may be either LinearRing instances, or a tuple/list
        that may be constructed into a LinearRing).

        Examples of initialization, where shell, hole1, and hole2 are
        valid LinearRing geometries:
        >>> from django.contrib.gis.geos import LinearRing, Polygon
        >>> shell = hole1 = hole2 = LinearRing()
        >>> poly = Polygon(shell, hole1, hole2)
        >>> poly = Polygon(shell, (hole1, hole2))

        >>> # Example where a tuple parameters are used:
        >>> poly = Polygon(((0, 0), (0, 10), (10, 10), (10, 0), (0, 0)),
        ...                ((4, 4), (4, 6), (6, 6), (6, 4), (4, 4)))
        r   Nr	   © )ÚsuperÚ__init__Ú_create_polygonÚlenÚ
isinstanceÚtupleÚlistr   )ÚselfÚargsÚkwargsÚext_ringÚ
init_holesÚn_holesÚpolygonÚ	__class__s          €ún/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/django/contrib/gis/geos/polygon.pyr   zPolygon.__init__
   s  ø€ ð" ð 	Ø�E‰GŒGÔ˜T×1Ò1°!°TÑ:Ô:ÐEÐE¸fÐEÐEÐEØˆFð !%Ðˆ�:Ý�j‘/”/ˆð �aŠ<ˆ<�J z°!¤}µu½d°mÑDÔDˆ<Ø˜a”=ð *Ø�
Ø��Ý˜J qœM¨!Ô,­jÑ9Ô9ð *Ø'¨œ]�
Ý˜j™/œ/�à×&Ò& w°¡{°XÐ4KÀ
Ð4KÑLÔLˆØ�‰ŒÔ˜Ð+Ð+ FÐ+Ð+Ð+Ð+Ð+ó    c              #   ó\   K  — t          t          | ¦  «        ¦  «        D ]}| |         V — ŒdS )z&Iterate over each ring in the polygon.N)Úranger   )r   Úis     r   Ú__iter__zPolygon.__iter__0   s<   è è € å•s˜4‘y”yÑ!Ô!ð 	ð 	ˆAØ�q”'ˆMˆMˆMˆMð	ð 	r   c                 ó   — | j         dz   S )z+Return the number of rings in this Polygon.r	   )Únum_interior_rings©r   s    r   Ú__len__zPolygon.__len__5   s   € àÔ&¨Ñ*Ð*r   c                 óî   — |\  }}}}|D ]N}t          |t          t          f¦  «        s0t          d|›d|›d|›d|›d|›d|›d|›d|›d|›d|›d�¦  «        c S ŒOt	          ||f||f||f||f||ff¦  «        S )z2Construct a Polygon from a bounding box (4-tuple).z	POLYGON((ú z, z)))r   ÚfloatÚintr   r   )ÚclsÚbboxÚx0Úy0Úx1Úy1Úzs          r   Ú	from_bboxzPolygon.from_bbox9   sÊ   € ð ‰ˆˆB��BØð 	ð 	ˆAÝ˜a¥%­ Ñ.Ô.ð Ý#�|à�r�r˜2˜2˜2˜r˜r˜r 2 2 2 r r r¨2¨2¨2¨r¨r¨r°2°2°2°r°r°r¸2¸2¸2ð?ñô ð ð ð ðõ
 ˜˜R˜ 2 r (¨R°¨H°r¸2°hÀÀRÀÐIÑJÔJÐJr   c                 ó¢  ‡ — |st          j        ¦   «         S g }|D ]U}t          |t          ¦  «        r|                     |¦  «         Œ-|                     ‰                      |¦  «        ¦  «         ŒV‰                      |                     d¦  «        ¦  «        }|dz
  }|rt          |z  ˆ fd„|D ¦   «         Ž }nd }t          j        |||¦  «        S )Nr   r	   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )Ú_clone)Ú.0Úrr   s     €r   ú
<listcomp>z+Polygon._create_polygon.<locals>.<listcomp>Y   s#   ø€ Ð0OÐ0OÐ0OÀA°·²¸Q±´Ð0OÐ0OÐ0Or   )	ÚcapiÚcreate_empty_polygonr   r   ÚappendÚ_construct_ringr3   ÚpopÚcreate_polygon)r   ÚlengthÚitemsÚringsr5   Úshellr   Úholes_params   `       r   r   zPolygon._create_polygonF   sâ   ø€ ð
 ð 	/ÝÔ,Ñ.Ô.Ð.àˆØð 	6ð 	6ˆAÝ˜!�XÑ&Ô&ð 6Ø—’˜Q‘”��à—’˜T×1Ò1°!Ñ4Ô4Ñ5Ô5Ð5Ð5à—’˜EŸIšI a™LœLÑ)Ô)ˆà˜1‘*ˆØð 	Ý# gÑ-Ð0OÐ0OÐ0OÐ0OÈÐ0OÑ0OÔ0OÐPˆKˆKàˆKåÔ" 5¨+°wÑ?Ô?Ð?r   c                 ó†   — t          |t          ¦  «        rt          j        |¦  «        S t          j        |j        ¦  «        S ©N)r   r   r7   Ú
geom_cloneÚptr)r   Úgs     r   r3   zPolygon._clone_   s6   € Ý�a�Ñ"Ô"ð 	*Ý”? 1Ñ%Ô%Ð%å”? 1¤5Ñ)Ô)Ð)r   úYParameter must be a sequence of LinearRings or objects that can initialize to LinearRingsc                 óŠ   — t          |t          ¦  «        r|S 	 t          |¦  «        S # t          $ r t          |¦  «        ‚w xY w)z1Try to construct a ring from the given parameter.)r   r   Ú	TypeError)r   ÚparamÚmsgs      r   r:   zPolygon._construct_ringe   sU   € õ �e�ZÑ(Ô(ð 	ØˆLð	!Ý˜eÑ$Ô$Ð$øÝð 	!ð 	!ð 	!Ý˜C‘.”.Ð ð	!øøøs	   ™( ¨Ac                 ó’   — | j         }| j        }|                      ||¦  «        | _         |r|| _        t          j        |¦  «         d S rC   )rE   Úsridr   r7   Údestroy_geom)r   r=   r>   Úprev_ptrrM   s        r   Ú	_set_listzPolygon._set_listu   sO   € ð ”8ˆØŒyˆØ×'Ò'¨°Ñ6Ô6ˆŒØð 	ØˆDŒIÝÔ˜(Ñ#Ô#Ð#Ð#Ð#r   c                 óz   — |dk    rt          j        | j        ¦  «        S t          j        | j        |dz
  ¦  «        S )a7  
        Return the ring at the specified index. The first index, 0, will
        always return the exterior ring.  Indices > 0 will return the
        interior ring at the given index (e.g., poly[1] and poly[2] would
        return the first and second interior ring, respectively).

        CAREFUL: Internal/External are not the same as Interior/Exterior!
        Return a pointer from the existing geometries for use internally by the
        object's methods. _get_single_external() returns a clone of the same
        geometry for use by external code.
        r   r	   )r7   Úget_extringrE   Úget_intring©r   Úindexs     r   Ú_get_single_internalzPolygon._get_single_internal   s;   € ð �AŠ:ˆ:ÝÔ# D¤HÑ-Ô-Ð-õ Ô# D¤H¨e°a©iÑ8Ô8Ð8r   c                 óx   — t          t          j        |                      |¦  «        ¦  «        | j        ¬¦  «        S )N)rM   )r   r7   rD   rV   rM   rT   s     r   Ú_get_single_externalzPolygon._get_single_external‘   s8   € ÝÝŒO˜D×5Ò5°eÑ<Ô<Ñ=Ô=ÀDÄIð
ñ 
ô 
ð 	
r   c                 ó4   — t          j        | j        ¦  «        S )z$Return the number of interior rings.)r7   Ú
get_nringsrE   r#   s    r   r"   zPolygon.num_interior_ringsš   s   € õ Œ˜tœxÑ(Ô(Ð(r   c                 ó   — | d         S )z%Get the exterior ring of the Polygon.r   r   r#   s    r   Ú_get_ext_ringzPolygon._get_ext_ring    s   € à�AŒwˆr   c                 ó   — || d<   dS )z%Set the exterior ring of the Polygon.r   Nr   )r   Úrings     r   Ú_set_ext_ringzPolygon._set_ext_ring¤   s   € àˆˆQ‰ˆˆr   c                 ón   ‡ — t          ˆ fd„t          t          ‰ ¦  «        ¦  «        D ¦   «         ¦  «        S )z,Get the tuple for each ring in this Polygon.c              3   ó2   •K  — | ]}‰|         j         V — Œd S rC   )r   ©r4   r   r   s     €r   ú	<genexpr>z Polygon.tuple.<locals>.<genexpr>¯   s)   øè è € Ð=Ð= q�T˜!”W”]Ð=Ð=Ð=Ð=Ð=Ð=r   )r   r   r   r#   s   `r   r   zPolygon.tuple¬   s6   ø€ õ Ð=Ð=Ð=Ð=­Eµ#°d±)´)Ñ,<Ô,<Ð=Ñ=Ô=Ñ=Ô=Ð=r   c                 ó’   ‡ — d                      ˆ fd„t          ‰ j        ¦  «        D ¦   «         ¦  «        }d‰ d         j        ›d|›d�S )z.Return the KML representation of this Polygon.Ú c              3   ó>   •K  — | ]}d ‰|dz            j         z  V — ŒdS )z%<innerBoundaryIs>%s</innerBoundaryIs>r	   N)Úkmlrb   s     €r   rc   zPolygon.kml.<locals>.<genexpr>¶   sF   øè è € ð 
ð 
àð 4°d¸1¸q¹5´k´oÑEð
ð 
ð 
ð 
ð 
ð 
r   z<Polygon><outerBoundaryIs>r   z</outerBoundaryIs>z
</Polygon>)Újoinr   r"   rg   )r   Ú	inner_kmls   ` r   rg   zPolygon.kml³   sk   ø€ ð —G’Gð 
ð 
ð 
ð 
å˜4Ô2Ñ3Ô3ð
ñ 
ô 
ñ 
ô 
ˆ	ˆ	ð
 �ŒGŒKˆKˆKØˆIˆIð
ð 	
r   )rG   )Ú__name__Ú
__module__Ú__qualname__Ú
_minlengthr   r    r$   Úclassmethodr0   r   r3   r:   rP   rV   rX   r   Ú_set_single_rebuildÚ_set_singleÚ_assign_extended_slice_rebuildÚ_assign_extended_sliceÚpropertyr"   r\   r_   Úexterior_ringr@   r   Úcoordsrg   Ú__classcell__)r   s   @r   r   r      s~  ø€ € € € € Ø€Jð$,ð $,ð $,ð $,ð $,ðLð ð ð
+ð +ð +ð ð	Kð 	Kñ „[ð	Kð@ð @ð @ð2*ð *ð *ð(ð	!ð !ð !ð !ð $ð $ð $ð9ð 9ð 9ð$
ð 
ð 
ð
 Ô2€KØ)ÔHÐð ð)ð )ñ „Xð)ð
ð ð ðð ð ð
 �H˜]¨MÑ:Ô:€MØ€Eàð>ð >ñ „Xð>ð €Fàð	
ð 	
ñ „Xð	
ð 	
ð 	
ð 	
ð 	
r   r   N)
Údjango.contrib.gis.geosr   r7   Ú django.contrib.gis.geos.geometryr   Údjango.contrib.gis.geos.libgeosr   Ú"django.contrib.gis.geos.linestringr   r   r   r   r   ú<module>r{      s‹   ðØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðv
ð v
ð v
ð v
ð v
ˆlñ v
ô v
ð v
ð v
ð v
r   