o
    A+ i{                     @   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                   @   sn   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
edd ZdddZedd ZdS )r   a  A geometry type that represents a single coordinate.

    Each coordinate has x, y and possibly z and/or m 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, m : float
        Coordinate values

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

    >>> from shapely import Point
    >>> 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rtdt | dt |dkr=|d }t|tr,|S t|ds5t|}t	|
 }nt|
 }|jdkrPtd| t|jtjs_d	d
 |D }t|}t|tsmtd|S )zCreate a new Point geometry.r   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   b/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/shapely/geometry/point.py
<listcomp>P   s    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__6   s,   





zPoint.__new__c                 C      t t| S )zReturn x coordinate.)r	   r   Zget_xr   r   r   r   xX      zPoint.xc                 C   r   )zReturn y coordinate.)r	   r   Zget_yr   r   r   r   y]   r    zPoint.yc                 C   s.   t | }t|rt | stdt|S )zReturn z coordinate.zThis point has no z coordinate.)r   Zget_zr   isnanZhas_zr   r	   )r   zr   r   r   r#   b   s   
zPoint.zc                 C   s    t | s	tdtt | S )zmReturn m coordinate.

        .. versionadded:: 2.1.0
           Also requires GEOS 3.12.0 or later.
        zThis point has no m coordinate.)r   Zhas_mr   r	   Zget_mr   r   r   r   mj   s   
zPoint.mc                 C   s(   | j }dt|dkr|d dS ddS )z4Return a GeoJSON-like mapping of the Point geometry.r   r   r   )typeZcoordinates)r   r   )r   r   r   r   r   __geo_interface__u   s   "zPoint.__geo_interface__      ?Nc                 C   sb   | j rdS |du r| jrdnd}|du rd}d| j d| j dd	|  d
d|  d| d| dS )a  Return 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?z<circle cx="z" cy="z" r="g      @z!" stroke="#555555" stroke-width="r'   z" fill="z" opacity="z" />)Zis_emptyZis_validr   r!   )r   Zscale_factorZ
fill_colorZopacityr   r   r   svg{   s   z	Point.svgc                 C   s   | j jS )zSeparate arrays of X and Y coordinate values.

        Examples
        --------
        >>> from shapely import Point
        >>> 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   r      s"    '"






)r-   numpyr   r   Zshapely.errorsr   Zshapely.geometry.baser   __all__r   libregistryr   r   r   r   <module>   s     