o
    hKR                     @   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   Z/var/www/html/scripts/venv/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   )axisFr(   )
r-   r/   npallisnantolisthas_zappendgeos_versionhas_m)	r+   r5   r4   _coordsnan_dimsexpectedr;   r>   r1   r1   r2   test_to_ragged_array`   s   

rC   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   rH   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 )NrD   r)      rE   )
r-   r/   r   r   rF   r   r   r
   r   r   rG   r1   r1   r2   test_include_m_default   s   rK   c                 C   sN   t | | g\}}}d|j_|D ]}d|j_qt |||}t|| | g d S )NF)r-   r/   flags	writeabler.   r   )r+   typr@   offsetsarrresultr1   r1   r2   test_read_only_arrays   s   
rR   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   "rV   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 EMPTYrW   zPOINT (4 4)NrW   r   rD   rJ   rW   )r-   from_wktr/   r7   arraynanGeometryTypePOINTlenr   r.   r   )rP   rN   rQ   rO   rB   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 EMPTYra   z LINESTRING (10 10, 20 20, 10 40)Nra         >@      $@      D@      4@)r   r)      rf   rf   
   rg   rg   int32dtyperD   r   ra   rX   )r-   rY   r/   r7   rZ   r\   
LINESTRINGr   r^   rj   rh   r.   r   rP   rN   r@   rO   rB   expected_offsetsrQ   offsets_slicedr1   r1   r2   test_linestrings   s@   

rp   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 EMPTYrr   rq   Nrr   rb   rc   rd   re        A@     F@      .@)r      rg         r   rD   r)   r)   r)   rJ   rJ   rJ   rE   r   rD   rr   rX   rk   )r-   rY   r/   r7   rZ   r\   POLYGONr   r^   rj   rh   r.   r   	rP   rN   r@   rO   rB   expected_offsets1expected_offsets2rQ   ro   r1   r1   r2   test_polygons  sX   

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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 EMPTYr   z MULTIPOINT (30 10, 10 30, 40 40)Nr   rc   rd   rb   re   )r   rJ   rv   rv   rv      r   r   rD   r   r   rX   rk   )r-   rY   r/   r7   rZ   r\   
MULTIPOINTr   r^   rj   rh   r.   r   rm   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   rb   rc   rd   re   rs   rt   ru   )r   r)      rg   r*   rw      )r   rD   r)   r)   r)   r   r   r   rE   r   rD   r   rX   rk   )r-   rY   r/   r7   rZ   r\   MULTILINESTRINGr   r^   rj   rh   r.   r   r{   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   rs   rc   rt   ru   rd   re   rb   g      @g      9@)r   rv   	      rx         )r   rE   r)   rv   r   ry   r)   r   rD   rE   r   rX   )r-   rY   r/   r7   rZ   r\   MULTIPOLYGONr   r^   rj   rh   r.   r   print)
rP   rN   r@   rO   rB   r|   r}   expected_offsets3rQ   ro   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   r\   r   r.   r7   rZ   r   r   rN   r@   rO   rQ   rB   r1   r1   r2   test_mixture_point_multipoint  
   r   c                  C   r   r,   )r-   r/   r   r   r\   r   r.   r7   rZ   r   r   r   r1   r1   r2   'test_mixture_linestring_multilinestring  r   r   c                  C   r   r,   )r-   r/   r$   r   r\   r   r.   r7   rZ   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   rD   float64ri   rE   z,A linearring requires at least 4 coordinatesmatch)
r7   rZ   rS   rT   rU   r-   r.   r\   r   rz   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)rJ   rE   r   rJ   rD   z4Points of LinearRing do not form a closed linestringr   )r7   fullr[   rZ   rS   rT   r-   GEOSExceptionr.   r\   r   rz   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   rD   z 'offsets' should not be provided)rO   )
rS   rT   rU   r-   r.   r\   rl   r7   rZ   r]   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   )<   rE   )r   rg         (   2   r   )r   rD   rv   r   rg   r)   r   rD   )r7   randomdefault_rngreshaperZ   ranger-   r.   r\   rz   r^   r   )r@   r   r   r?   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   )#   rE   )r   rg   r   ri   )r   rD   rv   r   rE   z1Number of rings indicated by the geometry offsetsr   z-Number of rings indicated by the part offsets)r   rg   r   )r   rD   rE   z5Number of coordinates indicated by the linear offsetsr)   z:Number of geometry parts indicated by the geometry offsets)r7   r   r   r   rZ   uint32rS   rT   rU   r-   r.   r\   rz   r   r   r1   r1   r2   %test_from_ragged_wrong_offsets_valuesh  sV   "r   )Knumpyr7   rS   numpy.testingr   r-   r   r   r   shapely.testingr   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'   	all_typesall_types_zall_types_mall_types_zmall_types_dims_combosr=   all_types_not_supportedmarkparametrizer3   rC   rH   skipifrK   rR   rV   r`   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r1   r1   r1   r2   <module>   s    %


	





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