
    OgE                     0   d dl Zd dlZd dlZd dlmZmZmZmZmZ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 d Zd Zd Zd Zd	 Zej:                  j=                  ej>                  dd
 dvd      d        Z ej:                  j=                  ej>                  dd
 dvd      d        Z!ej:                  j=                  ej>                  dd
 dk7  d      d        Z"ej:                  j=                  ej>                  dk  d      ej:                  jG                  d ejH                  ejJ                  ejJ                  gdej:                  j=                  ej>                  dk  d             ejH                  ejJ                  ejJ                  ejJ                  gdej:                  j=                  ej>                  dk  d            dejJ                  gdfejJ                  dgdfejJ                  dejJ                  gd fejJ                  ejJ                  dgd!fg      d"               Z&d# Z'd$ Z(d% Z)d& Z*ej:                  jG                  d'd
d(g      d)        Z+d* Z,ej:                  jG                  d+g d,      d-        Z-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2d3 Z3ej:                  jG                  d+g d4      d5        Z4d6 Z5d7 Z6ej:                  jG                  d'd
d(g      ej:                  jG                  d8d9d:g      d;               Z7d< Z8d= Z9d> Z:d? Z;d@ Z<dA Z=dB Z>dC Z?dD Z@dE ZAdF ZBdG ZCdH ZDdI ZEej:                  jG                  d+g d4      dJ        ZFdK ZGej:                  jG                  d+g d4      dL        ZHej:                  jG                  dMej                   e	       fej                   e       fej                   e
       fej                   e       fg      dN        ZMej:                  jG                  dOej                  efej                  efej                  efej                  efej                  efej                  efej                  efej                  efej                  efej                  efej                  efej                  efg      dP        ZNej:                  jG                  dOej                  efej                  efej                  efej                  efg      dQ        ZOej:                  jG                  dOej                  efej                  efej                  efej                  efej                  efej                  efej                  efej                  efej                  efg	      dR        ZPej:                  jG                  dSdTdU eg dV      fdTdW eg dX      fg      dY        ZQej:                  jG                  dSd d dd
gdd
gfdU eg dV       eg dZ      gfd d dd
gdd
gfdUdWg eg dV       eg d[      gfg      d\        ZRej:                  jG                  d]ejJ                  ejJ                  ejJ                  ejJ                  gejJ                  d ddgd ejJ                  ddgd d ejJ                  dgd d dejJ                  gg      d^        ZSd_ ZTd` ZUej:                  jG                  dadej                  dbg      dc        ZWej:                  jG                  da eXdd            de        ZYy)f    N)GeometryCollectionGeometryType
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPolygon)assert_geometries_equal)	empty_polygongeometry_collectionline_stringlinear_ringmulti_line_stringmulti_pointmulti_polygonpointpolygonc                 $    ||f||f| |f| |f||ffS N )x1y1x2y2s       `/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/shapely/tests/test_creation.pybox_tplr      s'    8b"XBx"bB8;;    c                      t        j                  ddgddgg      } t        | t        j                  dd      t        j                  dd      g       y )Nr      shapelypointsr   Pointactuals    r   test_points_from_coordsr'   #   sB    ^^aVaV,-FFW]]1a%8'--1:M$NOr   c                      t        j                  dddg      } t        | t        j                  dd      t        j                  dd      g       y )Nr    r      r!   r%   s    r   test_points_from_xyr*   (   s;    ^^A1v&FFW]]1a%8'--1:M$NOr   c            	          t        j                  ddddg      } t        | t        j                  ddd      t        j                  ddd      g       y )Nr)   r   r!   r%   s    r   test_points_from_xyzr,   -   sB    ^^Aq1a&)FFW]]1a%;W]]1aQR=S$TUr   c                     t        j                  t        d      5  t        j                  g d       d d d        t        j                  t        d      5  t        j                  dg       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nz!dimension should be 2 or 3, got 4match)r   r)   r       z!dimension should be 2 or 3, got 1r   )pytestraises
ValueErrorr"   r#   r   r   r   test_points_invalid_ndimr4   2   sk    	z)L	M %|$% 
z)L	M s % % s   A7B7B Br    )r0   
   r0      r0      zGEOS not in 3.10, 3.11, 3.12)reasonc                      t        j                  t        j                  t        j                        } | j                  dk(  sJ y NzPOINT EMPTYr"   r#   npnanwktr%   s    r   %test_points_nan_all_nan_becomes_emptyrB   :   s.    
 ^^BFFBFF+F::&&&r   )r5   r7   zGEOS not in 3.10, 3.11c                      t        j                  t        j                  t        j                  t        j                        } | j                  dk(  sJ y r=   r>   r%   s    r   +test_points_nan_3D_all_nan_becomes_empty_2DrD   C   s4    
 ^^BFFBFFBFF3F::&&&r   r9   zGEOS != 3.12c                      t        j                  t        j                  t        j                  t        j                        } | j                  dk(  sJ y )NzPOINT Z EMPTYr>   r%   s    r   (test_points_nan_3D_all_nan_becomes_emptyrF   L   s2    ^^BFFBFFBFF3F::(((r   )r0   r:   r   zGEOS < 3.12zcoords,expected_wktzPOINT (NaN NaN))r0      r   zGEOS < 3.13)markszPOINT Z (NaN NaN NaN)r)   zPOINT (1 NaN)zPOINT (NaN 1)zPOINT Z (NaN 1 NaN)zPOINT Z (NaN NaN 1)c                 P    t        j                  |       }|j                  |k(  sJ y r   )r"   r#   rA   )coordsexpected_wktr&   s      r   test_points_handle_nan_allowrL   R   s$    2 ^^F#F::%%%r   c                      t        j                  ddgddggddgddggg      } t        | t        ddg      t        ddg      g       y )Nr   r)   r    r   r   r)   r)   r    r    r"   linestringsr   r   r%   s    r   test_linestrings_from_coordsrS   o   s[      Aq6Aq6"2aVaV4D!EFF'('(	
r   c                  f    t        j                  ddgddg      } t        | t        ddg             y )Nr   r)   r    r0   r   r    r)   r0   rQ   r%   s    r   test_linestrings_from_xyrW   z   s0      !Q!Q0FFJ/?$@Ar   c                      ddg} ddgddgf}t        j                  | |      }t        |t        ddg      t        d	d
g      g       y )Nr   r)   r    r0         rU   rV   )r   rY   )r)   rZ   rQ   )xyr&   s      r   "test_linestrings_from_xy_broadcastr]      sX    	
AA	
AAA  A&F'('(	
r   c                  h    t        j                  ddgddgd      } t        | t        ddg             y )Nr   r)   r    r0   )r   r    r   )r)   r0   r   rQ   r%   s    r   test_linestrings_from_xyzr_      s2      !Q!Q3FFJ	9/E$FGr   dimr0   c           	      *   t         j                  j                  dd|       }t        j                  |d      }t	        j
                  |      }t        j                  |d      }t	        j
                  |      }t        ||       t        j                  t        j                  t        j                  |dd      dd      d      }t        j                  t        j                  |dd      dd      }t	        j
                  |      }t        ||       y )	Nr6   r0   CorderFr   r    r)   )r?   randomrandnasarrayr"   rR   r   swapaxes)r`   rJ   coords1result1coords2result2coords3result3s           r   test_linestrings_bufferrp      s    YY__RC(Fjjs+G!!'*Gjj,G!!'*GGW- jjR[[A%>1ESQGkk"++gq!4a;G!!'*GGW-r   c                      t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wNrO   )r1   r2   r3   r"   rR   r   r   r   %test_linestrings_invalid_shape_scalarrs      1    	z	" $F#$ $ $	   9Ashape)r    r)   r    r)   r)   r    r)   r    c                     t        j                  t        j                        5  t        j                  t        j                  |              d d d        y # 1 sw Y   y xY wr   )r1   r2   r"   GEOSExceptionrR   r?   ones)rv   s    r   test_linestrings_invalid_shaper}      sA     
w,,	- ,BGGEN+, , ,s   )AAc                  2   d} t        j                  dd      }t        j                  t        | j                  d            5  t        j                  |       d d d        t        j                  dd      }t        j                  t        | j                  d            5  t        j                  |       d d d        t        j                  t        j                  t        j                  d      dd	      d
d      }t        j                  t        j                  t        j                  |d      dd	      d
d	      }t        j                  t        | j                  d            5  t        j                  |       d d d        t        j                  d      }t        j                  t        | j                  d
            5  t        j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   =xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N8The ordinate \(last\) dimension should be 2 or 3, got {})r6   r    rY   rb   rc   rY   r.   re   r   r    r)   )r6   r    r)   )
r?   r|   r1   r2   r3   formatr"   rR   ri   rh   )msgrJ   s     r   test_linestrings_invalid_ndimr      sv   
ECWWZs+F	zA	7 $F#$ WWZs+F	zA	7 $F#$ [[RWWZ%8!Q?AFF[[RZZc%BAqI1aPF	zA	7 $F#$ WWZ F	zA	7 $F#$ $$ $$ $
$ $
$ $s0   G'#G4+HH'G14G>H
Hc                  t    t        j                  t        dddd            } t        | t	        g d             y Nr   r)   r)   r   rO   r   r)   rN   r   r"   linearringsr   r   r   r%   s    r   test_linearringsr      s0      Aq!!45F
CDr   c                  f    t        j                  g dg d      } t        | t        g d             y )N)r   r)   r    r   )r0   rY   rZ   r0   )r   r0   )r)   rY   )r    rZ   r   r"   r   r   r   r%   s    r   test_linearrings_from_xyr      s$      |<FFJ/O$PQr   c                  z    t        j                  t        dddd      d d       } t        | t	        g d             y )Nr   r)   r   r   r%   s    r   test_linearrings_unclosedr      s7      Aq!!4Sb!9:F
CDr   c                  `    t        j                  g d      } t        | t        g d             y )N)rN   rN   rN   )rN   rN   rN   rN   r   r%   s    r   *test_linearrings_unclosed_all_coords_equalr      s#      !9:FFJ/O$PQr   c                      t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wrr   )r1   r2   r3   r"   r   r   r   r   %test_linearrings_invalid_shape_scalarr      rt   ru   )rw   rx   ry   )r    r    r    )r)   r    r    rP   c                 T   t        j                  |       }t        j                  t              5  t        j                  |       d d d        |dxx   dz  cc<   t        j                  t              5  t        j                  |       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY wN.r)   r)   )r?   r|   r1   r2   r3   r"   r   rv   rJ   s     r   test_linearrings_invalid_shaper      s     WWU^F	z	" $F#$ 6NaN	z	" $F#$ $$ $
$ $   B3BBB'c                     d} t         j                  j                  ddd      }t        j                  t
        | j                  d            5  t        j                  |       d d d        t        j                  ||d d dgd d f   f      }t        j                  t
        | j                  d            5  t        j                  |       d d d        t         j                  j                  ddd      }t        j                  t
        | j                  d            5  t        j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r6   r0   rY   r.   r   r)   )r?   rf   rg   r1   r2   r3   r   r"   r   hstackrR   )r   rj   rl   rn   s       r   test_linearrings_invalid_ndimr      s   
ECiioob!Q'G	zA	7 %G$% ii'!aS!)"456G	zA	7 %G$% iioob!Q'G	zA	7 %G$% %% %% %
% %s$   E 8E!E E	EE!c                      t        j                  dt         j                        } t        j                  t
        j                        5  t        j                  |        d d d        y # 1 sw Y   y xY w)N)rY   r    )r?   fullr@   r1   r2   r"   r{   r   rJ   s    r   test_linearrings_all_nanr     sK    WWVRVV$F	w,,	- $F#$ $ $s   A''A0rd   rb   re   c                    t         j                  j                  dd|       }t        j                  ||      }t	        j
                  |      }t        j                  ||d d dgd d f   f      }t        j                  ||      }t	        j
                  |      }t        ||       t        j                  |d   |      }t	        j
                  |      }t        ||d          y )Nr6   rY   rc   r   )r?   rf   rg   rh   r"   r   r   r   )r`   rd   rj   rk   rl   rm   rn   ro   s           r   test_linearrings_bufferr     s     iioob!S)Gjj.G!!'*G ii'!aS!)"456Gjj.G!!'*GGW- jj51G!!'*GGWQZ0r   c            
          t        j                  t        j                  t        dddd                  } t	        | t        g d             y r   )r"   polygonsr   r   r   r
   r%   s    r   test_polygon_from_linearringr   '  s8    g11'!Q12EFGFFG,T$UVr   c                      t        t        j                  d       t               t        t        j                  d t        g      t               y )N)holes)r   r"   r   r   r   r   r   r   test_polygons_noner   ,  s0    G,,T2MBG,,T+GWr   c                  t    t        j                  t        dddd            } t        | t	        g d             y r   )r"   r   r   r   r
   r%   s    r   test_polygonsr   1  s-    gaAq12FFG,T$UVr   c            
          t        j                  t              5  t        j                  t        dddd      t        dddd             d d d        y # 1 sw Y   y xY w)Nr   r6   r)   r    )r1   r2   r3   r"   r   r   r   r   r    test_polygon_no_hole_list_raisesr   6  sM    	z	" EAr2.1a0CDE E Es   /AAc                      t        j                  t        t        j                  f      5  t        j
                  t               d d d        y # 1 sw Y   y xY wr   )r1   r2   	TypeErrorr"   r{   r   r   r   r   r   test_polygon_no_hole_wrong_typer   ;  s<    		7#8#89	:       s   AAc                      t        j                  t        t        j                  f      5  t        j
                  t        t        g       d d d        y # 1 sw Y   y xY wr   )r1   r2   r   r"   r{   r   r   r   r   r   r   !test_polygon_with_hole_wrong_typer   @  s@    		7#8#89	: /./ / /    AAc                      t        j                  t        t        j                  f      5  t        j
                  t        t        g       d d d        y # 1 sw Y   y xY wr   )r1   r2   r   r"   r{   r   r   r   r   r   r   test_polygon_wrong_hole_typer   E  s@    		7#8#89	: /ug./ / /r   c            	          t        j                  t        dddd      t        dddd      g      } t        j                  |       dk(  sJ y )Nr   r6   r)   r         X@r"   r   r   arear%   s    r   test_polygon_with_1_holer   J  sD    gaB3gaAq6I5JKF<<4'''r   c            
          t        j                  t        dddd      t        dddd      t        dddd      g      } t        j                  |       dk(  sJ y Nr   r6   r)   r    r0   rY        X@r   r%   s    r   test_polygon_with_2_holesr   O  sV    1b"1a 3WQ1a5HIF <<4'''r   c                  $   t        j                  t        j                  t        dddd            t        j                  t        dddd            d t        j                  t        dddd            g      } t        j                  |       dk(  sJ y r   )r"   r   r   r   r   r%   s    r   test_polygon_with_none_holer   V  s~    GAq"b121a 341a 34	
F <<4'''r   c            	          t        j                  t        dddd      t        dddd      gt        dddd      g      } t        j                  |       j	                         ddgk(  sJ y )Nr   r6   rZ   r)   r    r         8@r"   r   r   r   tolistr%   s    r   test_2_polygons_with_same_holer   b  sf    	Ar2	1a 34wq!Q7J6KF <<&&(T4L888r   c            
          t        j                  t        dddd      t        dddd      gt        dddd      t        dddd      g      } t        j                  |       j	                         dd	gk(  sJ y )
Nr   r6   rZ   r)   r    r0   rY   r   g      7@r   r%   s    r   !test_2_polygons_with_2_same_holesr   i  st    	Ar2	1a 34	Aq!	gaAq12F <<&&(T4L888r   c            
          t        j                  t        dddd      t        dddd      gt        dddd      gt        dddd      gg      } t        j                  |       j	                         ddgk(  sJ y )	Nr   r6   rZ   r)   r0   r    g      X@r   r   r%   s    r   $test_2_polygons_with_different_holesr   q  sz    	Ar2	1a 34
!Q1
	Aq!!4 56F <<&&(T4L888r   c                      t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wrr   )r1   r2   r3   r"   r   r   r   r   /test_polygons_not_enough_points_in_shell_scalarr   y  s1    	z	" ! ! ! !ru   c                 T   t        j                  |       }t        j                  t              5  t        j                  |       d d d        |dxx   dz  cc<   t        j                  t              5  t        j                  |       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY wr   r?   r|   r1   r2   r3   r"   r   r   s     r   (test_polygons_not_enough_points_in_shellr   ~  s     WWU^F	z	" ! ! 6NaN	z	" ! ! !! !
! !r   c                      t        j                  t              5  t        j                  t        j                  d      d       d d d        y # 1 sw Y   y xY w)Nr)   rY   r    rO   )r1   r2   r3   r"   r   r?   r|   r   r   r   /test_polygons_not_enough_points_in_holes_scalarr     s<    	z	" 5+V45 5 5s   *AAc                    t        j                  |       }t        j                  t              5  t        j                  t        j                  d      |       d d d        |dxx   dz  cc<   t        j                  t              5  t        j                  t        j                  d      |       d d d        y # 1 sw Y   bxY w# 1 sw Y   y xY w)Nr   r   r)   r   r   s     r   (test_polygons_not_enough_points_in_holesr     s     WWU^F	z	" 5+V45 6NaN	z	" 5+V45 55 5
5 5s   *B:*C:CCzfunc,expectedc                 `     | t        j                  d gt                    }t        ||       y )N)dtype)r?   arrayobjectr   )funcexpectedr&   s      r    test_create_collection_only_noner     s%     "((D601FFH-r   zfunc,sub_geomc                 L     | ||g      }t        j                  |      dk(  sJ y Nr    r"   get_num_geometriesr   sub_geomr&   s      r   test_create_collectionr     s,    $ 8X&'F%%f-222r   c                 P     | |d d |g      }t        j                  |      dk(  sJ y r   r   r   s      r   !test_create_collection_skips_noner     s0     8T423F%%f-222r   c                 r    t        j                  t              5   | |g       d d d        y # 1 sw Y   y xY wr   )r1   r2   r   )r   r   s     r   &test_create_collection_wrong_geom_typer     s/     
y	! hZ  s   
-6zcoords,ccw,expected)r   r   r)   r)   Tr   F)rN   r   rO   r   rN   c                 F    t        j                  | d|i}t        ||       y Nccwr"   boxr   rJ   r   r   r&   s       r   test_boxr     s!     [[&*c*FFH-r   )r    r   rP   rU   rN   r   )rN   rU   rP   r   rN   c                 F    t        j                  | d|i}t        ||       y r   r   r   s       r   test_box_arrayr     s!    , [[&*c*FFH-r   rJ   c                 ,    t        j                  |  J y r   )r"   r   r   s    r   test_box_nanr     s     ;;'''r   c            
         t        j                  t        j                  dd      d t        j                  dddd      g      } | d   j
                  dk(  sJ | d   j
                  dk(  sJ t        j                  |        | d   j
                  dk7  sJ | d   J | d   j
                  dk7  sJ | d   j
                  }t        j                  |        | d   j
                  |k(  sJ y Nr)   r   r    )r?   r   r"   r#   r   _geom_preparedprepare)arroriginals     r   test_preparer   ,  s    
((GNN1a($Aq!Q0GH
ICq6  A%%%q6  A%%%OOCq6  A%%%q6>>q6  A%%% 1v$$HOOCq6  H,,,r   c            
         t        j                  t        j                  dd      d t        j                  dddd      g      } t        j
                  |        | d   j                  dk7  sJ | d   j                  dk7  sJ t        j                  |        | d   j                  dk(  sJ | d   J | d   j                  dk(  sJ t        j                  |        y r   )r?   r   r"   r#   r   r   r   destroy_prepared)r   s    r   test_destroy_preparedr   ;  s    
((GNN1a($Aq!Q0GH
ICOOCq6  A%%%q6  A%%%S!q6  A%%%q6>>q6  A%%%S!r   	geom_typer   c                 |    t        j                  d|       }t        j                  |      j                         sJ y N)r    )r   )r"   empty
is_missingallr   r&   s     r   test_empty_missingr  G  s/    ]]495Ff%))+++r      c                    t        j                  d|       }t        j                  |       j                         sJ t        j                  |      j                         sJ t        j
                  |      | k(  j                         sJ y r   )r"   r   r  r  is_emptyget_type_idr  s     r   
test_emptyr	  M  sq    ]]495F'',,...F#'')))'9499;;;r   )Znumpyr?   r1   r"   r   r   r   r   r   r   r	   r
   shapely.testingr   shapely.tests.commonr   r   r   r   r   r   r   r   r   r   r'   r*   r,   r4   markskipifgeos_versionrB   rD   rF   parametrizeparamr@   rL   rS   rW   r]   r_   rp   rs   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   multipointsmultilinestringsmultipolygonsgeometrycollectionsr   r   r   r   r   r   r   r   r   MISSINGr  ranger	  r   r   r   <module>r     s     	 	 	 4
 
 
<P
P
V
 !$??)  '	'
 !$66#  '	'
 G((!,7O) P)
 G((:5mLVVRVV++$$$$z1- % 	
 	VVRVVRVV$#++$$$$z1- % 	
 RVVo&
&&!o&
&&!RVV	34
&&"&&!	34%.&/ M0&
B

H
 A'. (. $
 ,,
$,R
R
$
 
$
$%"$ A'3*-1 . (1"W
X
W
E
 
/
/
(
(	(999!
 
!
!5
 
5
5 			jl+		!	!?#45			/		$	$&8&:;	..
 			e$		!	!;/		!	!;/			(		$	$e,		$	$k2		$	$k2		$	$g.		$	$k2		$	$&78		$	$m4		$	$&9:"3#"3
 			e$		!	!;/			(		$	$g.	33
 			k*			12			k*		!	!5)		!	!7+		!	!#45			,			,			.

 	tW%MNO<=	

.
.
  Aq6Aq6"@A@A	
 Aq6Aq6"5M@A@A	
*.+*.
 	(	Aq	
BFFAq	
Arvvq	
Aq"&&	(	(-	" t\-A-A2&FG, H,
 eAh/< 0<r   