
    (&hG                        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.z   Z1ej2        dk    re1e/z   e0z   Z1eefZ3ej4        5                    de-e.z             d             Z6ej4        5                    d	g d
          ej4        5                    dg d
          ej4        5                    de1          d                                     Z7d Z8ej4        9                    ej2        dk     d          d             Z:ej4        5                    de-          d             Z;ej4        5                    de3          d             Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHdS )    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                 n    t          j        t          j        | | g           }t          || | g           d S N)shapelyfrom_ragged_arrayto_ragged_arrayr   )r,   actuals     Z/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/tests/test_ragged_array.pytest_roundtripr4   Z   s8    &(?t(M(MNFFT4L11111    	include_m)NTF	include_zc                 ~   t          j        | | g||          \  }}}t          j        t          j        |          d                                          }ddg}| j        }|s||r|                    |            t           j        dk    r| j	        }nd}|s||r|                    |            ||k    sJ d S )N)r7   r6   r   )axisFr)   )
r/   r1   npallisnantolisthas_zappendgeos_versionhas_m)	r,   r7   r6   _coordsnan_dimsexpectedr>   rA   s	            r3   test_to_ragged_arrayrF   `   s     *	t	Y  LAvq vbhv&&Q///6688Hu~HJE #Y&5&E	"""z))
 #Y&5&E	"""xr5   c                     t          j        t          t          g          \  } }} |j        d         dk    sJ t          j        t
          g          \  } }} |j        d         dk    sJ t          j        t          g          \  } }} |j        d         dk    sJ t          j        t          g          \  } }} |j        d         dk    sJ d S )N   r*      )r/   r1   r   r   shaper   r
   r   rB   rC   s     r3   test_include_z_defaultrL   u   s     *K+GHHLAvq<?a *,=+>??LAvq<?a*,?+@AALAvq<?a*,A+BCCLAvq<?ar5   zGEOS < 3.12)reasonc                  v   t          j        t          t          g          \  } }} |j        d         dk    sJ t          j        t          t          t
          g          \  } }} |j        d         dk    sJ t          j        t          g          \  } }} |j        d         dk    sJ t          j        t          g          \  } }} |j        d         dk    sJ t          j        t          g          \  } }} |j        d         dk    sJ t          j        t          g          \  } }} |j        d         dk    sJ d S )NrH   r*      rI   )
r/   r1   r   r   rJ   r   r	   r   r   r   rK   s     r3   test_include_m_defaultrP      s8   
 *K+GHHLAvq<?a *K+WXXLAvq<?a *,?+@AALAvq<?a*,@+ABBLAvq<?a*,A+BCCLAvq<?a*,B+CDDLAvq<?ar5   c                     t          j        | | g          \  }}}d|j        _        |D ]}d|j        _        t          j        |||          }t          || | g           d S )NF)r/   r1   flags	writeabler0   r   )r,   typrC   offsetsarrresults         r3   test_read_only_arraysrX      ss     #2D$<@@C"FL $ $#	&sFG<<FFT4L11111r5   c                     t          j        t                    5  t          j        | | g           d d d            d S # 1 swxY w Y   d S r.   )pytestraises
ValueErrorr/   r1   )r,   s    r3   test_raise_geometry_typer]      s    	z	"	" . .t---. . . . . . . . . . . . . . . . . .s   >AAc            
         t          j        g d          } t          j        |           \  }}}t          j        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    sJ t          |          t          |           k    sJ t          ||           t          |          dk    sJ t          j
        ||          }t          j        d          | d<   t          ||            d S )N)zPOINT (0 0)zPOINT (1 1)POINT EMPTYr_   zPOINT (4 4)Nr_   r   rH   rO   r_   )r/   from_wktr1   r:   arraynanGeometryTypePOINTlenr   r0   r   )rV   rT   rW   rU   rE   geomss         r3   test_pointsrh      s0   

	
 	
 	

 
C #2377CxFFVRVVRVFVRVVRV	

 
H '&,,,,,v;;#c((""""FH%%%w<<1%c622E}--CGE3'''''r5   c                  J   t          j        g d          } t          j        |           \  }}}t          j        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          }|t           j        j        k    sJ t          ||           t          |          d	k    sJ |d
         j	        t          j
        k    sJ t          |d
         |           t          j        |||          }t          j        d          | d<   t          ||            |d
         d	d          f}t          j        |||          }t          || d	d                     |d
         d d         f}t          j        |||          }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 EMPTYrj   z LINESTRING (10 10, 20 20, 10 40)Nrj         >@      $@      D@      4@)r   r*      ro   ro   
   rp   rp   int32dtyperH   r   rj   r`   )r/   ra   r1   r:   rb   rd   
LINESTRINGr   rf   rs   rq   r0   r   rV   rT   rC   rU   rE   expected_offsetsrW   offsets_sliceds           r3   test_linestringsry      s   

	
 	
 	

 
C #2377Cx4L4L4L4L4L4L4L4L4L4L	
 H x ; ; ;7KKK'&11111FH%%%w<<11:rx''''GAJ 0111&sFG<<F122CGFC((( ajn&N&sFNCCFFCG,,,aj"o'N&sFNCCFFCH-----r5   c                  *   t          j        g d          } t          j        |           \  }}}t          j        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          j        g d	          }t          j        g d
          }|t           j        j        k    sJ t          ||           t          |          dk    sJ |d         j	        t          j
        k    sJ |d         j	        t          j
        k    sJ t          |d         |           t          |d         |           t          j        |||          }t          j        d          | d<   t          ||            |d         |d         dd          f}t          j        |||          }t          || dd                     |d         |d         d d         f}t          j        |||          }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 EMPTYr|   r{   Nr|   rk   rl   rm   rn        A@     F@      .@)r      rp         r   rH   r*   r*   r*   rO   rO   rO   rI   r   rH   r|   r`   rt   )r/   ra   r1   r:   rb   rd   POLYGONr   rf   rs   rq   r0   r   	rV   rT   rC   rU   rE   expected_offsets1expected_offsets2rW   rx   s	            r3   test_polygonsr     so   

	
 	
 	

 
C #2377Cx4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L'	
 H. !3!3!344!9!9!9::'&.....FH%%%w<<11:rx''''1:rx''''GAJ 1222GAJ 1222&sFG<<F//CGFC(((
 aj'!*QRR.1N&sFNCCFFCG,,,aj'!*SbS/2N&sFNCCFFCH-----r5   c                  :   t          j        g d          } t          j        |           \  }}}t          j        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          }|t           j        j        k    sJ t          ||           t          |          dk    sJ |d         j	        t          j
        k    sJ t          |d         |           t          j        |||          }t          j        d	          | d
<   t          ||            |d         dd          f}t          j        |||          }t          || dd                     |d         d d         f}t          j        |||          }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   rl   rm   rk   rn   )r   rO   r   r   r      r   r   rH   r   r   r`   rt   )r/   ra   r1   r:   rb   rd   
MULTIPOINTr   rf   rs   rq   r0   r   rv   s           r3   test_multipointsr   C  s   

	
 	
 	

 
C #2377Cx4L4L4L4L4L4L4L4L		
 H x 8 8 899'&11111FH%%%w<<11:rx''''GAJ 0111&sFG<<F122CGFC((( ajn&N&sFNCCFFCG,,,aj"o'N&sFNCCFFCH-----r5   c                     t          j        g d          } t          j        |           \  }}}t          j        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          j        g d	          }t          j        g d
          }|t           j        j        k    sJ t          ||           t          |          dk    sJ |d         j	        t          j
        k    sJ |d         j	        t          j
        k    sJ t          |d         |           t          |d         |           t          j        |||          }t          j        d          | d<   t          ||            |d         |d         dd          f}t          j        |||          }t          || dd                     |d         |d         d d         f}t          j        |||          }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   rk   rl   rm   rn   r}   r~   r   )r   r*      rp   r+   r      )r   rH   r*   r*   r*   r   r   r   rI   r   rH   r   r`   rt   )r/   ra   r1   r:   rb   rd   MULTILINESTRINGr   rf   rs   rq   r0   r   r   s	            r3   test_multilinestringsr   s  sb   

	
 	
 	

 
C #2377Cx4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L#	
 H* !:!:!:;;!9!9!9::'&66666FH%%%w<<11:rx''''1:rx''''GAJ 1222GAJ 1222&sFG<<F677CGFC(((
 aj'!*QRR.1N&sFNCCFFCG,,,aj'!*SbS/2N&sFNCCFFCH-----r5   c                  &   t          j        g d          } t          j        |           \  }}}t          j        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          j        g d          }t          j        g d          }t          j        g d          }|t           j        j        k    sJ t          ||           t          |          dk    sJ |d         j	        t          j
        k    sJ |d         j	        t          j
        k    sJ |d         j	        t          j
        k    sJ t          |d         |           t          |d         |           t          |d         |           t          j        |||          }t          j        d          | d<   t          ||            |d         |d         |d         dd          f}	t          j        |||	          }t          || dd                     |d         |d         |d         d d         f}	t          j        |||	          }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   r}   rl   r~   r   rm   rn   rk   g      @g      9@)r   r   	      r         )r   rI   r*   r   r   r   r*   r   rH   rI   r   r`   )r/   ra   r1   r:   rb   rd   MULTIPOLYGONr   rf   rs   rq   r0   r   print)
rV   rT   rC   rU   rE   r   r   expected_offsets3rW   rx   s
             r3   test_multipolygonsr     s    

	
 	
 	

 
C #2377Cx4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L3K4L4L4L4L4L4L4L4L4L4L7	
 H> !:!:!:;;11!9!9!9::'&33333FH%%%w<<11:rx''''1:rx''''1:rx''''GAJ 1222GAJ 1222GAJ 1222&sFG<<F344CGFC((( aj'!*gajn=N&sFNCCFFCG,,,aj'!*gaj"o>N&sFNCCFFCH---	&MMMMMr5   c                  $   t          j        t          t          g          \  } }}| t           j        j        k    sJ t          j        | ||          }t          j        t          t          g          t          g          }t          ||           d S r.   )r/   r1   r!   r   rd   r   r0   r:   rb   r   r   rT   rC   rU   rW   rE   s        r3   test_mixture_point_multipointr     s}    "2E;3GHHC'&11111&sFG<<FxUG,,k:;;HFH-----r5   c                  $   t          j        t          t          g          \  } }}| t           j        j        k    sJ t          j        | ||          }t          j        t          t          g          t          g          }t          ||           d S r.   )r/   r1   r   r   rd   r   r0   r:   rb   r   r   r   s        r3   'test_mixture_linestring_multilinestringr     s    "2KAR3STTC'&66666&sFG<<Fx+779JKLLHFH-----r5   c                  $   t          j        t          t          g          \  } }}| t           j        j        k    sJ t          j        | ||          }t          j        t          t          g          t          g          }t          ||           d S r.   )r/   r1   r%   r   rd   r   r0   r:   rb   r   r   r   s        r3   !test_mixture_polygon_multipolygonr     s}    "2G]3KLLC'&33333&sFG<<Fxwi00-@AAHFH-----r5   c                  .   t          j        ddgddggd          } t          j        ddg          }t          j        ddg          }t          j        ddg          }t          j        t          d          5  t          j        t
          j        j        | |||f           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        t
          j        j	        | ||f           d d d            d S # 1 swxY w Y   d S )Nr   rH   float64rr   rI   z,A linearring requires at least 4 coordinatesmatch)
r:   rb   rZ   r[   r\   r/   r0   rd   r   r   rC   offsets1offsets2offsets3s       r3   &test_from_ragged_incorrect_rings_shortr     s   X1v1v&i888FxAHxAHxAH	H
 
 
 
 
 	! -v(H7U	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
H
 
 
 
 
 	! (&8X2F	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   :)B//B36B3(D

DDc                  H   t          j        dt           j                  } t          j        ddg          }t          j        ddg          }t          j        ddg          }t	          j        t          j        d          5  t          j        t          j	        j
        | |||f           d d d            n# 1 swxY w Y   t	          j        t          j        d          5  t          j        t          j	        j        | ||f           d d d            d S # 1 swxY w Y   d S )N)rO   rI   r   rO   rH   z4Points of LinearRing do not form a closed linestringr   )r:   fullrc   rb   rZ   r[   r/   GEOSExceptionr0   rd   r   r   r   s       r3   )test_from_ragged_incorrect_rings_unclosedr   )  s   WVRV$$FxAHxAHxAH	D
 
 
 
 
 	! -v(H7U	
 	
 	
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
D
 
 
 
 
 	! (&8X2F	
 	
 	
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   )B77B;>B;"(DDDc            	         t          j        t          d          5  t          j        t          j        j        t          j        ddgddgg                     d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        t          j        j	        t          j        ddgddgg          t          j        ddg          f           d d d            d S # 1 swxY w Y   d S )Nz'offsets' must be providedr   r   rH   z 'offsets' should not be provided)rU   )
rZ   r[   r\   r/   r0   rd   ru   r:   rb   re    r5   r3   test_from_ragged_wrong_offsetsr   A  sq   	z)E	F	F	F 
 
! +RX1v1v6F-G-G	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
z)K	L	L	L 
 
! &Hq!fq!f%&&Xq!f%%'	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   =A%%A),A)AC,,C03C0)Inumpyr:   rZ   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parametrizer4   rF   rL   skipifrP   rX   r]   rh   ry   r   r   r   r   r   r   r   r   r   r   r   r5   r3   <module>r      s        ) ) ) ) ) )  = = = = = = = = = = 3 3 3 3 3 3" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "J 
	    "K/ 
:%%1K?,N   [!8992 2 :92
 &9&9&9::&9&9&9::!677    87 ;: ;: $     " G(:5mLL    ML . ++2 2 ,+2 !899. . :9.
 (  (  (F.. .. ..b=. =. =.@-. -. -.`;. ;. ;.|G G GT. . .. . .. . .
 
 
,
 
 
0
 
 
 
 
r5   