
    jjv                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SK
rS SKJrJrJr  S SKJrJr  S SKrS SKJrJrJr  S SKJrJrJrJrJrJrJrJrJr  S SK r \!" S5       V Vs/ s HS  n \RD                  R                  \!" S5       Vs/ s H#  n\ R                  5       \ R                  5       4PM%     sn5      PMU     snn r#\#\RH                  RK                  S5      S/-   r&\" \&5      r'\!" S	5       V s/ s H;  n \RD                  RQ                  \ R                  5       \ R                  5       5      PM=     sn r)\)S/-   r*\" \*5      r+S
 r,S r-S r.S r/S r0S r1S r2S r3S r4\ Rj                  Rm                  SSS/5      S 5       r7S r8S r9S r:\ Rj                  Rm                  S/ SQ5      S 5       r;\ Rj                  Rm                  S/ SQ5      S 5       r<\ Rj                  Rm                  S/ SQ5      S  5       r=\ Rj                  Rm                  SS!/5      S" 5       r>\ Rj                  Rm                  S/ S#Q5      S$ 5       r?\ Rj                  Rm                  S/ S#Q5      S% 5       r@\ Rj                  Rm                  S/ S&Q5      S' 5       rAS( rB\ Rj                  Rm                  SS)S*/5      S+ 5       rCS, rDS- rES. rFS/ rG\ Rj                  Rm                  S0S1S2/5      S3 5       rH\ Rj                  Rm                  S4\R                  \R                  /5      \ Rj                  Rm                  S5\R                  \R                  /5      \ Rj                  Rm                  S6S7S8/5      S9 5       5       5       rLS: rMS; rNS< rO\ Rj                  Rm                  S=S\" \" / S>Q5      \" / S?Q5      /5      4S@\" / SAQ5      4/5      SB 5       rPSC rQ\ Rj                  Rm                  SDSE/ SFQ44SGSHSISJ/5      SK 5       rRSL rSSM rTSN rUSO rV\ Rj                  Rm                  SP\R                  " \RD                  R                  / SQQ5      /SR9\R                  " \RD                  R                  / SQQ5      /5      \R                  " \RD                  R                  / SQQ5      /5      \RD                  R                  / SQQ5      /\RD                  R                  / SQQ5      /5      SS 5       rZST r[SU r\SV r]SW r^SX r_SY r`SZ ra\ Rj                  R                  \(       + S[S\9S] 5       rc\ Rj                  R                  \(       + S[S\9S^ 5       rd\ Rj                  R                  \S_S\9S` 5       re\ Rj                  Rm                  SaS\R                  /5      Sb 5       rgSc rhSd riSe rj\ Rj                  R                  \S_S\9Sf 5       rk\ Rj                  R                  \S_S\9Sg 5       rl " Sh Si5      rmSj rngs  snf s  snn f s  sn f )k    N)MultiPolygonPolygongeos_version)	CAP_STYLE
JOIN_STYLE)GEOS_GE_312
HAS_PYPROJSHAPELY_GE_21)	GeometryArray
_check_crs_crs_mismatch_warnfrom_shapelyfrom_wkbfrom_wktpoints_from_xyto_wkbto_wkt
      POLYGON EMPTY   c                 |    [        X5       H-  u  p#Ub  Uc
  Uc  Ub    gM  UR                  U5      (       a  M-    g   g)NFT)zipequals)resultexpectedres       ]/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/tests/test_array.pyequal_geometriesr    -   sB    F%9	I!) #,! &     c                     [         R                  " S5      R                  [         R                  5      n [         R                  " S5      R                  [         R                  5      S-  n[	        X5      n[        U[        5      (       d   e[        S5       H\  n[        X#   [        R                  R                  5      (       d   eX#   R                  X   :X  d   eX#   R                  X   :X  a  M\   e   g )Nr      )nparangeastypefloat64r   
isinstancer   rangeshapelygeometryPointxy)r-   r.   pointsis       r   test_pointsr1   7   s    
		"RZZ(A
		"RZZ(A-AA!Ffm,,,,2Y&)W%5%5%;%;<<<<y{{ad"""y{{ad""" r!   c            	         [         R                  " [        S5       V s/ s H  o X S.PM	     sn 5      n[        S5       V s/ s H"  n [        R                  R                  X 5      PM$     nn [        S5       V s/ s H#  n [        R                  R                  X U 5      PM%     nn [        R                  " US   US   5      n[        R                  " US   US   US   5      n[        U[        5      (       d   e[        U[        5      (       d   e[        U5      U:X  d   e[        U5      U:X  d   e[         R                  " [        S5      5      [        R                  " S5      [        [        S5      5      4 H  n[        R                  " Xf5      n[        R                  " XfU5      n[        U[        5      (       d   e[        U[        5      (       d   e[        U5      U:X  d   e[        U5      U:X  a  M   e   [        R                  " S5      n[        R                  " S5      n[        R                  " [         5         [        R                  " XxS9  [        R                  " XwUS9  S S S 5        [        R                  " ["        5         [        R                  " WS9  [        R                  " US	9  [        R                  " US
9  S S S 5        g s  sn f s  sn f s  sn f ! , (       d  f       N}= f! , (       d  f       g = f)Nr   )r-   r.   zr-   r.   r3   r   r-   r.   r-   )r.   )r3   )pd	DataFramer)   r*   r+   r,   	geopandasr   r(   r   listSeriesr$   r%   pytestraises
ValueError	TypeError)	r-   dfgsgsz	geometry1	geometry2sarr_10arr_20s	            r   test_points_from_xyrG   D   sF    
rCAQ/C	DB05b		:	1'


 
 
&	B	:49"I
>Iq7!!!*IC
>((C"S':I((C"S'2c7CIi////i////	?b   	?c!!! iib	"BIIbM4b	?C,,Q2	,,Q15	)]3333)]3333I"$$$I#%%% D YYr]FYYr]F	z	"  64  6v> 
#
 
y	!  1%  1%  1% 
"	!7 D	:
>( 
#	"
 
"	!s)   K )K8*K *K%=K6%
K36
Lc                  p    [        [        [        5      (       d   e[        [        [        5      (       d   eg N)r(   Tr   r    	triangles r!   r   test_from_shapelyrM   i   s(    a''''Ay))))r!   c                  $    " S S5      n [        U " SS5      U " SS5      /5      n[        [        R                  R                  SS5      [        R                  R                  SS5      /5      n[	        S [        X5       5       5      (       d   eg )Nc                   *    \ rS rSrS r\S 5       rSrg).test_from_shapely_geo_interface.<locals>.Pointo   c                     Xl         X l        g rI   r4   )selfr-   r.   s      r   __init__7test_from_shapely_geo_interface.<locals>.Point.__init__p   s    FFr!   c                 8    SU R                   U R                  4S.$ )Nr,   )typecoordinatesr4   rS   s    r   __geo_interface__@test_from_shapely_geo_interface.<locals>.Point.__geo_interface__t   s    #TVVTVV4DEEr!   r4   N)__name__
__module____qualname____firstlineno__rT   propertyrZ   __static_attributes__rL   r!   r   r,   rP   o   s    	 
	F 
	Fr!   r,   g      ?g       @g      @g      @c              3   H   #    U  H  u  pUR                  U5      v   M     g 7frI   r   .0vts      r   	<genexpr>2test_from_shapely_geo_interface.<locals>.<genexpr>~        ='<tqqxx{{'<    ")r   r*   r+   r,   allr   )r,   r   r   s      r   test_from_shapely_geo_interfacerm   n   s    F F 5c?E#sO<=F					S	)7+;+;+A+A#s+KLH =s6'<=====r!   c            	      :   [          V s/ s H  o R                  PM     nn [        U5      n[        U[        5      (       d   e[        S [        U[         5       5       5      (       d   e[        [        R                  " U[        S95      n[        U[        5      (       d   e[        S [        U[         5       5       5      (       d   eS /n[        U5      n[        R                  R                  U[        R                  " [        U5      S 5      5        [        R                  R!                  [        R                  R#                  SSSS5      [        R                  R#                  SSSS5      /5      n[        UR                  /5      nUS   U:X  d   eg s  sn f )Nc              3   H   #    U  H  u  pUR                  U5      v   M     g 7frI   rc   rd   s      r   rh    test_from_wkb.<locals>.<genexpr>        C'Btqqxx{{'Brk   dtypec              3   H   #    U  H  u  pUR                  U5      v   M     g 7frI   rc   rd   s      r   rh   rp      rq   rk   r      r      )points_no_missingwkbr   r(   r   rl   r   r$   arrayobjecttestingassert_array_equalfulllenr*   r+   r   box)pL_wkbresmissing_values
multi_polys        r   test_from_wkbr      sM   -.-qUU-E.
5/Cc=))))Cs30A'BCCCCC 288E0
1Cc=))))Cs30A'BCCCCC VN
>
"CJJ!!#rwws>/BD'IJ !!..					aAq	)7+;+;+?+?1a+KLJ JNN#
$Cq6Z- /s   Fc                      S/n [        U 5      n[        U[        5      (       d   e[        [        R                  " U [
        S95      n[        U[        5      (       d   eg )N*0101000000CDCCCCCCCCCC1440CDCCCCCCCC0C4A40rr   )r   r(   r   r$   ry   rz   )geometry_hexr   s     r   test_from_wkb_hexr      sQ    @AL
<
 Cc=)))) 288L7
8Cc=))))r!   c                     Sn Sn[         R                  " [        US9   [        U /SS9  S S S 5        [         R                  " [
        US9   [        U /SS9nS S S 5        WS /:X  d   e[        R                  " 5          [        R                  " S5        [        U /SS9nS S S 5        US /:X  d   eg ! , (       d  f       N= f! , (       d  f       Nq= f! , (       d  f       N:= f)	N201020000000100000000000000000008400000000000000840)point array must contain 0 or >1 elementsmatchraise
on_invalidwarnerrorignore)	r;   r<   	Exceptionr   warnsWarningwarningscatch_warningssimplefilter)invalid_wkb_hexmessager   s      r   test_from_wkb_on_invalidr      s    JO9G	y	0/"w7 
1 
gW	-(V< 
.4&==		 	 	"g&(X> 
# 4&== 
1	0 
.	- 
#	"#   B1C="C1
B?
C
C!c                     [        [        5      n [        U 5      n[        R                  " [         Vs/ s H  o"R
                  PM     sn[        S9n[        U[        R                  5      (       d   e[        R                  R                  X5        [        U SS9n[        R                  " [         Vs/ s H  o"R                  PM     sn[        S9n[        U[        R                  5      (       d   e[        R                  R                  X5        [        S [        S   /5      n[        U5      nUS   b   eg s  snf s  snf )Nrr   T)hexr   )r   rw   r   r$   ry   rx   rz   r(   ndarrayr{   r|   wkb_hexPr   r   expas        r   test_to_wkbr      s    &'A
)C
((#45#4aEE#45V
DCc2::&&&&JJ!!#+

C
(('89'8!II'89
HCc2::&&&&JJ!!#+ 	d-a012A
)Cq6>> 6
 :s   D;4E string_typestrbytesc           	        ^ U S:X  a  [         nOS n[         Vs/ s H  o!" UR                  5      PM     nn[        U5      n[	        U[
        5      (       d   eSm[        U4S j[        U[        5       5       5      (       d   e[        U4S j[        U[        5       5       5      (       d   e[        [        R                  " U[        S95      n[	        U[
        5      (       d   e[        U4S j[        U[        5       5       5      (       d   eS /n[        U5      n[        R                  R                  U[        R                  " [        U5      S 5      5        [        R                   R#                  [        R                   R%                  SSS	S	5      [        R                   R%                  S
S
SS5      /5      n[        U" UR                  5      /5      nUS   U:X  d   eg s  snf )Nr   c                     [        U S5      $ )Nutf8)r   r5   s    r   ftest_from_wkt.<locals>.f   s    F##r!   gƠ>c              3   H   >#    U  H  u  pUR                  UTS 9v   M     g7f)	toleranceNequals_exactre   rf   rg   tols      r   rh    test_from_wkt.<locals>.<genexpr>   "     X<WDAq~~a3~/<W   "c              3   H   >#    U  H  u  pUR                  UTS 9v   M     g7fr   r   r   s      r   rh   r      r   r   rr   c              3   H   >#    U  H  u  pUR                  UTS 9v   M     g7fr   r   r   s      r   rh   r      r   r   r   ru   r   rv   )r   rw   wktr   r(   r   rl   r   r$   ry   rz   r{   r|   r}   r~   r*   r+   r   r   )r   r   r   L_wktr   r   r   r   s          @r   test_from_wktr      s   e	$  110!QquuX0E1
5/Cc=))))
CXCEV<WXXXXXXCEV<WXXXXX 288E0
1Cc=))))XCEV<WXXXXX VN
>
"CJJ!!#rwws>/BD'IJ !!..					aAq	)7+;+;+?+?1a+KLJ Ajnn%&
'Cq6Z1 2s   G'c                     Sn Sn[         R                  " [        US9   [        U /SS9  S S S 5        [         R                  " [
        US9   [        U /SS9nS S S 5        WS /:X  d   e[        R                  " 5          [        R                  " S5        [        U /SS9nS S S 5        US /:X  d   eg ! , (       d  f       N= f! , (       d  f       Nq= f! , (       d  f       N:= f)	NzLINESTRING(0 0)r   r   r   r   r   r   r   )	r;   r<   r   r   r   r   r   r   r   )invalid_wktr   r   s      r   test_from_wkt_on_invalidr      s    #K9G	y	0+73 
1 
gW	-}8 
.4&==		 	 	"g&}: 
# 4&== 
1	0 
.	- 
#	"r   c                  |   [        [        5      n [        U SS9n[        R                  " [         Vs/ s H  o"R
                  PM     sn[        S9n[        U[        R                  5      (       d   e[        R                  R                  X5        [        S [        S   /5      n[        U5      nUS   b   eg s  snf )N)rounding_precisionrr   r   )r   rw   r   r$   ry   r   rz   r(   r   r{   r|   r   s        r   test_to_wktr     s    &'A
r
*C
((#45#4aEE#45V
DCc2::&&&&JJ!!#+ 	d-a012A
)Cq6>> 6s   B9c                      [        [        5      n [        R                  " U 5      nU R	                  5       nUS   U S   :X  d   e[        R
                  R                  X5        g Nr   )r   rw   r$   asarrayto_numpyr{   r|   )arrnp_arr1np_arr2s      r   test_as_arrayr     sM    
(
)CjjoGllnG1:QJJ!!'3r!   z	attr,args)
)containsrL   )coversrL   )crossesrL   )disjointrL   )geom_equalsrL   )
intersectsrL   )overlapsrL   )touchesrL   )withinrL   )geom_equals_exact)皙?c           
         Sn[         S   n[        S   nX4[        R                  R	                  5       4 H  n[        [        U 5      " U/UQ76 n[        U[        R                  5      (       d   eUR                  [        :X  d   e[         Vs/ s H&  nUb  [        USU ;  a  U OU SS  5      " U/UQ76 OUPM(     nnUR                  5       U:X  a  M   e   g s  snf )NFr   geom   )r/   rK   r*   r+   r   getattrrJ   r(   r$   r   rs   booltolist)attrargsna_valuepointtriotherr   r   s           r   test_predicates_vector_scalarr     s      H1IE
A,Cg..6689D!%/$/&"**----||t### !
 ! ? V4%7TT!"XFuTtT ! 	 
 }}(*** :

s   -Cc                    SnU S:X  a  SOSn[         R                  R                  5       S /[        S5       VVs/ s Hd  n[         R                  R                  [        S5       Vs/ s H-  n[        R                  " 5       [        R                  " 5       4PM/     sn5      PMf     snn-   S /-   n[        S5       VVs/ s Hd  n[         R                  R                  [        S5       Vs/ s H-  n[        R                  " 5       [        R                  " 5       4PM/     sn5      PMf     snn[         R                  R                  5       S S /-   n[        U5      n[        U5      n	[        X5      " U	/UQ76 n
[        U
[        R                  5      (       d   eU
R                  [        :X  d   e/ n[        Xg5       H  u  pUb  Uc  UR                  U5        M  UR                  (       d  UR                  (       a  UR                  U5        MS  UR                  [        USU ;  a  U OU SS  5      " U/UQ76 5        M     U
R                  5       U:X  d   eg s  snf s  snnf s  snf s  snnf )NFr   Td   r   r   r   )r*   r+   r   r)   randomr   r   r(   r$   r   rs   r   r   appendis_emptyr   )r   r   r   empty_value_r0   ABvec_Avec_Br   r   r   bs                 r   test_predicates_vector_vectorr   >  s     H*,$%K 
			!	!	#T*
 3Z	
   $$=B1XFX&--/6==?3XF  	
	
 &	  s	A 	  eTUh!Wh6==?FMMO"Dh!WX	 
			!	!	#T40	1A
 OEOEU!%/$/Ffbjj))))<<4HA	9	OOH%ZZ1::OOK(OO6#5448DQNN  ==?h&&&; G
 "X	s/   ,I&4II=,I%)4I I%I I%r   )boundarycentroidconvex_hullenvelopeexteriorc                     S n[        [        U 5      n[         Vs/ s H  o3b  [        X05      OUPM     nn[        X$5      (       d   eg s  snf rI   r   rJ   rK   r    r   r   r   rg   r   s        r   test_unary_geor   u  sL     HQFIRSAM x?HSF---- Ts   A	representative_pointc                     S n[        [        U 5      " 5       n[         Vs/ s H  o3b  [        X05      " 5       OUPM     nn[        X$5      (       d   eg s  snf rI   r   r   s        r   test_unary_geo_callabler     sP    HQFKTU9am "A9HUF---- Vs   A)
differencesymmetric_differenceunionintersectionc                    S n[         R                  R                  5       S /n[        U5      S:  a  [         R                  R                  [	        S5       Vs/ s H-  n[
        R
                  " 5       [
        R
                  " 5       4PM/     sn5      nUR                  (       a  UR                  U5        [        U5      S:  a  M  [        U5      n[        [        U 5      " U5      n[        [        U5       VVs/ s H  u  pxUb  Ub  [        Xp5      " U5      OUPM      n	nn[        Xi5      (       d   eg s  snf s  snnf )N   rv   )r*   r+   r   r~   r)   r   is_validr   r   r   rJ   r   rK   r    )
r   r   quadsr0   r   Qr   rg   qr   s
             r   test_binary_geo_vectorr	    s	    H%%'.E
e*r/''9>qBAfmmov}}/B
 ==LL e*r/ 	UAQa F 	5))DA  !}HL)  
 F---- Cs   4D5:%D:c                 b   S n/ n[        U5      S:  a  [        R                  R                  [	        S5       Vs/ s H-  n[
        R
                  " 5       [
        R
                  " 5       4PM/     sn5      nUR                  (       a  UR                  U5        [        U5      S:  a  M  US   nU[        R                  R                  5       4 HB  n[        [        U 5      " U5      n[         Vs/ s H  ob  [        X5      " U5      OUPM     n	nMD     [        WW	5      (       d   eg s  snf s  snf )Nru   rv   r   )r~   r*   r+   r   r)   r   r  r   r   rJ   rK   r    )
r   r   r  r0   r   r  r   r   rg   r   s
             r   test_binary_geo_scalarr    s    HE
e*q.''9>qBAfmmov}}/B
 ==LL e*q. 	aAW%%--/0D!%(LU
LUq}GAU#(BI 	 
 1 FH---- C
s   4D'.D,)	is_closedr  r   	is_simplehas_zis_ringc                    SnU S:X  aO  [         S:  aE  [        R                  " [        5         [        R
                    S S S 5        [        n[        U5      nO[        n[        n[        X05      nU S:X  a.  U Vs/ s H   nUb  UR                  b  [        XP5      OUPM"     nnOU Vs/ s H  oUb  [        XP5      OUPM     nnUR                  5       U:X  d   eg ! , (       d  f       N= fs  snf s  snf )NFr  )r      r  )r   r;   r<   r   rJ   r  triangle_no_missingr   rK   r   r   r   )r   r   valsVr   rg   r   s          r   test_unary_predicatesr    s     H{|f4]]9%KK &"QFy 
 !"!**2HGAhV 	 

 NRRTGA$8CTR==?h&&&% &%

 Ss   C9'C*'C/
C'c                     [         R                  R                  / SQ5      [         R                  R                  / SQ5      [         R                  R                  / SQ5      [         R                  R	                  / SQ5      [         R
                  R                  S5      S /n / SQn[        U 5      R                  nUR                  5       U:X  d   eg )N)r   r   ru   ru   ru   r   )r  r  r  r  r   )TFTFFF)
r*   r+   
LinearRing
LineStringr   r   loadsr   r  r   )gr   r   s      r   test_is_ringr    s    ##$=>##$=>##$EF  !:;/*	A 8H!_$$F==?h&&&r!   arealengthc                 `   [         R                  n[        [        U 5      n[	        U[         R
                  5      (       d   eUR                  [         R                  " S5      :X  d   e[         Vs/ s H  o3b  [        X05      OUPM     nn[         R                  R                  X$5        g s  snf )Nr'   )
r$   nanr   rJ   r(   r   rs   rK   r{   assert_allcloser   s        r   test_unary_floatr$    s    vvHQFfbjj))))<<288I....IRSAM x?HSJJv0 Ts   0B+c                  v    [         R                  n [        U 5      S/[        [         5      S-
  -  S /-   :X  d   eg )Nr   ru   )rJ   	geom_typer9   r~   )cats    r   test_geom_typesr(    s3    
++C9s1vz2dV;;;;r!   c                      [         R                  R                  / SQ5      S [         R                  R                  SS5      /n [	        U 5      nUR
                  n[        U5      / SQ:X  d   eg )Nr  r   ru   r  r   ru   )r   Nr,   )r*   r+   r   r,   r   r&  r9   )geomsGr'  s      r   test_geom_types_null_mixedr.  	  s_      !9:q!$E 	UA
++C92222r!   c                  ^   Sn [         R                  n[        S [        [        5       R                  [        S S S2   5      n[        [        S S S2   [        5       VVs/ s H@  u  p4Ub6  UR                  (       d%  Ub"  UR                  (       d  [        X@5      " U5      OUPMB     nnn[         R                  R                  X%5        [        S   n[        R                  U5      n[         Vs/ s H*  nUb"  UR                  (       d  [        X05      " U5      OUPM,     nn[         R                  R                  X%5        [        R                  [        R                  R                  5       5      nU/[        [        5      -  n[         R                  R                  X%5        g s  snnf s  snf )Ndistancer   r   )r$   r"  r   r~   rJ   r0  r   rK   r/   r   r   r{   r#  r*   r+   r   r   r   r   rg   r   r   s         r   test_binary_distancer2    sZ   DvvH xQ[!!!DbD'*F 	$B$0 1DA Y!**!)qzz AQ 1   JJv0 	q	AZZ]F A %&I(J   JJv0 ZZ((0023FzCF"HJJv0-s   AF$.1F*c                     Sn S n[        [        S [        [        5       U 5      " [        S S S2   5      n[	        [
        S S S2   [        5       VVs/ s H  u  p4Ub  Ub  [        X@5      " U5      OUPM      nnn[        U5      U:X  d   e[        S   n[        [        U 5      " U5      n[
         Vs/ s H  o3b  [        X05      " U5      OUPM     nn[        U5      U:X  d   eg s  snnf s  snf )Nrelater   r   )r   r   r~   rJ   r   rK   r/   r9   r1  s         r   test_binary_relater5  7  s    DH QxQ[$'$B$0F 	$B$00DA  !}HL0   <8### 	q	AQa FLUVIq} #(BIHV<8### Ws   %C%2C+
normalizedTFc                 X   [         R                  nS /[        [        [        5      S-
  5       Vs/ s Hd  n[
        R                  R                  [        S5       Vs/ s H-  n[        R                  " 5       [        R                  " 5       4PM/     sn5      PMf     sn-   S /-   n[        U5      nUR                  [        U S9n[        [        U5       VVs/ s H  u  pgUb  Ub  UR                  X`S9OUPM     nnn[         R                  R                  XX5        g s  snf s  snf s  snnf )Nr#   )r6  )r$   r"  r)   r~   r   r*   r+   r  r   r   projectr   r/   r{   r#  )	r6  r   r   linesLr   r   liner   s	            r   test_binary_projectr<  J  s   vvH	
 3q6A:&	
 ' ''=B1XFX&--/6==?3XF '	
	
 &	 
 	UAYYqZY0F 65) *GA AM LLL2 *   JJv0# G
s   ,D!4DD!#D&D!	cap_style
join_style
resolution      c           
      N   S n[          Vs/ s H  nUb  UR                  SXUS9OUPM     nn[        R                  SXUS9n[        XV5      (       d   e[        R
                  " S/[        [        5      -  5      n[        R                  XpXS9n[        XV5      (       d   eg s  snf )Nr   )r?  r=  r>  )r/   bufferr   r    r$   ry   r~   )r?  r=  r>  r   r   r   r   dists           r   test_bufferrE  e  s     H 	 A } HH
J   	   	 XX
J  F H----88SECFN#DXXy  F H----'	s    B"c                     [        S5       V Vs/ s Hs  n [        R                  R                  [        S5       Vs/ s H-  n[        R                  " 5       [        R                  " 5       4PM/     sn5      R                  S5      PMu     nn n[        U5      nUR                  S5      nU Vs/ s H  oUR                  S5      PM     nn[        S [        Xd5       5       5      (       d   eg s  snf s  snn f s  snf )Nr   r   ru   c              3   H   #    U  H  u  pUR                  U5      v   M     g 7frI   rc   )re   r   r   s      r   rh    test_simplify.<locals>.<genexpr>  rj   rk   )
r)   r*   r+   r   r   rC  r   simplifyrl   r   )r   r0   rK   rJ   r   rg   r   s          r   test_simplifyrJ    s    
 r	 A 	  9>qBAfmmov}}/B	

&*	 	   	YAZZ]F'01y!

1yH1=s8'<===== C 2s   ,C04C+/C0,C6+C0c                     [         R                  R                  / SQ5      [         R                  R                  / SQ5      /n [        U 5      n[        R
                  " [        SS9   UR                  5       nS S S 5        [         R                  R                  / SQ5      nWR                  U5      (       d   eUR                  UR                  5       5      (       d   eg ! , (       d  f       Nn= f)Nr*  r  ru   r   r  z)The 'unary_union' attribute is deprecatedr   r  rM  r  r+  )
r*   r+   r   r   r;   r   DeprecationWarningunary_unionr   	union_all)r,  r-  ur   s       r   test_unary_unionrS    s      !9:  !9:E 	UA	"M
 MMO

 ''(HIH88H88AKKM""""
 
s   'C  
C.c                  |   [         R                  R                  / SQ5      [         R                  R                  / SQ5      /n [        U 5      nUR	                  5       n[         R                  R                  / SQ5      nUR                  U5      (       d   eUR	                  SS9nUR                  U5      (       d   e[        (       a2  [        (       a'  UR	                  SS9nUR                  U5      (       d   e[        R                  " [        SS9   UR	                  S	S9  S S S 5        g ! , (       d  f       g = f)
Nr*  rL  rN  coverage)methoddisjoint_subsetz Method 'invalid' not recognized.r   invalid)r*   r+   r   r   rQ  r   r   r
   r;   r<   r=   )r,  r-  rR  r   u_cov
u_disjoints         r   test_union_allr[    s      !9:  !9:E 	UA	A''(HIH88HKKzK*E<<!!!!{}}[[(9[:
  ****	z)K	L	9% 
M	L	Ls   D--
D;zgrid_size, expectedr  r   r   r   r   )r   g?)gffffff@r   r   r   ru   )r`  )r   r   r^  r]  r  c                     [        / SQ5      [        / SQ5      /n[        U5      nUR                  U S9nUR                  U5      (       d   eg )Nr\  r_  )	grid_size)r   r   rQ  r   )rb  r   r,  r-  rR  s        r   test_union_all_grid_sizerc    sN    " 	+,,-E 	UA	i(A88Hr!   c                  $   [         R                  R                  / SQ5      [         R                  R                  / SQ5      /n [        U 5      n[        R
                  " [        SS9   UR                  SSS9  S S S 5        g ! , (       d  f       g = f)Nr*  rL  z0grid_size is not supported for method 'coverage'r   rU  ru   )rV  rb  )r*   r+   r   r   r;   r<   r=   rQ  )r,  r-  s     r   test_union_all_grid_size_errorre    ss      !9:  !9:E 	UA	L
 	
:3
 
 
s   'B
Bz	attr, argaffine_transform)r   ru   ru   r   r   r   )	translaterL   )rotate)r   )scalerL   )skewrL   c                     [        [        U 5      " U6 n[         Vs/ s H:  nUb2  UR                  (       d!  [        [        R
                  U 5      " U/UQ76 OUPM<     nn[        X$5      (       d   eg s  snf rI   )r   rJ   rK   r   r*   affinityr    )r   argr   rg   r   s        r   test_affinity_methodsrn    sv     Qs#F A :;ajj  $'0C0WXX   F----	s   AA2c                     [         R                  n [        R                  n[         Vs/ s H  o"b  UR                  OU PM     nn[         R
                  R                  X5        [        R                  n[         Vs/ s H  o"b  UR                  OU PM     nn[         R
                  R                  X5        g s  snf s  snf rI   )r$   r"  r   r-   r/   r{   r#  r.   )r   r   r   r   s       r   test_coords_x_yrp    s    vvHSSF<BCFq}(2FHCJJv0SSF<BCFq}(2FHCJJv0 D Ds   B8<B=c                     [         R                  n [         Vs/ s H6  ob  UR                  (       d  UR                  O[        R
                  /S-  PM8     nn[        R                  R                  X5        S [        R                  R                  5       4 H  n[        U/5      nUR                  n U R                  S:X  d   eU R                  S:X  d   e[        R                  R                  U [        R                  " [        R
                  /S-  /5      5        M     [        / 5      nUR                  n U R                  S:X  d   eU R                  S:X  d   eg s  snf )Nrv   r#   r'   )r   rv   )rJ   boundsrK   r   r$   r"  r{   r#  r*   r+   r   r   ndimrs   ry   shape)r   rg   r   r   Es        r   test_boundsrv    s   XXFMVMVajjx!|CY   JJv0 w''//12$ {{a||y(((


""6288bffX\N+CD 3 	RAXXF<<6!!!<<9$$$#s   =Ec            
         [         R                  n [        R                  " [         Vs/ s H6  ob  UR
                  (       d  UR                  O[        R                  /S-  PM8     sn5      n[        R                  " [        R                  " US S 2S4   5      [        R                  " US S 2S4   5      [        R                  " US S 2S4   5      [        R                  " US S 2S4   5      /5      n[        R                  R                  X5        / S /[        R                  R                  5       /4 H  n[        U5      nUR                  n U R                   S:X  d   eU R"                  S:X  d   e[        R                  R                  U [        R                  " [        R                  /S-  5      5        M     g s  snf )Nrv   r   ru   r#   r   r'   )rJ   total_boundsr$   ry   rK   r   rr  r"  nanminnanmaxr{   r#  r*   r+   r   r   rs  rs   )r   rg   rr  r   r,  ru  s         r   test_total_boundsr{    sJ   ^^FXXNWXi)qzz1	DiXF xxIIfQTl#IIfQTl#IIfQTl#IIfQTl#		
H JJv0 tfw//779:;{{a||y(((


""6288RVVHqL+AB < 	Ys   =F>c                     [        S5       V s/ s H"  n [        R                  R                  X 5      PM$     nn [	        U5      nX"R
                  S:     n[        U[        5      (       d   eU/ SQ   n[        U5      S:X  d   e[        U[        5      (       d   eU Vs/ s H  oUR                  PM     sn/ SQ:X  d   eUSS S2   n[        U5      S:X  d   e[        U[        5      (       d   eU Vs/ s H  oUR                  PM     sn/ SQ:X  d   eUS   n[        U[        R                  R                  5      (       d   eUR                  US   5      (       d   eg s  sn f s  snf s  snf )	Nr   g333333?)ru   r   r   r   ru   r#   r   )ru   r   r      	   )r)   r*   r+   r,   r   r  r(   r   r~   r-   r   )r0   r/   r   P2P3r   P4P5s           r   test_getitemr  +  sC   49"I>Iqg$$Q*IF>VA	
66C<Bb-((((	
9Br7a<<b-((((ACC	)))	
14a4Br7a<<b-((((ACC///	
1Bb'**00111199VAY% ? 
 s   )EE$3E)item)r  )r#   r   )r#   r#   )r   r#   r+   c                     [        S5       Vs/ s H"  n[        R                  R                  X5      PM$     nn[	        U5      nXS/'   [        US   [        R                  R                  5      (       d   eg s  snf )Nr   r   )r)   r*   r+   r,   r   r(   r   )r  r0   r/   r   s       r   test_setitemr  A  sh     5:"I>Iqg$$Q*IF>VAqcFadG,,445555 ?s   )A8c            	         [         R                  " [        5         [        S S [        S S :H  n S S S 5        [	        [
        S   [
        S   [
        S   /5      n[	        [
        S   [
        S   [
        S   /5      nX:H  nUR                  5       / SQ:X  d   eX:g  nUR                  5       / SQ:X  d   e[        R                  R                  [        R                  R                  SSSS5      [        R                  R                  SSS	S	5      /5      n[	        [
        S   [
        S   [
        S   U/5      nXT:H  nUR                  5       / S
Q:X  d   eg ! , (       d  f       GN/= f)Nr   r}  ru   r#   r   r   )TFT)FTFrv   )FFFT)r;   r<   r=   r   r   r/   r   r*   r+   r   r   )r   a1a2r   r   a3s         r   test_equality_opsr  X  s1   	z	"bqEQrUN 
# 
vay&)VAY7	8B	vay&)VAY7	8B
(C::<....
(C::<//// !!..					aAq	)7+;+;+?+?1a+KLJ 
vay&)VAY
C	DB

C::<6666' 
#	"s   E
E&c                  X    S[        [        5      ;   d   eS[        [        5      ;   d   eg )Nr   r   )dirr   rL   r!   r   test_dirr  o  s&    QQr!   c                      [        [        5      n U R                  U R                  5      R	                  5       (       d   eg rI   )r   r  r   r   rl   )rJ   s    r   test_chainingr  t  s/    ()A::ajj!%%''''r!   c                      SS K n U R                  U R                  [        5      5      nUS   b   eUS   R                  (       d   e[        S S R                  US S 5      R                  5       (       d   eg )Nr   r   )pickler  dumpsrJ   r   r   rl   )r  T2s     r   test_pickler  z  se    	fll1o	&Bb6>>b6???Sb6b"g&**,,,,r!   c                  \   [         R                  " [        5       n [        R	                  [
        5        S S S 5        S[        W R                  5      R                  5       ;   d   eS[        U R                  5      ;   d   eS[        U R                  5      ;   d   eg ! , (       d  f       Nn= f)Nlengths1221)	r;   r<   r=   rJ   r   r   r   valuelower)infos    r   test_raise_on_bad_sizesr    sv    	z	"d	

1 
# DJJ--////3tzz?"""3tzz?""" 
#	"s   B
B+c            	         [         R                  R                  [         R                  R                  SSSS5      [         R                  R                  SSSS5      /5      n [	        U /5      nUR                  S5      nU R                  S5      /n[        X#5        UR                  [        R                  " S/5      5      n[        X#5        g )Nr   ru   r   rv   )	r*   r+   r   r   r   rC  r    r$   ry   )r   r   r   r   s       r   test_buffer_single_multipolygonr    s    !!..					aAq	)7+;+;+?+?1a+KLJ 
|
$CZZ]F!!!$%HV&ZZ!&FV&r!   c            	         [         R                  R                  [         R                  R                  SSSS5      [         R                  R                  SSSS5      /5      n [	        U /5      nUR                  [        5      n[        US   [        5      (       d   eUS   U R                  :X  d   eUR                  [        5      n[        US   [         R                  R                  R                  5      (       d   eUR                  [        R                  " S5      5      nUR                  [        R                  " S5      :X  d   eUS   U R                  S S :X  d   eg )Nr   ru   r   rv   U10r   )r*   r+   r   r   r   r&   r   r(   r   rz   baseBaseGeometryr$   rs   )r   r   r   s      r   test_astype_multipolygonr    s   !!..					aAq	)7+;+;+?+?1a+KLJ 
|
$CZZ_FfQi%%%%!9
&&& ZZFfQi!1!1!6!6!C!CDDDD ZZ(F<<288E?***!9
s++++r!   zpyproj not installed)reasonc                      [         R                  5       n SU l        [        U [         5      SL d   e[        X 5      SL d   e[        U [         SS9SL d   eg )N  FT)
allow_none)rJ   copycrsr   t1s    r   test_check_crsr    sS    	
BBFb!%%%b%%%b!-555r!   c                     [         R                  5       n [         R                  5       nSU l        SUl        [        R                  " [
        SS9   [        X5        S S S 5        [        R                  " [
        SS9   [        [         U5        S S S 5        [        R                  " [
        SS9   [        U [         5        S S S 5        g ! , (       d  f       Ns= f! , (       d  f       NR= f! , (       d  f       g = f)Nr    zCRS mismatch between the CRSr   )rJ   r  r  r;   r   UserWarningr   )r  t2s     r   test_crs_mismatch_warnr    s    	
B	
BBFBF 
k)G	H2" 
I 
k)G	H1b! 
I 
k)G	H2q! 
I	H 
I	H 
I	H 
I	Hs$   C	=C/C+	
C
C(+
C9zpyproj installedc                      [         R                  " [        SS9   [        R	                  5       n SU l        S S S 5        W R
                  b   eg ! , (       d  f       N= f)Nz(Cannot set the CRS, falling back to Noner   r  )r;   r   r  rJ   r  r  rg   s    r   test_missing_pyprojr    sC    	k)S	TFFH 
U 55== 
U	Ts   A
ANAc                 D    [         R                  5       nXS'   US   b   eg r   )rJ   r  )r  r  s     r   	test_isnar    s"    	
BqEa5==r!   c                  b    [         R                  5       n [        R                  U S'   U S   b   eg r   )rJ   r  r6   r  r  s    r   test_isna_pdNAr    s(    	
BEEBqEa5==r!   c                  <   [         R                  5       n SU l        U R                  S5      R                  U R                  :X  d   eU R                  S5      R                  U R                  :X  d   eU R                  S5      R                  U R                  :X  d   eg )Nr  ru   r   r   )rJ   r  r  shiftr  s    r   test_shift_has_crsr    sn    	AAE771:>>QUU"""771:>>QUU"""772;??aee###r!   c                      [         R                  5       n SU l        U R                  5       R                  U R                  :X  d   eg )Nr  )rJ   r  r  uniquer  s    r   test_unique_has_crsr    s0    	AAE88:>>QUU"""r!   c                      [         R                  5       n SU l        [        R                  " [
        SS9   U R                  S5        S S S 5        g ! , (       d  f       g = f)Nr  z+The 'pyproj' package is required for to_crsr   r  )rJ   r  r  r;   r<   ImportErrorto_crsr  s    r   test_to_crs_pyproj_errorr    sC    	AAE	H
 	

 
 
s   A
Ac                      [         R                  " [        SS9   [        R	                  5         S S S 5        g ! , (       d  f       g = f)Nz5The 'pyproj' package is required for estimate_utm_crsr   )r;   r<   r  rJ   estimate_utm_crsrL   r!   r   "test_estimate_utm_crs_pyproj_errorr    s2    	R
 	

 
 
s	   8
Ac                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestEstimateUtmCrsi   c                     [         R                  R                  SS5      U l        [         R                  R                  SS5      U l        [        U R                  U R                  /SS9U l        g )Ng&SRg):_D@gYڂRg ~:XD@z	epsg:4326r  )r*   r+   r,   esbsolr   	landmarksrY   s    r   setup_methodTestEstimateUtmCrs.setup_method  sQ    ##))(G<##))(G<%txx&:Lr!   c                     [         R                  " S5      nU R                  R                  5       UR	                  S5      :X  d   eU R                  R                  S5      UR	                  S5      :X  d   eg )Npyproj
EPSG:32618NAD83z
EPSG:26918)r;   importorskipr  r  CRSrS   r  s     r   !test_estimate_utm_crs__geographic4TestEstimateUtmCrs.test_estimate_utm_crs__geographic  s\    $$X.~~..0FJJ|4LLLL~~..w76::l;SSSSr!   c                     [         R                  " S5      nU R                  R                  S5      R	                  5       UR                  S5      :X  d   eg )Nr  z	EPSG:3857r  )r;   r  r  r  r  r  r  s     r    test_estimate_utm_crs__projected3TestEstimateUtmCrs.test_estimate_utm_crs__projected  sK    $$X.~~$$[1BBD

I
 
 	
 
r!   c                 
   [         R                  " S5      n[        [        R                  R                  SS5      [        R                  R                  SS5      /SS9nUR                  5       UR                  S5      :X  d   eg )	Nr  gqsH:AgaQSAg_ QAg.pk`Az	EPSG:3851r  z
EPSG:32760)r;   r  r   r*   r+   r,   r  r  )rS   r  antimeridians      r   #test_estimate_utm_crs__antimeridian6TestEstimateUtmCrs.test_estimate_utm_crs__antimeridian  sx    $$X.#  &&'8:LM  &&'8:KL 
 ,,.&**\2JJJJr!   c                    [         R                  " S5        [         R                  " [        SS9   [	        [
        R                  R                  / SQ5      /SS9R                  5         S S S 5        g ! , (       d  f       g = f)Nr  zUnable to determine UTM CRSr   )r   Z   )ru   r  )r#   r  z	EPSG:4326r  	r;   r  r<   RuntimeErrorr   r*   r+   r   r  rY   s    r   $test_estimate_utm_crs__out_of_bounds7TestEstimateUtmCrs.test_estimate_utm_crs__out_of_bounds  sW    H%]]</LM!!))*EFG[  NMMs   9A22
B c                    [         R                  " S5        [         R                  " [        SS9   [	        [
        R                  R                  / SQ5      /5      R                  5         S S S 5        g ! , (       d  f       g = f)Nr  zcrs must be setr   r  r  rY   s    r   "test_estimate_utm_crs__missing_crs5TestEstimateUtmCrs.test_estimate_utm_crs__missing_crs'  sU    H%]]</@A!!))*EFG  BAAs   :A33
B)r  r  r  N)r\   r]   r^   r_   r  r  r  r  r  r  ra   rL   r!   r   r  r     s#    M
T

K!!r!   r  c                      [         R                  " / S9R                  R                  n U R	                  SSS9[
        R                  " S/[        S9:X  d   eU R	                  SSS9(       d   eg )Nr  rl   T)keepdimsrr   F)r8   GeoDataFramer+   ry   _reducer$   rz   )r   s    r   test_reduce_keepdimsr  0  s\    

 
 "
-
6
6
<
<C;;ut;,$v0NNNN;;uu;---r!   )or   r   numpyr$   pandasr6   r*   shapely.affinityshapely.geometryshapely.wkbshapely.wktr   r   r   shapely.geometry.baser   r   r8   geopandas._compatr   r	   r
   geopandas.arrayr   r   r   r   r   r   r   r   r   r;   r)   r+   r  r   r  rK   rJ   r,   rw   r/   r   r    r1   rG   rM   rm   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r	  r  r  r  r$  r(  r.  r2  r5  r<  roundsquarebevelrE  rJ  rS  r[  rc  re  rn  rp  rv  r{  r  r  	GeoSeriesry   r  r  r  r  r  r  r  r  skipifr  r  r  r"  r  r  r  r  r  r  r  r  )r   r0   s   00r   <module>r     s            7 7 7  D D
 
 
  2Y %PQ(S(Qv}}@(ST   7;;#4#4_#Et"LL	 GLBiFOG6==?FMMO<i  
dV	#
#"&J*
>& 6*$$ (89!  :! H$
4 ++2 %'%'P 

.
. "8!9:. ;. 
K.., 
K.., 
''2' &(!341 51<
31B$& e}51 614 y	8H8H&IJ
(8(8*:J:J'KLBx0. 1 M K.0># &,  7889	
 
G?@A
4 	023	.	.1%,C0 , 
&&../OPQ	
 	%%&FGH	
 	'""**+KLMN				!	!"B	CD  !AB
667. 
(-#
',( 
N+AB6 C6 
N+AB" C"& J'9: ; bff~. /$# J'9: ; J'9: ;-! -!`.a  Ts   *%W**W%9W*:AW0%W*