
    (&hj%                        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                            ej        dk     d          ej                            d	eez             d
                         Zej                            ej        dk     d          d             Zej                            ej        dk     d          d             Zej                            ej        dk     d          d             Zej                            ej        dk     d          d             Zej                            ej        dk     d          ej                            d	e          d                         Zej                            ej        dk     d          ej                            d	e          d                         Zej                            ej        dk     d          d             Zej                            ej        dk     d          d             Zej                            ej        dk    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                 4   t          j        | g          }|j        dk    sJ |j        t          j        k    sJ |                                du sJ t          j        | g          }t	          j        t          gt                    }t          ||           d S )Nr   T)dtype)shapelycoverage_is_validndimr   npbool_itemcoverage_invalid_edgesarrayr   objectr   )r   actualexpecteds      V/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/tests/test_coverage.pytest_coverage_is_validr      s     &z22F;!<28####;;==D    +XJ77Fx*+6:::HFH-----    c                      t          ddg          t          ddg          t          g d          g} t          j        |           sJ t          j        |           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geomss    r   $test_coverage_is_valid_non_polygonalr*   !   s    
 	FF#$$FF#$$88899E
 $U+++++*5115FFKKMMMMMMMr   c                     t          g d          } t          g d          }t          j        | |g          sJ t          j        t          j        | |g                                                    sJ t          g d          }t          j        | |g          rJ t          j        | |g          }t          ddg          t          g d          g}t          ||           t          g d          }t          j        | |g          rJ t          j        | |g          }t          j        |                                          rJ 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   poly3s         r    test_coverage_is_valid_polygonalr7   .   sb    44455E44455E$eU^44444G:E5>JJKKOOQQQQQ AAABBF(%99999+UFO<<FFF+,,j9U9U9U.V.VWHFH--- <<<==E(%88888+UEN;;F''++-------r   c                     t          j        d          } t          j        d          }t          j        d          }t          j        d          }t          j        | |gd          sJ t          j        | |gd          sJ t          j        | |gd          }t	          |t
          gdz             t          j        | |gd          }t	          |t
          gdz             t          j        | |gd          rJ t          j        | |gd          rJ t          j        d	d
g          }t          j        | |gd          }t	          ||           t          j        | |gd          }t	          ||           t          j        | |gd          sJ t          j        | |gd          sJ t          j        | |gd          rJ t          j        | |gd          rJ t          j        | |gd          sJ t	          t          j        | |gd          t
          gdz             t	          t          j        | |gd          t          j        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   )r2   r3   poly2_extrapoly2_shiftr5   r   s         r    test_coverage_is_valid_gap_widthrE   D   s    STTEVWWE "G K "G K
 $eU^sCCCCCC$eU^sCCCCCC+UENcJJJFF%6$7!$;<<<+UENcJJJFF%6$7!$;<<< (%)=MMMMMM(%)=MMMMMM	"$CD H +UK,@CPPPFFH---+UK,@CPPPFFH--- $e[%9SIIIIII$e[%9SIIIIII(%)=MMMMMM(%)=MMMMMM$e[%9SIIIIII&{';sKKK	a   &{';sKKK35TUVV    r   c                     t          j        d          } t          j        d          }t          j        d          }t          j        d          }t          j        | ||g| ||gg          }t           j                            |d          }t          j        dgdz  g dg          }t          ||           t          j        |d	
          }t           j                            |d          }t          ||           d S )Nr9   r:   r;   z7POLYGON ((20 10, 30 10, 30 7, 30 3, 30 0, 20 0, 20 10))r<   LINESTRING EMPTYr   )r?   r@   rG   F)order)r   rB   r   r   libr   r   )r2   r3   rC   r6   arrr5   r   arr2s           r   "test_coverage_invalid_edges_gufuncrM   z   s	   STTEVWWE"G K VWWE
(UE5)E;+FG
H
HC[//S99F 1$  	
	 	H FH---8Cs###D[//c::FFH-----r   zGEOS < 3.12c                    | j         dv rqt          j        | d          }t          |t                    sJ t          j        |          t          j        |           k    sJ |                    |           sJ d S t          j        t          d          5  t          j        | d           d d d            d S # 1 swxY w Y   d S )Nr   r   r<   incorrect geometry typematch)
	geom_typer   coverage_simplify
isinstancer   get_type_idequalspytestraises	TypeErrorr   r   s     r   test_coverage_simplify_scalarsr\      s    888*8S99&(+++++"6**g.A(.K.KKKKK}}X&&&&&&&]9,EFFF 	5 	5%h444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   B99B= B=c                    | j         dv rt          j        | | gd          }t          |t          j                  sJ |j        dk    sJ t          j        |          t          j        |           k                                    sJ d S t          j
        t          d          5  t          j        | | gd           d d d            d S # 1 swxY w Y   d S )NrO   r<   )r>   rP   rQ   )rS   r   rT   rU   r   ndarrayshaperV   r'   rX   rY   rZ   r[   s     r   !test_coverage_simplify_geom_typesr`      s4    888*Hh+?EE&"*-----|t#####F++w/B8/L/LLQQSSSSSSS]9,EFFF 	A 	A%x&:C@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   %C

CCc                      t          t          g d          t          g d          g          } t          j        | d          }|                    t          j        d                    sJ d S )Nr&   )r>   r>   )r>   r   )r   r   )r   r>   rb   r#   z=MULTIPOLYGON (((0 1, 1 1, 1 0, 0 1)), ((2 3, 3 3, 3 2, 2 3))))r   r   r   rT   rW   rB   )mpr   s     r   #test_coverage_simplify_multipolygonrd      s    	<<<==<<<==	

 
B &r1--F==K	
 	
      r   c                     t          j        t          j        g d          t          j        g d          g          } t          j        | d          }t          j        | d          }t          j        | d          }t          j        |t          j        |                                                     sJ t          j        |t          j        ddg                                                    sJ t          j        |t          j        dd	g                                                    sJ t          j        | dd
          }t          j        |t          j        ddg                                                    sJ d S )N)r!   )   r   rf   
   rh      r   rh   r!   )rk   ri   rg   )rf   rf   )r   rf   rk   r#      rh   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   rT   rW   	normalizer'   rB   )polygonslow_tolerancemid_tolerancehigh_toleranceno_boundarys        r   test_coverage_simplify_arrayrt      s   xOQQQRROTTTUU	
 H -h::M-h::M.x<<N>-):8)D)DEEIIKKKKK>;=	
 	
  
cee   >66	
 	
  
cee   +HbERRRK>;=	
 	
  
cee    r   c                     t          g d          t          g d          g} t          j        t                    5  t	          j        |            d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        |            d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        | d           d d d            d S # 1 swxY w Y   d S )Nr,   r-   rA   )r   rX   rY   r   r   r   r   rT   r(   s    r   test_coverage_unsupported_geosrv      s    	0001100011E 
2	3	3 ) )!%((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
2	3	3 . .&u---. . . . . . . . . . . . . . . 
2	3	3 . .!%---. . . . . . . . . . . . . . . . . .s5   AA!$A!B""B&)B&C))C-0C-)numpyr   rX   r   r   r   r   r   shapely.errorsr   shapely.testingr   shapely.tests.commonr	   r
   r   markskipifgeos_versionparametrizer   r*   r7   rE   rM   r\   r`   rd   rt   rv    r   r   <module>r      so                    7 6 6 6 6 6 3 3 3 3 3 3          G(:5>PQQY%<==. . >= RQ. G(:5>PQQ	N 	N RQ	N G(:5>PQQ. . RQ.* G(:5>PQQ2 2 RQ2j G(:5>PQQ. . RQ.6 G(:5mLLY//5 5 0/ ML5 G(:5mLLY//A A 0/ MLA G(:5mLL  ML G(:5mLL( ( ML(V G(J6?QRR. . SR. . .r   