
    (&h                         d 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 dd
lmZmZ d Zd ZddZd Zd ZdS )z.Geometry factories based on the geo interface.    N)GeometryTypeError)GeometryCollection)
LineString)MultiLineString)
MultiPoint)MultiPolygon)Point)
LinearRingPolygonc                     | dS t          | t          t          t          j        f          r7t          |           dk    rdS t          t          t          |                     S dS )z;Identify if coordinates or subset of coordinates are empty.NTr   F)	
isinstancelisttuplenpndarraylenallmap_is_coordinates_empty)coordinatess    O/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/geometry/geo.pyr   r      s^    t+eRZ899 {q  43,k::;;;u    c                    | dk    rt                      S | dk    rt                      S | dk    rt                      S | dk    rt                      S | dk    rt	                      S | dk    rt                      S t          d|           )z'Return empty counterpart for geom_type.point
multipoint
linestringmultilinestringpolygonmultipolygonUnknown geometry type: )r	   r   r   r   r   r   r   )	geom_types    r   _empty_shape_for_no_coordinatesr"      s    Gww	l	"	"||	l	"	"||	'	'	'   	i		yy	n	$	$~~ G) G GHHHr   Tc                 V    ||f||f| |f| |fg}|s|ddd         }t          |          S )z=Return a rectangular polygon with configurable normal vector.N)r   )minxminymaxxmaxyccwcoordss         r   boxr+   .   sC    TlT4L4,tEF "6??r   c                    t          | d          r| j        }n| }|                    d                                          }|dk    r/|d         }|                    d                                          }d|v r$t	          |d                   rt          |          S |dk    rt          |d                   S |dk    rt          |d                   S |dk    rt          |d                   S |d	k    r*t          |d         d
         |d         dd                   S |dk    rt          |d                   S |dk    rt          |d                   S |dk    rt          d |d         D                       S |dk    r/d |                    dg           D             }t          |          S t          d|          )aX  Return a new, independent geometry with coordinates copied from the context.

    Changes to the original context will not be reflected in the geometry
    object.

    Parameters
    ----------
    context :
        a GeoJSON-like dict, which provides a "type" member describing the type
        of the geometry and "coordinates" member providing a list of coordinates,
        or an object which implements __geo_interface__.

    Returns
    -------
    Geometry object

    Examples
    --------
    Create a Point from GeoJSON, and then create a copy using __geo_interface__.

    >>> from shapely.geometry import shape
    >>> context = {'type': 'Point', 'coordinates': [0, 1]}
    >>> geom = shape(context)
    >>> geom.geom_type == 'Point'
    True
    >>> geom.wkt
    'POINT (0 1)'
    >>> geom2 = shape(geom)
    >>> geom == geom2
    True

    __geo_interface__typefeaturegeometryr   r   r   
linearringr   r      Nr   r   r   c                 2    g | ]}|d          |dd         gS )r   r2   N ).0cs     r   
<listcomp>zshape.<locals>.<listcomp>q   s(    FFFqadAabbE]FFFr   geometrycollectionc                 ,    g | ]}t          |          S r4   )shape)r5   gs     r   r7   zshape.<locals>.<listcomp>s   s    <<<aq<<<r   
geometriesr    )hasattrr-   getlowerr   r"   r	   r   r
   r   r   r   r   r   r   )contextobr!   geomss       r   r:   r:   6   s   B w+,, &v$$&&II
^FF6NN((**	4R5FGG.y999	g		R&'''	l	"	""]+,,,	l	"	""]+,,,	i		r-(+R->qrr-BCCC	l	"	""]+,,,	'	'	'r-0111	n	$	$FFB}4EFFFGGG	*	*	*<<266,#;#;<<<!%((( G) G GHHHr   c                     | j         S )a  Return a GeoJSON-like mapping.

    Input should be a Geometry or an object which implements __geo_interface__.

    Parameters
    ----------
    ob : geometry or object
        An object which implements __geo_interface__.

    Returns
    -------
    dict

    Examples
    --------
    >>> from shapely.geometry import mapping, Point
    >>> pt = Point(0, 0)
    >>> mapping(pt)
    {'type': 'Point', 'coordinates': (0.0, 0.0)}

    )r-   )rA   s    r   mappingrD   y   s    , r   )T)__doc__numpyr   shapely.errorsr   shapely.geometry.collectionr   shapely.geometry.linestringr    shapely.geometry.multilinestringr   shapely.geometry.multipointr   shapely.geometry.multipolygonr   shapely.geometry.pointr	   shapely.geometry.polygonr
   r   r   r"   r+   r:   rD   r4   r   r   <module>rO      s   4 4     , , , , , , : : : : : : 2 2 2 2 2 2 < < < < < < 2 2 2 2 2 2 6 6 6 6 6 6 ( ( ( ( ( ( 8 8 8 8 8 8 8 8
 
 
I I I$   @I @I @IF         r   