o
    h                     @   sB   d Z ddlZddlZdd Zdd Zddd	Zejed
ddZdS )zShapely CGA algorithms.    Nc                 C   sb   t | jddddf }t ||d gj\}}t |dd |dd |dd   d S )zReturn the signed area enclosed by a ring in linear time.

    Algorithm used: https://web.archive.org/web/20080209143651/http://cgafaq.info:80/wiki/Polygon_Area
    N      g       @)nparraycoordsvstackTsum)ringr   xsys r   Q/var/www/html/scripts/venv/lib/python3.10/site-packages/shapely/algorithms/cga.pysigned_area   s   .r   c                 C   sL   t |}t |rt| } | S t |r$t | } t| | | |< | S )zIReturn a copy of the rings potentially reversed depending on `condition`.)r   asarrayallshapelyreverseanyr   )rings	conditionr   r   r   _reverse_conditioned   s   




r   Fc                    s   | d u rd S | j dv r|  fdd| jD S | j dkrPt| jg| j}t|}|d  |d<  r:t	|}t
|rPt||}| |d |dd  S | S )N)MultiPolygonGeometryCollectionc                    s   g | ]}t | qS r   )_orient_polygon).0geomexterior_cwr   r   
<listcomp>"   s    z#_orient_polygon.<locals>.<listcomp>Polygonr   r   )	geom_type	__class__geomsr   r   exterior	interiorsr   is_ccwlogical_notr   r   )geometryr    r   reverse_conditionr   r   r   r      s    





r   r   r   )ninnout)F)	__doc__numpyr   r   r   r   r   
frompyfunc_orient_polygons_vectorizedr   r   r   r   <module>   s    

