o
    ZqiKR                     @   sP  d dl Zd dlZd dlmZ d dlZd dlmZmZmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, e%ee)eee!fZ-e'ee+eee#fZ.e&ee*eee"fZ/e(ee,e ee$fZ0e-e. Z1ej2dkre1e/ e0 Z1eefZ3ej45de-e. dd	 Z6ej45d
g dej45dg dej45de1dd Z7dd Z8ej4j9ej2dk dddd Z:ej45de-dd Z;ej45de3dd Z<dd Z=dd Z>dd Z?dd  Z@d!d" ZAd#d$ ZBd%d& ZCd'd( ZDd)d* ZEd+d, ZFd-d. ZGd/d0 ZHd1d2 ZId3d4 ZJdS )5    N)assert_allclose)MultiLineString
MultiPointMultiPolygon)assert_geometries_equal)!empty_line_stringempty_line_string_mempty_line_string_zempty_line_string_zmempty_multi_polygon_mempty_multi_polygon_zempty_multi_polygon_zmgeometry_collectionline_stringline_string_mline_string_zline_string_zmlinear_ringmulti_line_stringmulti_line_string_mmulti_line_string_zmulti_line_string_zmmulti_pointmulti_point_mmulti_point_zmulti_point_zmmulti_polygonmulti_polygon_mmulti_polygon_zmulti_polygon_zmpointpoint_mpoint_zpoint_zmpolygon	polygon_m	polygon_z
polygon_zm      r   geomc                 C   s&   t jt | | g }t|| | g d S N)shapelyfrom_ragged_arrayto_ragged_arrayr   )r+   actual r1   f/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/shapely/tests/test_ragged_array.pytest_roundtripZ   s   r3   	include_m)NTF	include_zc           	      C   s   t j| | g||d\}}}tjt|dd }ddg}| j}|s(|d u r.|r.||  t jdkr7| j	}nd}|sA|d u rG|rG||  ||ksMJ d S )N)r5   r4   r   )ZaxisFr(   )
r-   r/   npallisnantolisthas_zappendgeos_versionhas_m)	r+   r5   r4   _coordsZnan_dimsexpectedr:   r=   r1   r1   r2   test_to_ragged_array`   s   

rA   c                  C   s   t ttg\} }} |jd dksJ t tg\} }} |jd dks%J t tg\} }} |jd dks7J t tg\} }} |jd dksIJ d S )N   r)      )r-   r/   r   r   shaper   r	   r   r>   r?   r1   r1   r2   test_include_z_defaultu   s   rF   zGEOS < 3.12)reasonc                  C   s   t ttg\} }} |jd dksJ t tttg\} }} |jd dks'J t tg\} }} |jd dks9J t tg\} }} |jd dksKJ t tg\} }} |jd dks]J t t	g\} }} |jd dksoJ d S )NrB   r)      rC   )
r-   r/   r   r   rD   r   r   r
   r   r   rE   r1   r1   r2   test_include_m_default   s   rI   c                 C   sN   t | | g\}}}d|j_|D ]}d|j_qt |||}t|| | g d S )NF)r-   r/   flagsZ	writeabler.   r   )r+   typr?   offsetsarrresultr1   r1   r2   test_read_only_arrays   s   
rO   c                 C   s>   t t t| | g W d    d S 1 sw   Y  d S r,   )pytestraises
ValueErrorr-   r/   )r+   r1   r1   r2   test_raise_geometry_type   s   "rS   c               
   C   s   t g d} t | \}}}tddgddgtjtjgtjtjgddgtjtjgtjtjgg}|t jjks9J t|t| ksCJ t	|| t|dksPJ t 
||}t d| d< t||  d S )N)zPOINT (0 0)zPOINT (1 1)POINT EMPTYrT   zPOINT (4 4)NrT   r   rB   rH   rT   )r-   from_wktr/   r6   arraynanGeometryTypePOINTlenr   r.   r   )rM   rK   rN   rL   r@   Zgeomsr1   r1   r2   test_points   s*   




r\   c                  C   sP  t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgg
}tjg ddd}|t jjksCJ t|| t|d	ksPJ |d
 j	tj
ksZJ t|d
 | t |||}t d| d< t||  |d
 d	d  f}t |||}t|| d	d   |d
 d d f}t |||}t|| d d  d S )N)z LINESTRING (30 10, 10 30, 40 40)z'LINESTRING (40 40, 30 30, 40 20, 30 10)LINESTRING EMPTYr]   z LINESTRING (10 10, 20 20, 10 40)Nr]         >@      $@      D@      4@)r   r)      rb   rb   
   rc   rc   int32dtyperB   r   r]   rU   )r-   rV   r/   r6   rW   rY   
LINESTRINGr   r[   rf   rd   r.   r   rM   rK   r?   rL   r@   Zexpected_offsetsrN   offsets_slicedr1   r1   r2   test_linestrings   s@   

rk   c            	      C   s  t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgg}tg d	}tg d
}|t jjkscJ t|| t|dkspJ |d j	tj
kszJ |d j	tj
ksJ t|d | t|d | t |||}t d| d< t||  |d |d dd  f}t |||}t|| dd   |d |d d d f}t |||}t|| d d  d S )N)-POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))zKPOLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))POLYGON EMPTYrm   rl   Nrm   r^   r_   r`   ra        A@     F@      .@)r      rc         r   rB   r)   r)   r)   rH   rH   rH   rC   r   rB   rm   rU   rg   )r-   rV   r/   r6   rW   rY   POLYGONr   r[   rf   rd   r.   r   	rM   rK   r?   rL   r@   expected_offsets1expected_offsets2rN   rj   r1   r1   r2   test_polygons  sX   

ry   c                  C   s@  t g d} t | \}}}tddgddgddgddgddgddgddgddgg}tg d}|t jjks;J t|| t|dksHJ |d j	tj
ksRJ t|d | t |||}t d	| d
< t||  |d dd  f}t |||}t|| dd   |d d d f}t |||}t|| d d  d S )N)z'MULTIPOINT (10 40, 40 30, 20 20, 30 10)zMULTIPOINT (30 10)MULTIPOINT EMPTYrz   z MULTIPOINT (30 10, 10 30, 40 40)Nrz   r_   r`   r^   ra   )r   rH   rq   rq   rq      r{   r{   rB   r   rz   rU   rg   )r-   rV   r/   r6   rW   rY   
MULTIPOINTr   r[   rf   rd   r.   r   ri   r1   r1   r2   test_multipointsC  s<   

r}   c            	      C   s  t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgg}tg d	}tg d
}|t jjks]J t|| t|dksjJ |d j	tj
kstJ |d j	tj
ks~J t|d | t|d | t |||}t d| d< t||  |d |d dd  f}t |||}t|| dd   |d |d d d f}t |||}t|| d d  d S )N)z'MULTILINESTRING ((30 10, 10 30, 40 40))zEMULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))MULTILINESTRING EMPTYr~   zGMULTILINESTRING ((35 10, 45 45), (15 40, 10 20), (30 10, 10 30, 40 40))Nr~   r^   r_   r`   ra   rn   ro   rp   )r   r)      rc   r*   rr      )r   rB   r)   r)   r)   r   r   r   rC   r   rB   r~   rU   rg   )r-   rV   r/   r6   rW   rY   MULTILINESTRINGr   r[   rf   rd   r.   r   rv   r1   r1   r2   test_multilinestringss  sT   

r   c            
      C   s2  t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgdd	gddgddgddgddgdd
gddgddgddgddgddgg}tg d}tg d}tg d}|t jjksJ t|| t|dksJ |d j	tj
ksJ |d j	tj
ksJ |d j	tj
ksJ t|d | t|d | t|d | t |||}t d| d< t||  |d |d |d dd  f}	t |||	}t|| dd   |d |d |d d d f}	t |||	}t|| d d  t| d S )N)zRMULTIPOLYGON (((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30)))zxMULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))MULTIPOLYGON EMPTYr   z-MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)))Nr   rn   r_   ro   rp   r`   ra   r^   g      @g      9@)r   rq   	      rs         )r   rC   r)   rq   r   rt   r)   r   rB   rC   r   rU   )r-   rV   r/   r6   rW   rY   MULTIPOLYGONr   r[   rf   rd   r.   r   print)
rM   rK   r?   rL   r@   rw   rx   Zexpected_offsets3rN   rj   r1   r1   r2   test_multipolygons  sp   

r   c                  C   T   t ttg\} }}| t jjksJ t | ||}tt	tgtg}t
|| d S r,   )r-   r/   r    r   rY   r|   r.   r6   rW   r   r   rK   r?   rL   rN   r@   r1   r1   r2   test_mixture_point_multipoint  
   r   c                  C   r   r,   )r-   r/   r   r   rY   r   r.   r6   rW   r   r   r   r1   r1   r2   'test_mixture_linestring_multilinestring  r   r   c                  C   r   r,   )r-   r/   r$   r   rY   r   r.   r6   rW   r   r   r   r1   r1   r2   !test_mixture_polygon_multipolygon  r   r   c                  C   s   t jddgddggdd} t ddg}t ddg}t ddg}tjtdd ttjj| |||f W d    n1 s@w   Y  tjtdd ttjj	| ||f W d    d S 1 scw   Y  d S )Nr   rB   Zfloat64re   rC   z,A linearring requires at least 4 coordinatesmatch)
r6   rW   rP   rQ   rR   r-   r.   rY   r   ru   r?   offsets1offsets2offsets3r1   r1   r2   &test_from_ragged_incorrect_rings_short  s$   "r   c                  C   s   t dt j} t ddg}t ddg}t ddg}tjtjdd ttj	j
| |||f W d    n1 s;w   Y  tjtjdd ttj	j| ||f W d    d S 1 s_w   Y  d S )N)rH   rC   r   rH   rB   z4Points of LinearRing do not form a closed linestringr   )r6   fullrX   rW   rP   rQ   r-   ZGEOSExceptionr.   rY   r   ru   r   r1   r1   r2   )test_from_ragged_incorrect_rings_unclosed)  s(   "r   c                	   C   s   t jtdd ttjjtddgddgg W d    n1 s#w   Y  t jtdd" tjtjj	tddgddggtddgfd W d    d S 1 sTw   Y  d S )Nz'offsets' must be providedr   r   rB   z 'offsets' should not be provided)rL   )
rP   rQ   rR   r-   r.   rY   rh   r6   rW   rZ   r1   r1   r1   r2   test_from_ragged_wrong_offsetsA  s   "r   c                  C   s   t j dd} t g d}t g d}tdD ]}ttjj	| ||f}t
|dks2J qt ddg}tdD ]}ttjj| |||f}t
|dksTJ q>d S )	Nx   )<   rC   )r   rc         (   2   r   )r   rB   rq   r   rc   r)   r   rB   )r6   randomdefault_rngreshaperW   ranger-   r.   rY   ru   r[   r   )r?   r   r   r>   Zpolygonsr   r1   r1   r2   test_from_ragged_crash_2284O  s   r   c                  C   s  t j dd} t jg dt jd}t jg dt jd}t ddg}tjtdd	 t	
t	jj| ||f W d    n1 sCw   Y  tjtd
d	 t	
t	jj| |||f W d    n1 sfw   Y  t j dd} t jg dt jd}t jg dt jd}tjtdd	 t	
t	jj| ||f W d    n1 sw   Y  tjtdd	 t	
t	jj| |||f W d    n1 sw   Y  t ddg}tjtdd	 t	
t	jj| |||f W d    d S 1 sw   Y  d S )NF   )#   rC   )r   rc   r   re   )r   rB   rq   r   rC   z1Number of rings indicated by the geometry offsetsr   z-Number of rings indicated by the part offsets)r   rc   r   )r   rB   rC   z5Number of coordinates indicated by the linear offsetsr)   z:Number of geometry parts indicated by the geometry offsets)r6   r   r   r   rW   Zuint32rP   rQ   rR   r-   r.   rY   ru   r   r   r1   r1   r2   %test_from_ragged_wrong_offsets_valuesh  sV   "r   )Knumpyr6   rP   Znumpy.testingr   r-   r   r   r   Zshapely.testingr   Zshapely.tests.commonr   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!   r"   r#   r$   r%   r&   r'   Z	all_typesZall_types_zZall_types_mZall_types_zmZall_types_dims_combosr<   Zall_types_not_supportedmarkZparametrizer3   rA   rF   ZskipifrI   rO   rS   r\   rk   ry   r}   r   r   r   r   r   r   r   r   r   r   r1   r1   r1   r2   <module>   s    %


	





#1@0>J