
    g                     V    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
  G d de
      Zy)	    )c_uint)gdal)
prototypes)GEOSException)GEOSGeometryc                   `    e Zd ZdZdZdZd fd	Z fdZ fdZ fdZ	e
d        Ze
d	        Zd
 Zd Zd Zd Zd ZeZed        Zej*                  d        Zed        Zej*                  d        Zed        Zej*                  d        Zed        Zej*                  d        ZeZ xZS )Point      Tc                 J   |g }nqt        |t        t        f      r|}nXt        |t        t        f      r7t        |t        t        f      r!t        |t        t        f      r|||g}n||g}nt        d      | j                  t        |      |      }t        | %  ||       y)a  
        The Point object may be initialized with either a tuple, or individual
        parameters.

        For example:
        >>> p = Point((5, 23))  # 2D point, passed in as a tuple
        >>> p = Point(5, 23, 8)  # 3D point, passed in with individual parameters
        Nz2Invalid parameters given for Point initialization.)srid)

isinstancetuplelistfloatint	TypeError_create_pointlensuper__init__)selfxyzr   coordspoint	__class__s          u/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/contrib/gis/geos/point.pyr   zPoint.__init__   s     9FE4=)FE3<(ZE3<-H!eS\*QQPQQ""3v;7 	T*    c                 <    | j                   rd S t        | 	         S N)emptyr   _to_pickle_wkbr   r   s    r   r$   zPoint._to_pickle_wkb+   s    zzt?uw'='??r    c                 F    || j                         S t        | 	  |      S r"   )_create_emptyr   _from_pickle_wkb)r   wkbr   s     r   r(   zPoint._from_pickle_wkb.   s&    '*{t!!#U8PQT8UUr    c                     | j                   r(t        j                  j                  j	                         S t
        |          S r"   )r#   r   
geometriesr	   r'   r   _ogr_ptrr%   s    r   r,   zPoint._ogr_ptr1   s4    59ZZDOO!!//1	
EJWEUEW	
r    c                 &    | j                  d d       S r"   )r   )clss    r   r'   zPoint._create_empty6   s      t,,r    c                    |st        j                  d      S |dk  s|dkD  rt        d|z        t        j                  t	        d      t	        |            }t        |      }t        j                  |dt        |             t        j                  |dt        |             |dk(  r t        j                  |dt        |             t        j                  |      S )zO
        Create a coordinate sequence, set X, Y, [Z], and create point
        Nr
   r   zInvalid point dimension: %s   r   )
capicreate_pointr   	create_csr   itercs_setxnextcs_setycs_setz)r.   ndimr   csis        r   r   zPoint._create_point:   s    
 $$T**!8tax9D@AA^^F1Ivd|4LRDG$RDG$19LLQQ(  $$r    c                     | j                  ||      }|rL| j                  }t        j                  | j                         || _        ||| _        | j                          y t        d      )Nz3Geometry resulting from slice deletion was invalid.)r   r   r1   destroy_geomptr_ptr
_post_initr   )r   lengthitemsr>   r   s        r   	_set_listzPoint._set_listN   s^      /99Ddhh'DI 	OO   UVVr    c                 >    | j                   j                  |d|       y )Nr   _cssetOrdinate)r   indexvalues      r   _set_singlezPoint._set_single[   s    UAu-r    c              #   L   K   t        t        |             D ]	  }| |     yw)z'Iterate over coordinates of this Point.N)ranger   )r   r;   s     r   __iter__zPoint.__iter__^   s"     s4y!Aq'M "s   "$c                 8    | j                   ry| j                  ryy)zBReturn the number of dimensions for this Point (either 0, 2 or 3).r   r   r
   )r#   haszr   s    r   __len__zPoint.__len__c   s    ::99r    c                 j    |dk(  r| j                   S |dk(  r| j                  S |dk(  r| j                  S y )Nr   r0   r
   )r   r   r   )r   rH   s     r   _get_single_externalzPoint._get_single_externall   s7    A:66MaZ66MaZ66M r    c                 :    | j                   j                  dd      S )z$Return the X component of the Point.r   rF   getOrdinaterP   s    r   r   zPoint.xv        xx##Aq))r    c                 >    | j                   j                  dd|       y)z!Set the X component of the Point.r   NrE   r   rI   s     r   r   zPoint.x{        	Q5)r    c                 :    | j                   j                  dd      S )z$Return the Y component of the Point.r0   r   rU   rP   s    r   r   zPoint.y   rW   r    c                 >    | j                   j                  dd|       y)z!Set the Y component of the Point.r0   r   NrE   rY   s     r   r   zPoint.y   rZ   r    c                 V    | j                   r| j                  j                  dd      S dS )z$Return the Z component of the Point.r
   r   N)rO   rF   rV   rP   s    r   r   zPoint.z   s&     .2YYtxx##Aq)@D@r    c                 l    | j                   st        d      | j                  j                  dd|       y)z!Set the Z component of the Point.zCannot set Z on 2D Point.r
   r   N)rO   r   rF   rG   rY   s     r   r   zPoint.z   s-     yy ;<<Q5)r    c                 .    | j                   j                  S )zReturn a tuple of the point.)rF   r   rP   s    r   r   zPoint.tuple   s     xx~~r    c                 "    || j                   d<   y)z6Set the coordinates of the point with the given tuple.r   N)rF   )r   tups     r   r   zPoint.tuple   s     r    )NNNN)__name__
__module____qualname__
_minlength
_maxlengthhas_csr   r$   r(   r,   classmethodr'   r   rC   rJ   rM   rQ   rS   _get_single_internalpropertyr   setterr   r   r   r   __classcell__)r   s   @r   r	   r	   	   s)   JJF+:@V

 - - % %&W.
 0* * XX* * * * XX* * A A XX* *   \\ 
 Fr    r	   N)ctypesr   django.contrib.gisr   django.contrib.gis.geosr   r1   django.contrib.gis.geos.errorr    django.contrib.gis.geos.geometryr   r	    r    r   <module>rs      s"     # 6 7 9YL Yr    