
    _ 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y)z.Geometry factories based on the geo interface.    N)GeometryTypeError)GeometryCollection)
LineString)MultiLineString)
MultiPoint)MultiPolygon)Point)
LinearRingPolygonc                     | yt        | t        t        t        j                  f      r(t        |       dk(  ryt        t        t        |             S y)z;Identify if coordinates or subset of coordinates are empty.Tr   F)	
isinstancelisttuplenpndarraylenallmap_is_coordinates_empty)coordinatess    p/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/shapely/geometry/geo.pyr   r      sF    +eRZZ89{q 3,k:;;    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"      sv    Gw	l	"|	l	"|	'	'  	i	y	n	$~"9) GHHr   c                 H    ||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+   .   s:    TlT4L4,tEF"6?r   c           	         t        | d      r| j                  }n| }|j                  d      j                         }|dk(  r$|d   }|j                  d      j                         }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 cg c]  }|d
   |dd g c}      S |dk(  r3|j                  dg       D cg c]  }t        |       }}t        |      S t        d|      c c}w c c}w )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   geometrycollection
geometriesr    )hasattrr-   getlowerr   r"   r	   r   r
   r   r   r   r   shaper   r   )contextobr!   cggeomss         r   r8   r8   6   s   B w+,&&v$$&II
^FF6N((*	4R5FG.y99	g	R&''	l	""]+,,	l	""]+,,	i	r-(+R->qr-BCC	l	""]+,,	'	'r-011	n	$B}4EFqadAabE]FGG	*	*#%66,#;<aq<<!%(("9) GHH G<s   E,?E1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-   )r:   s    r   mappingr?   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+   r8   r?    r   r   <module>rK      s@    4  , : 2 < 2 6 ( 8
I$@IF r   