o
    hj%                     @   s  d dl Zd dlZd dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZ ejjejdk ddejd	ee d
d Zejjejdk dddd Zejjejdk dddd Zejjejdk dddd Zejjejdk dddd Zejjejdk ddejd	edd Zejjejdk ddejd	edd Zejjejdk dddd Zejjejdk dddd Zejjejdkdddd ZdS )    N)Geometry
LineStringMultiPolygonPolygon)UnsupportedGEOSVersionError)assert_geometries_equal)	all_typesall_types_zempty_line_string)      r   zrequires >= 3.12)reasongeometryc                 C   sd   t | g}|jdksJ |jtjksJ | du sJ t | g}tjt	gt
d}t|| d S )Nr   T)dtype)shapelycoverage_is_validndimr   npbool_itemcoverage_invalid_edgesarrayr
   objectr   )r   actualexpected r   V/var/www/html/scripts/venv/lib/python3.10/site-packages/shapely/tests/test_coverage.pytest_coverage_is_valid   s   r   c                  C   sJ   t ddgt ddgtg dg} t| sJ t| tk s#J d S )Nr   r      r    r    r   r   r    r   r"   r   r!   r   )r   r   r   r   r   r
   allgeomsr   r   r   $test_coverage_is_valid_non_polygonal!   s   


r'   c                  C   s   t g d} t g d}t| |gsJ tt| |g s#J t g d}t| |gr2J t| |g}tddgtg dg}t|| t g d}t| |grYJ t| |g}t| riJ d S )Nr   r   r!   r   r   r   r"   r   )r         ?r+   r   r"   r   r   r   )r   r*   r   )r   r!   r   r"   r   )	r   r   r   is_emptyr   r$   r   r   any)poly1poly2poly2bresultr   poly3r   r   r    test_coverage_is_valid_polygonal.   s   
r3   c                  C   s  t d} t d}t d}t d}t j| |gddsJ t j| |gdds*J t j| |gdd}t|tgd  t j| |gdd}t|tgd  t j| |gddrWJ t j| |gddrbJ t d	d
g}t j| |gdd}t|| t j| |gdd}t|| t j| |gddsJ t j| |gddsJ t j| |gddrJ t j| |gddrJ t j| |gddsJ tt j| |gddtgd  tt j| |gddt d	dg d S )N4POLYGON ((0 10, 10 10, 10 7, 10 3, 10 0, 0 0, 0 10))7POLYGON ((10 10, 20 10, 20 0, 10 0, 10 3, 10 7, 10 10))=POLYGON ((10 10, 20 10, 20 0, 10 0, 10 3, 10 5, 10 7, 10 10))z=POLYGON ((10 10, 20 10, 20 0, 10 0, 10 3, 11 5, 10 7, 10 10))        )	gap_widthg       @   LINESTRING (10 7, 10 3)LINESTRING (10 3, 10 5, 10 7)r+         ?g      ?zLINESTRING (10 3, 11 5, 10 7))r   from_wktr   r   r   r
   )r.   r/   poly2_extrapoly2_shiftr1   r   r   r   r    test_coverage_is_valid_gap_widthD   sH   



r@   c                  C   s   t d} t d}t d}t d}t| ||g| ||gg}t j|d}t dgd g dg}t|| tj|d	d
}t j|d}t|| d S )Nr4   r5   r6   z7POLYGON ((20 10, 30 10, 30 7, 30 3, 30 0, 20 0, 20 10))r7   LINESTRING EMPTYr   )r:   r;   rA   F)order)r   r=   r   r   libr   r   )r.   r/   r>   r2   arrr1   r   arr2r   r   r   "test_coverage_invalid_edges_gufuncz   s"   




rG   zGEOS < 3.12c                 C   s   | j dv r't| d}t|tsJ t|t| ksJ || s%J d S tjt	dd t| d W d    d S 1 s@w   Y  d S )Nr   r   r7   incorrect geometry typematch)
	geom_typer   coverage_simplify
isinstancer   get_type_idequalspytestraises	TypeErrorr   r   r   r   r   test_coverage_simplify_scalars   s   
"rU   c                 C   s   | j dv r,t| | gd}t|tjsJ |jdksJ t|t| k s*J d S t	j
tdd t| | gd W d    d S 1 sGw   Y  d S )NrH   r7   )r9   rI   rJ   )rL   r   rM   rN   r   ndarrayshaperO   r$   rQ   rR   rS   rT   r   r   r   !test_coverage_simplify_geom_types   s   
 "rX   c                  C   s@   t tg dtg dg} t| d}|tdsJ d S )Nr#   )r9   r9   )r9   r   )r   r   )r   r9   rY   r    z=MULTIPOLYGON (((0 1, 1 1, 1 0, 0 1)), ((2 3, 3 3, 3 2, 2 3))))r   r   r   rM   rP   r=   )mpr   r   r   r   #test_coverage_simplify_multipolygon   s   

r[   c                  C   s   t tg dtg dg} t| d}t| d}t| d}t|t|  s0J t|tddg s?J t|tdd	g sNJ tj| dd
d}t|tddg seJ d S )N)r   )   r   r\   
   r^      r   r^   r   )ra   r_   r]   )r\   r\   )r   r\   ra   r       r^   z)POLYGON ((20 10, 0 10, 0 0, 20 0, 20 10))z+POLYGON ((20 10, 0 10, 0 20, 20 20, 20 10))z$POLYGON ((20 10, 0 10, 20 0, 20 10))z$POLYGON ((20 10, 0 10, 0 20, 20 10))F)simplify_boundary)	r   r   r   r   rM   rP   	normalizer$   r=   )polygonslow_tolerancemid_tolerancehigh_toleranceno_boundaryr   r   r   test_coverage_simplify_array   sP   	

rj   c                  C   s   t g dt g dg} tt t|  W d    n1 s!w   Y  tt t|  W d    n1 s;w   Y  tt t| d W d    d S 1 sWw   Y  d S )Nr(   r)   r<   )r   rQ   rR   r   r   r   r   rM   r%   r   r   r   test_coverage_unsupported_geos   s   

"rk   )numpyr   rQ   r   r   r   r   r   shapely.errorsr   shapely.testingr   shapely.tests.commonr   r	   r
   markskipifgeos_versionparametrizer   r'   r3   r@   rG   rU   rX   r[   rj   rk   r   r   r   r   <module>   s<    


5


+