a
    J5dW                     @   sR   d Z ddlZddlZddlmZ ddlmZ dgZG dd deZ	e	ej
jd< dS )zPoints and related utilities
    N)DimensionError)BaseGeometryPointc                   @   sb   e Zd ZdZg Zdd Zedd Zedd Zedd	 Z	ed
d Z
dddZedd ZdS )r   aq  
    A geometry type that represents a single coordinate with
    x,y and possibly z values.

    A point is a zero-dimensional feature and has zero length and zero area.

    Parameters
    ----------
    args : float, or sequence of floats
        The coordinates can either be passed as a single parameter, or as
        individual float values using multiple parameters:

        1) 1 parameter: a sequence or array-like of with 2 or 3 values.
        2) 2 or 3 parameters (float): x, y, and possibly z.

    Attributes
    ----------
    x, y, z : float
        Coordinate values

    Examples
    --------
    Constructing the Point using separate parameters for x and y:

    >>> p = Point(1.0, -1.0)

    Constructing the Point using a list of x, y coordinates:

    >>> p = Point([1.0, -1.0])
    >>> print(p)
    POINT (1 -1)
    >>> p.y
    -1.0
    >>> p.x
    1.0
    c                 G   s   t |dkrtdS t |dkr8tdt | dnRt |dkr||d }t|trZ|S t|dslt|}t	|
 }nt|
 }|jdkrtd| t|jtjsd	d
 |D }t|}t|tstd|S )Nr   zPOINT EMPTY   z#Point() takes at most 3 arguments (z given)   __getitem__z:Point() takes only scalar or 1-size vector arguments, got c                 S   s   g | ]}t |qS  )float).0cr   r   R/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/geometry/point.py
<listcomp>M       z!Point.__new__.<locals>.<listcomp>z*Invalid values passed to Point constructor)lenshapelyZfrom_wkt	TypeError
isinstancer   hasattrlistnpZasarrayZsqueezearrayndim
ValueErrorZ
issubdtypeZdtypenumberZpoints)selfargscoordsZgeomr   r   r   __new__4   s,    





zPoint.__new__c                 C   s
   t | S )zReturn x coordinate.)r   Zget_xr   r   r   r   xU   s    zPoint.xc                 C   s
   t | S )zReturn y coordinate.)r   Zget_yr   r   r   r   yZ   s    zPoint.yc                 C   s    t | std| jd d S )zReturn z coordinate.zThis point has no z coordinate.r      )r   Zhas_zr   r   r   r   r   r   z_   s    
zPoint.zc                 C   s   d| j d dS )Nr   r   )typeZcoordinates)r   r   r   r   r   __geo_interface__g   s    zPoint.__geo_interface__      ?Nc                 C   sF   | j r
dS |du r | jrdnd}|du r,d}d| d| d| ||S )	a  Returns SVG circle element for the Point geometry.

        Parameters
        ==========
        scale_factor : float
            Multiplication factor for the SVG circle diameter.  Default is 1.
        fill_color : str, optional
            Hex string for fill color. Default is to use "#66cc99" if
            geometry is valid, and "#ff3333" if invalid.
        opacity : float
            Float number between 0 and 1 for color opacity. Default value is 0.6
        z<g />Nz#66cc99z#ff3333g333333?ze<circle cx="{0.x}" cy="{0.y}" r="{1}" stroke="#555555" stroke-width="{2}" fill="{3}" opacity="{4}" />g      @r%   )Zis_emptyZis_validformat)r   Zscale_factorZ
fill_colorZopacityr   r   r   svgk   s    z	Point.svgc                 C   s   | j jS )zSeparate arrays of X and Y coordinate values

        Example:
          >>> x, y = Point(0, 0).xy
          >>> list(x)
          [0.0]
          >>> list(y)
          [0.0]
        )r   xyr   r   r   r   r(      s    zPoint.xy)r%   NN)__name__
__module____qualname____doc__	__slots__r   propertyr   r    r"   r$   r'   r(   r   r   r   r   r      s   %!




)r,   numpyr   r   Zshapely.errorsr   Zshapely.geometry.baser   __all__r   libregistryr   r   r   r   <module>   s    