
    hv                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dl	Zd dl
Zd dlmZmZmZ d dlmZmZ d dlZd dlmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dl Z  e!d      D  cg c]Q  } ejD                  j                   e!d      D cg c]$  } e j                           e j                          f& c}      S c}} Z#e#ejH                  jK                  d      dgz   Z& ee&      Z' e!d	      D  cg c]<  } ejD                  jQ                   e j                           e j                                > c} Z)e)dgz   Z* ee*      Z+d
 Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4e jj                  jm                  dddg      d        Z7d Z8d Z9d Z:e jj                  jm                  dg d      d        Z;e jj                  jm                  dg d      d        Z<e jj                  jm                  dg d      d         Z=e jj                  jm                  dd!g      d"        Z>e jj                  jm                  dg d#      d$        Z?e jj                  jm                  dg d#      d%        Z@e jj                  jm                  dg d&      d'        ZAd( ZBe jj                  jm                  dd)d*g      d+        ZCd, ZDd- ZEd. ZFd/ ZGe jj                  jm                  d0d1d2g      d3        ZHe jj                  jm                  d4ej                  ej                  g      e jj                  jm                  d5ej                  ej                  g      e jj                  jm                  d6d7d8g      d9                      ZLd: ZMd; ZNd< ZOe jj                  jm                  d=d e eg d>       eg d?      g      fd@ eg dA      fg      dB        ZPdC ZQe jj                  jm                  dDdEg dFffdGdHdIdJg      dK        ZRdL ZSdM ZTdN ZUdO ZVe jj                  jm                  dP ej                  ejD                  j                  g dQ      gR       ej                  ejD                  j                  g dQ      g       ej                  ejD                  j                  g dQ      g      ejD                  j                  g dQ      gejD                  j                  g dQ      g      dS        ZZdT Z[dU Z\dV Z]dW Z^dX Z_dY Z`dZ Zae jj                  j                  e d[\      d]        Zce jj                  j                  e d[\      d^        Zde jj                  j                  ed_\      d`        Zee jj                  jm                  dadej                  g      db        Zgdc Zhdd Zide Zje jj                  j                  ed_\      df        Zke jj                  j                  ed_\      dg        Zl G dh di      Zmdj Znyc c}w c c}} w c c} w )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                 h    t        | |      D ]#  \  }}|||| y|j                  |      r# y y)NFT)zipequals)resultexpectedres       M/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/test_array.pyequal_geometriesr    -   sD    FH% 19	I!)!     c                     t        j                  d      j                  t         j                        } t        j                  d      j                  t         j                        dz  }t	        | |      }t        |t              sJ t        d      D ]Y  }t        ||   t        j                  j                        sJ ||   j                  | |   k(  sJ ||   j                  ||   k(  rYJ  y )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Aq!Ffm,,,2Y #&)W%5%5%;%;<<<ay{{ad"""ay{{ad"""#r!   c            	         t        j                  t        d      D  cg c]  } | | | d
 c}       }t        d      D  cg c]"  } t        j                  j                  | |       $ }} t        d      D  cg c]#  } t        j                  j                  | | |       % }} t        j                  |d   |d         }t        j                  |d   |d   |d         }t        |t              sJ t        |t              sJ t        |      |k(  sJ t        |      |k(  sJ t        j                  t        d            t        j                  d      t        t        d            fD ]s  }t        j                  ||      }t        j                  |||      }t        |t              sJ t        |t              sJ t        |      |k(  sJ t        |      |k(  rsJ  t        j                  d      }t        j                  d      }t        j                  t               5  t        j                  ||       t        j                  |||       d d d        t        j                  t"              5  t        j                         t        j                  |	       t        j                  |
       d d d        y c c} w c c} w c c} w # 1 sw Y   }xY w# 1 sw Y   y xY w)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   sX    
rCAQQQ/C	DB05b		:1'


 
 A
&	:B	:49"I
>q7!!!Q*
>C
>((C"S':I((C"S'2c7CIi///i///	?b   	?c!!! iib	"BIIbM4b	?C &,,Q2	,,Q15	)]333)]333I"$$$I#%%%& YYr]FYYr]F	z	" ?  6V4  6Vv>?
 
y	! &  1%  1%  1%& &7 D	:
>(? ?
& &s)   J:'J?4(K0K	.AK	KKc                  \    t        t        t              sJ t        t        t              sJ y N)r(   Tr   r    	triangles r!   r   test_from_shapelyrM   i   s"    a'''Ay)))r!   c                      G d d      } t         | dd       | dd      g      }t        t        j                  j                  dd      t        j                  j                  dd      g      }t	        d t        ||      D              sJ y )Nc                   "    e Zd Zd Zed        Zy).test_from_shapely_geo_interface.<locals>.Pointc                      || _         || _        y rI   r4   )selfr-   r.   s      r   __init__z7test_from_shapely_geo_interface.<locals>.Point.__init__p   s    DFDFr!   c                 8    d| j                   | j                  fdS )Nr,   )typecoordinatesr4   rR   s    r   __geo_interface__z@test_from_shapely_geo_interface.<locals>.Point.__geo_interface__t   s    #TVVTVV4DEEr!   N)__name__
__module____qualname__rS   propertyrX   rL   r!   r   r,   rP   o   s    	 
	F 
	Fr!   r,   g      ?g       @g      @g      @c              3   D   K   | ]  \  }}|j                  |        y wrI   r   .0vts      r   	<genexpr>z2test_from_shapely_geo_interface.<locals>.<genexpr>~        =tq!qxx{=    )r   r*   r+   r,   allr   )r,   r   r   s      r   test_from_shapely_geo_interfacerg   n   s    F F 5c?E#sO<=F					S	)7+;+;+A+A#s+KLH =s68'<====r!   c            	         t         D  cg c]  } | j                   }} t        |      }t        |t              sJ t        d t        |t               D              sJ t        t        j                  |t                    }t        |t              sJ t        d t        |t               D              sJ d g}t        |      }t        j                  j                  |t        j                  t        |      d              t        j                  j!                  t        j                  j#                  dddd      t        j                  j#                  dddd      g      }t        |j                  g      }|d   |k(  sJ y c c} w )Nc              3   D   K   | ]  \  }}|j                  |        y wrI   r^   r_   s      r   rc   z test_from_wkb.<locals>.<genexpr>        Ctq!qxx{Cre   dtypec              3   D   K   | ]  \  }}|j                  |        y wrI   r^   r_   s      r   rc   z test_from_wkb.<locals>.<genexpr>   rj   re   r      r      )points_no_missingwkbr   r(   r   rf   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~      s@   -.qQUU.E.
5/Cc=)))Cs30A'BCCCC 288E0
1Cc=)))Cs30A'BCCCC VN
>
"CJJ!!#rwws>/BD'IJ !!..					aAq	)7+;+;+?+?1a+KLJ JNN#
$Cq6Z- /s   Fc                      dg} t        |       }t        |t              sJ t        t        j                  | t
                    }t        |t              sJ y )N*0101000000CDCCCCCCCCCC1440CDCCCCCCCC0C4A40rk   )r   r(   r   r$   rr   rs   )geometry_hexr{   s     r   test_from_wkb_hexr      sK    @AL
<
 Cc=))) 288L7
8Cc=)))r!   c                     d} d}t        j                  t        |      5  t        | gd       d d d        t        j                  t
        |      5  t        | gd      }d d d        d gk(  sJ t        j                         5  t        j                  d       t        | gd      }d d d        |d gk(  sJ y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   *xY w)	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 8/"w78 
gW	- =(V<=4&==		 	 	" ?g&(X>? 4&==8 8= =? ?#   B:C$C:CCCc                  ~   t        t              } t        |       }t        j                  t        D cg c]  }|j
                   c}t              }t        |t        j                        sJ t        j                  j                  ||       t        | d      }t        j                  t        D cg c]  }|j                   c}t              }t        |t        j                        sJ t        j                  j                  ||       t        d t        d   g      }t        |      }|d   J y c c}w c c}w )Nrk   T)hexr   )r   rp   r   r$   rr   rq   rs   r(   ndarrayrt   ru   wkb_hexPr{   ry   expas        r   test_to_wkbr      s    &'A
)C
((#45aAEE5V
DCc2::&&&JJ!!#s+

C
(('89!AII9
HCc2::&&&JJ!!#s+ 	d-a012A
)Cq6>> 6
 :s   D52D:string_typestrbytesc           	         | dk(  rt         }nd }t        D cg c]  } ||j                         }}t        |      }t	        |t
              sJ dt        fdt        |t              D              sJ t        fdt        |t              D              sJ t        t        j                  |t                    }t	        |t
              sJ t        fdt        |t              D              sJ d g}t        |      }t        j                  j                  |t        j                  t        |      d              t        j                   j#                  t        j                   j%                  ddd	d	      t        j                   j%                  d
d
dd      g      }t         ||j                        g      }|d   |k(  sJ y c c}w )Nr   c                     t        | d      S )Nutf8)r   r5   s    r   fztest_from_wkt.<locals>.f   s    F##r!   gƠ>c              3   J   K   | ]  \  }}|j                  |         yw)	toleranceNequals_exactr`   ra   rb   tols      r   rc   z test_from_wkt.<locals>.<genexpr>   "     XDAqq~~a3~/X    #c              3   J   K   | ]  \  }}|j                  |         ywr   r   r   s      r   rc   z test_from_wkt.<locals>.<genexpr>   r   r   rk   c              3   J   K   | ]  \  }}|j                  |         ywr   r   r   s      r   rc   z test_from_wkt.<locals>.<genexpr>   r   r   r   rn   r   ro   )r   rp   wktr   r(   r   rf   r   r$   rr   rs   rt   ru   rv   rw   r*   r+   r   rx   )r   r   ry   L_wktr{   r|   r}   r   s          @r   test_from_wktr      s   e	$  11!QquuX1E1
5/Cc=)))
CXCEV<WXXXXXCEV<WXXXX 288E0
1Cc=)))XCEV<W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                     d} d}t        j                  t        |      5  t        | gd       d d d        t        j                  t
        |      5  t        | gd      }d d d        d gk(  sJ t        j                         5  t        j                  d       t        | gd      }d d d        |d gk(  sJ y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   *xY w)	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 4+734 
gW	- 9}894&==		 	 	" ;g&}:; 4&==4 49 9; ;r   c                  x   t        t              } t        | d      }t        j                  t        D cg c]  }|j
                   c}t              }t        |t        j                        sJ t        j                  j                  ||       t        d t        d   g      }t        |      }|d   J y c c}w )N)rounding_precisionrk   r   )r   rp   r   r$   rr   r   rs   r(   r   rt   ru   r   s        r   test_to_wktr     s    &'A
r
*C
((#45aAEE5V
DCc2::&&&JJ!!#s+ 	d-a012A
)Cq6>> 6s   B7c                      t        t              } t        j                  |       }| j	                         }|d   | d   k(  sJ t        j
                  j                  ||       y Nr   )r   rp   r$   asarrayto_numpyrt   ru   )arrnp_arr1np_arr2s      r   test_as_arrayr     sO    
(
)CjjoGllnG1:QJJ!!'73r!   z	attr,args)
)containsrL   )coversrL   )crossesrL   )disjointrL   )geom_equalsrL   )
intersectsrL   )overlapsrL   )touchesrL   )withinrL   )geom_equals_exact)皙?c                    d}t         d   }t        d   }||t        j                  j	                         fD ]  } t        t        |       |g| }t        |t        j                        sJ |j                  t        k(  sJ t        D cg c]"  }| t        |d| vr| n| dd        |g| n|$ }}|j                         |k(  rJ  y c c}w )NFr   geom   )r/   rK   r*   r+   r   getattrrJ   r(   r$   r   rl   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### !
  ? GV4%7TT!"XFuTtT
 
 }}(***+

s   	'C
c                    d}| dk(  rdnd}t         j                  j                         d gt        d      D cg c]^  }t         j                  j                  t        d      D cg c]*  }t	        j                         t	        j                         f, c}      ` c}}z   d gz   }t        d      D cg c]^  }t         j                  j                  t        d      D cg c]*  }t	        j                         t	        j                         f, c}      ` c}}t         j                  j                         d d gz   }t        |      }t        |      }	 t        ||       |	g| }
t        |
t        j                        sJ |
j                  t        k(  sJ g }t        ||      D ]p  \  }}|||j                  |       |j                  s|j                  r|j                  |       F|j                   t        |d| vr| n| dd        |g|        r |
j                         |k(  sJ y c c}w c c}}w c c}w c c}}w )NFr   Td   r   r   r   )r*   r+   r   r)   randomr   r   r(   r$   r   rl   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F&--/6==?3F
	
 &	  s	 	  eTUh!W6==?FMMO"D!WX	 
			!	!	#T40	1A
 OEOE!WUD!%/$/Ffbjj)))<<4HAq	 19	OOH%ZZ1::OOK(OOD6#5448DQNN ==?h&&&; G
 "X	s/   +H3$/H.	H34+H>/H9	H>.H39H>r   )boundarycentroidconvex_hullenvelopeexteriorc                     d }t        t        |       }t        D cg c]  }|t        ||       n| }}t        ||      sJ y c c}w rI   r   rJ   rK   r    r   r   r   rb   r   s        r   test_unary_geor   u  sN     HQFIRSAAM4 x?SHSFH--- Ts   Arepresentative_pointc                     d } t        t        |              }t        D cg c]  }| t        ||              n| }}t        ||      sJ y c c}w rI   r   r   s        r   test_unary_geo_callabler     sW    HWQFKTUaam 4 "AUHUFH--- Vs   A)
differencesymmetric_differenceunionintersectionc           	      X   d }t         j                  j                         d g}t        |      dk  rt         j                  j                  t	        d      D cg c]*  }t        j
                         t        j
                         f, c}      }|j                  r|j                  |       t        |      dk  rt        |      } t        t        |       |      }t        t        |      D cg c]  \  }}|| t        ||       |      n| }	}}t        ||	      sJ y c c}w c c}}w )N   ro   )r*   r+   r   rw   r)   r   is_validr   r   r   rJ   r   rK   r    )
r   r   quadsr0   r   Qr   rb   qr   s
             r   test_binary_geo_vectorr     s
    H%%'.E
e*r/''9>qBAfmmov}}/B
 ==LL e*r/ 	UAWQa F 	5)Aq  !}4HLH 
 FH--- Cs   /D!-"D&c           	      6   d }g }t        |      dk  rt        j                  j                  t	        d      D cg c]*  }t        j
                         t        j
                         f, c}      }|j                  r|j                  |       t        |      dk  r|d   }|t        j                  j                         fD ]?  } t        t        |       |      }t        D cg c]  }| t        ||       |      n| }	}A t        	      sJ y c c}w c c}w )Nrn   ro   r   )rw   r*   r+   r   r)   r   r   r   r   rJ   rK   r    )
r   r   r   r0   r   r   r   r   rb   r   s
             r   test_binary_geo_scalarr    s    HE
e*q.''9>qBAfmmov}}/B
 ==LL e*q. 	aAW%%--/0 
!D!%(LU
GHq}GAtU#(B
 

 FH--- C
s   /D!D)	is_closedr   r   	is_simplehas_zis_ringc                    d}| dk(  rMt         dk  rDt        j                  t              5  t        j
                   d d d        t        }t        |      }nt        }t        }t        ||       }| dk(  r*|D cg c]  }||j                  t        ||       n|  }}n|D cg c]  }|t        ||       n| }}|j                         |k(  sJ y # 1 sw Y   xY wc c}w c c}w )NFr  )r      r  )r   r;   r<   r   rJ   r  triangle_no_missingr   rK   r   r   r   )r   r   valsVr   rb   r   s          r   test_unary_predicatesr    s     H{|f4]]9% 	KK	"QFy 
 !"!**2HGAthV
 

 NRRGAt$8CRR==?h&&&%	 	

 Ss   C6#C C Cc                     t         j                  j                  g d      t         j                  j                  g d      t         j                  j                  g d      t         j                  j	                  g d      t         j
                  j                  d      d g} g d}t        |       j                  }|j                         |k(  sJ y )N)r   r   rn   rn   rn   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                 P   t         j                  }t        t        |       }t	        |t         j
                        sJ |j                  t        j                  d      k(  sJ t        D cg c]  }|t        ||       n| }}t         j                  j                  ||       y c c}w )Nr'   )
r$   nanr   rJ   r(   r   rl   rK   rt   assert_allcloser   s        r   test_unary_floatr    s    vvHQFfbjj)))<<288I....IRSAAM4 x?SHSJJvx0 Ts   )B#c                  t    t         j                  } t        |       dgt        t               dz
  z  d gz   k(  sJ y )Nr   rn   )rJ   	geom_typer9   rw   )cats    r   test_geom_typesr    s3    
++C9s1vz2dV;;;;r!   c                      t         j                  j                  g d      d t         j                  j                  dd      g} t	        |       }|j
                  }t        |      g dk(  sJ y )Nr  r   rn   r  r   rn   )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            	      :   d} t         j                  }t        d t        t               j                  t        d d d         }t        t        d d d   t              D cg c]5  \  }}|,|j                  s ||j                  s t        ||       |      n|7 }}}t         j                  j                  ||       t        d   }t        j                  |      }t        D cg c]$  }||j                  s t        ||       |      n|& }}t         j                  j                  ||       t        j                  t        j                  j                               }|gt        t              z  }t         j                  j                  ||       y c c}}w c c}w )Ndistancer   r   )r$   r  r   rw   rJ   r'  r   rK   r/   r   r   rt   r  r*   r+   r   r   r   r   rb   ry   r   s         r   test_binary_distancer)    sc   DvvH xQ[!!!DbD'*F 	$B$0 Aq Y!**!)qzz GAtQH  JJvx0 	q	AZZ]F  %&I4(JH  JJvx0 ZZ((0023FzCF"HJJvx0-s   :F")Fc            	         d} d } t        t        d t        t               |       t        d d d         }t	        t
        d d d   t              D cg c]  \  }}|| t        ||       |      n| }}}t        |      |k(  sJ t        d   } t        t        |       |      }t
        D cg c]  }| t        ||       |      n| }}t        |      |k(  sJ y c c}}w c c}w )Nrelater   r   )r   r   rw   rJ   r   rK   r/   r9   r(  s         r   test_binary_relater,  7  s    DH (WQxQ[$'$B$0F 	$B$0Aq  !}4HLH  <8### 	q	AWQa FLUVqq} 4 #(BVHV<8### Ws   "C.C$
normalizedTFc                 P   t         j                  }d gt        t        t              dz
        D cg c]^  }t
        j                  j                  t        d      D cg c]*  }t        j                         t        j                         f, c}      ` c}z   d gz   }t        |      }|j                  t        |       }t        t        |      D cg c]  \  }}|||j                  ||       n|  }}}t         j                  j                  ||       y c c}w c c}w c c}}w )Nr#   )r-  )r$   r  r)   rw   r   r*   r+   r  r   r   projectr   r/   rt   r  )	r-  r   r   linesLr   ry   liner   s	            r   test_binary_projectr3  J  s   vvH	
 3q6A:&	
  ''=B1XF&--/6==?3F
	
 &	 
 	UAYYqZY0F 65) At AM LLzL2H  JJvx0# G
s   +D/D
	D#D"D	cap_style
join_style
resolution      c           	      N   d }t         D cg c]  }||j                  d| ||      n| }}t        j                  d| ||      }t        ||      sJ t	        j
                  dgt        t              z        }t        j                  || ||      }t        ||      sJ y c c}w )Nr   )r6  r4  r5  )r/   bufferr   r    r$   rr   rw   )r6  r4  r5  r   ry   r   r   dists           r   test_bufferr<  e  s     H 	  } HH
iJ   		H 	 XX
iJ  F Hf---88SECFN#DXXyZ  F Hf---'	s    B"c                     t        d      D  cg c]m  } t        j                  j                  t        d      D cg c]*  }t	        j                         t	        j                         f, c}      j                  d      o }} }t        |      }|j                  d      }|D cg c]  }|j                  d       }}t        d t        ||      D              sJ y c c}w c c}} w c c}w )Nr   r   rn   c              3   D   K   | ]  \  }}|j                  |        y wrI   r^   )r`   r   r   s      r   rc   z test_simplify.<locals>.<genexpr>  rd   re   )
r)   r*   r+   r   r   r:  r   simplifyrf   r   )r   r0   rK   rJ   r   rb   r   s          r   test_simplifyr@    s    
 r	  	  9>qBAfmmov}}/B	

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

11H1=s8V'<==== C 2s   +C"/C)C"$C(C"c                     t         j                  j                  g d      t         j                  j                  g d      g} t        |       }t	        j
                  t        d      5  |j                         }d d d        t         j                  j                  g d      }j                  |      sJ |j                  |j                               sJ y # 1 sw Y   _xY w)Nr!  r  rn   r   r  z)The 'unary_union' attribute is deprecatedr   r  rC  r  r"  )
r*   r+   r   r   r;   r   DeprecationWarningunary_unionr   	union_all)r#  r$  ur   s       r   test_unary_unionrI    s      !9:  !9:E 	UA	"M
  MMO
 ''(HIH88H88AKKM""" s   )CC!c                  V   t         j                  j                  g d      t         j                  j                  g d      g} t        |       }|j	                         }t         j                  j                  g d      }|j                  |      sJ |j	                  d      }|j                  |      sJ t        r+t        r%|j	                  d      }|j                  |      sJ t        j                  t        d      5  |j	                  d	       d d d        y # 1 sw Y   y xY w)
Nr!  rB  rD  coverage)methoddisjoint_subsetz Method 'invalid' not recognized.r   invalid)r*   r+   r   r   rG  r   r   r
   r;   r<   r=   )r#  r$  rH  r   u_cov
u_disjoints         r   test_union_allrQ    s      !9:  !9:E 	UA	A''(HIH88HKKzK*E<<!!!}[[(9[:
  ***	z)K	L &	9%& & &s   DD(zgrid_size, expectedr  r   r   r   r   )r   g?)gffffff@r   r   r   rn   )rV  )r   r   rT  rS  r  c                     t        g d      t        g d      g}t        |      }|j                  |       }|j                  |      sJ y )NrR  rU  )	grid_size)r   r   rG  r   )rX  r   r#  r$  rH  s        r   test_union_all_grid_sizerY    sK    " 	+,,-E 	UA	i(A88Hr!   c                  $   t         j                  j                  g d      t         j                  j                  g d      g} t        |       }t	        j
                  t        d      5  |j                  dd       d d d        y # 1 sw Y   y xY w)Nr!  rB  z0grid_size is not supported for method 'coverage'r   rK  rn   )rL  rX  )r*   r+   r   r   r;   r<   r=   rG  )r#  r$  s     r   test_union_all_grid_size_errorr[    sx      !9:  !9:E 	UA	L
 4 	
:34 4 4s   )BBz	attr, argaffine_transform)r   rn   rn   r   r   r   )	translaterL   )rotate)r   )scalerL   )skewrL   c                      t        t        |       | }t        D cg c]3  }|-|j                  s! t        t        j
                  |       |g| n|5 }}t        ||      sJ y c c}w rI   )r   rJ   rK   r   r*   affinityr    )r   argr   rb   r   s        r   test_affinity_methodsrd    sw     WQs#F  :;ajj'  $'0C0WXXH  FH---	s   8A%c                  |   t         j                  } t        j                  }t        D cg c]  }||j                  n|  }}t         j
                  j                  ||       t        j                  }t        D cg c]  }||j                  n|  }}t         j
                  j                  ||       y c c}w c c}w rI   )r$   r  r   r-   r/   rt   r  r.   )r   r   ry   r   s       r   test_coords_x_yrf    s    vvHSSF<BCqq}(2CHCJJvx0SSF<BCqq}(2CHCJJvx0 D Ds   B4:B9c                     t         j                  } t        D cg c]0  }||j                  s|j                  nt        j
                  gdz  2 }}t        j                  j                  | |       d t        j                  j                         fD ]  }t        |g      }|j                  } | j                  dk(  sJ | j                  dk(  sJ t        j                  j                  | t	        j                  t        j
                  gdz  g              t        g       }|j                  } | j                  dk(  sJ | j                  dk(  sJ y c c}w )Nro   r#   r'   )r   ro   )rJ   boundsrK   r   r$   r  rt   r  r*   r+   r   r   ndimrl   rr   shape)r   rb   r   r   Es        r   test_boundsrl    s   XXFMVHIajjx!|CH  JJvx0 w''//12 E$ {{a||y(((


""6288bffX\N+CDE 	RAXXF<<6!!!<<9$$$#s   5Ec            
      b   t         j                  } t        j                  t        D cg c]0  }||j
                  s|j                  nt        j                  gdz  2 c}      }t        j                  t        j                  |d d df         t        j                  |d d df         t        j                  |d d df         t        j                  |d d df         g      }t        j                  j                  | |       g d gt        j                  j                         gfD ]  }t        |      }|j                  } | j                   dk(  sJ | j"                  dk(  sJ t        j                  j                  | t        j                  t        j                  gdz                y c c}w )Nro   r   rn   r#   r   r'   )rJ   total_boundsr$   rr   rK   r   rh  r  nanminnanmaxrt   r  r*   r+   r   r   ri  rl   )r   rb   rh  r   r#  rk  s         r   test_total_boundsrq    sQ   ^^FXXNWX!)qzz1	DXF xxIIfQTl#IIfQTl#IIfQTl#IIfQTl#		
H JJvx0 tfw//779:; C{{a||y(((


""6288RVVHqL+ABC 	Ys   5F,c                     t        d      D  cg c]"  } t        j                  j                  | |       $ }} t	        |      }||j
                  dkD     }t        |t              sJ |g d   }t        |      dk(  sJ t        |t              sJ |D cg c]  }|j                   c}g dk(  sJ |dd d   }t        |      dk(  sJ t        |t              sJ |D cg c]  }|j                   c}g dk(  sJ |d   }t        |t        j                  j                        sJ |j                  |d         sJ y c c} w c c}w c c}w )	Nr   g333333?)rn   r   r   r   rn   r#   r   )rn   r   r      	   )r)   r*   r+   r,   r   r  r(   r   rw   r-   r   )r0   r/   r   P2P3ry   P4P5s           r   test_getitemry  +  s3   49"I>qg$$Q*>F>VA	
166C<Bb-(((	
9Br7a<<b-(((AACC	)))	
14a4Br7a<<b-(((AACC///	
1Bb'**0011199VAY% ? 
 s   'D=EEitem)r  )r#   r   )r#   r#   )r   r#   r+   c                     t        d      D cg c]"  }t        j                  j                  ||      $ }}t	        |      }| |dg<   t        |d   t        j                  j                        sJ y c c}w )Nr   r   )r)   r*   r+   r,   r   r(   r   )rz  r0   r/   r   s       r   test_setitemr}  A  sh     5:"I>qg$$Q*>F>VAAqcFadG,,44555 ?s   'A2c            	         t        j                  t              5  t        d d t        d d k(  } d d d        t	        t
        d   t
        d   t
        d   g      }t	        t
        d   t
        d   t
        d   g      }||k(  }|j                         g dk(  sJ ||k7  }|j                         g dk(  sJ t        j                  j                  t        j                  j                  dddd      t        j                  j                  ddd	d	      g      }t	        t
        d   t
        d   t
        d   |g      }||k(  }|j                         g d
k(  sJ y # 1 sw Y   *xY w)Nr   rs  rn   r#   r   r   )TFT)FTFro   )FFFT)r;   r<   r=   r   r   r/   r   r*   r+   r   rx   )r   a1a2r{   r}   a3s         r   test_equality_opsr  X  s>   	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                  P    dt        t              v sJ dt        t              v sJ y )Nr   r   )dirr   rL   r!   r   test_dirr  o  s&    QQr!   c                  x    t        t              } | j                  | j                        j	                         sJ y rI   )r   r	  r   r   rf   )rJ   s    r   test_chainingr  t  s,    ()A::ajj!%%'''r!   c                      dd l } | j                  | j                  t                    }|d   J |d   j                  sJ t        d d j                  |d d       j                         sJ y )Nr   r   )pickler  dumpsrJ   r   r   rf   )r  T2s     r   test_pickler  z  sb    	fll1o	&Bb6>>b6???Sb6b"g&**,,,r!   c                  D   t        j                  t              5 } t        j	                  t
               d d d        dt         j                        j                         v sJ dt        | j                        v sJ dt        | j                        v sJ y # 1 sw Y   cxY w)Nlengths1221)	r;   r<   r=   rJ   r   r   r   valuelower)infos    r   test_raise_on_bad_sizesr    s}    	z	" d	

1 DJJ--////3tzz?"""3tzz?""" s   BBc            	         t         j                  j                  t         j                  j                  dddd      t         j                  j                  dddd      g      } t	        | g      }|j                  d      }| j                  d      g}t        ||       |j                  t        j                  dg            }t        ||       y )Nr   rn   r   ro   )	r*   r+   r   rx   r   r:  r    r$   rr   )r}   r   r   r   s       r   test_buffer_single_multipolygonr    s    !!..					aAq	)7+;+;+?+?1a+KLJ 
|
$CZZ]F!!!$%HVX&ZZ!&FVX&r!   c            	         t         j                  j                  t         j                  j                  dddd      t         j                  j                  dddd      g      } t	        | g      }|j                  t              }t        |d   t              sJ |d   | j                  k(  sJ |j                  t              }t        |d   t         j                  j                  j                        sJ |j                  t        j                  d            }|j                  t        j                  d      k(  sJ |d   | j                  d d k(  sJ y )Nr   rn   r   ro   U10r   )r*   r+   r   rx   r   r&   r   r(   r   rs   baseBaseGeometryr$   rl   )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 ZZ(F<<288E?***!9
s++++r!   zpyproj not installed)reasonc                      t         j                         } d| _        t        | t               du sJ t        | |       du sJ t        | t         d      du sJ y )N  FT)
allow_none)rJ   copycrsr   t1s    r   test_check_crsr    sU    	
BBFb!%%%b"%%%b!-555r!   c                     t         j                         } t         j                         }d| _        d|_        t        j                  t
        d      5  t        | |       d d d        t        j                  t
        d      5  t        t         |       d d d        t        j                  t
        d      5  t        | t                d d d        y # 1 sw Y   rxY w# 1 sw Y   JxY w# 1 sw Y   y xY w)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 #2r"# 
k)G	H "1b!" 
k)G	H "2q!" "# #" "" "s$   CC6C(CC%(C1zpyproj installedc                      t        j                  t        d      5  t        j	                         } d| _        d d d         j
                  J y # 1 sw Y   xY w)Nz(Cannot set the CRS, falling back to Noner   r  )r;   r   r  rJ   r  r  rb   s    r   test_missing_pyprojr    sH    	k)S	T FFH 55== s   AANAc                 D    t         j                         }| |d<   |d   J y r   )rJ   r  )r  r  s     r   	test_isnar    s$    	
BBqEa5==r!   c                  `    t         j                         } t        j                  | d<   | d   J y r   )rJ   r  r6   r  r  s    r   test_isna_pdNAr    s(    	
BEEBqEa5==r!   c                  6   t         j                         } d| _        | j                  d      j                  | j                  k(  sJ | j                  d      j                  | j                  k(  sJ | j                  d      j                  | j                  k(  sJ y )Nr  rn   r   r   )rJ   r  r  shiftr  s    r   test_shift_has_crsr    sn    	AAE771:>>QUU"""771:>>QUU"""772;??aee###r!   c                      t         j                         } d| _        | j                         j                  | j                  k(  sJ y )Nr  )rJ   r  r  uniquer  s    r   test_unique_has_crsr    s0    	AAE88:>>QUU"""r!   c                      t         j                         } d| _        t        j                  t
        d      5  | j                  d       d d d        y # 1 sw Y   y xY w)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    sH    	AAE	H
  	
  s   AAc                      t        j                  t        d      5  t        j	                          d d d        y # 1 sw Y   y xY w)Nz5The 'pyproj' package is required for estimate_utm_crsr   )r;   r<   r  rJ   estimate_utm_crsrL   r!   r   "test_estimate_utm_crs_pyproj_errorr    s7    	R
  	
  s	   :Ac                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestEstimateUtmCrsc                     t         j                  j                  dd      | _        t         j                  j                  dd      | _        t        | j                  | j                  gd      | _        y )Ng&SRg):_D@gYڂRg ~:XD@z	epsg:4326r  )r*   r+   r,   esbsolr   	landmarksrW   s    r   setup_methodzTestEstimateUtmCrs.setup_method  sQ    ##))(G<##))(G<%txx&:Lr!   c                     t        j                  d      }| j                  j                         |j	                  d      k(  sJ | j                  j                  d      |j	                  d      k(  sJ y )Npyproj
EPSG:32618NAD83z
EPSG:26918)r;   importorskipr  r  CRSrR   r  s     r   !test_estimate_utm_crs__geographicz4TestEstimateUtmCrs.test_estimate_utm_crs__geographic  s\    $$X.~~..0FJJ|4LLLL~~..w76::l;SSSSr!   c                     t        j                  d      }| j                  j                  d      j	                         |j                  d      k(  sJ y )Nr  z	EPSG:3857r  )r;   r  r  r  r  r  r  s     r    test_estimate_utm_crs__projectedz3TestEstimateUtmCrs.test_estimate_utm_crs__projected  sK    $$X.~~$$[1BBD

I
 
 	
 
r!   c                    t        j                  d      }t        t        j                  j                  dd      t        j                  j                  dd      gd      }|j                         |j                  d      k(  sJ y )	Nr  gqsH:AgaQSAg_ QAg.pk`Az	EPSG:3851r  z
EPSG:32760)r;   r  r   r*   r+   r,   r  r  )rR   r  antimeridians      r   #test_estimate_utm_crs__antimeridianz6TestEstimateUtmCrs.test_estimate_utm_crs__antimeridian  sx    $$X.#  &&'8:LM  &&'8:KL 
 ,,.&**\2JJJJr!   c                    t        j                  d       t        j                  t        d      5  t	        t
        j                  j                  g d      gd      j                          d d d        y # 1 sw Y   y xY w)Nr  zUnable to determine UTM CRSr   )r   Z   )rn   r  )r#   r  z	EPSG:4326r  	r;   r  r<   RuntimeErrorr   r*   r+   r   r  rW   s    r   $test_estimate_utm_crs__out_of_boundsz7TestEstimateUtmCrs.test_estimate_utm_crs__out_of_bounds  s_    H%]]</LM 	!!!))*EFG[ 	! 	! 	!s   <A66A?c                     t        j                  d       t        j                  t        d      5  t	        t
        j                  j                  g d      g      j                          d d d        y # 1 sw Y   y xY w)Nr  zcrs must be setr   r  r  rW   s    r   "test_estimate_utm_crs__missing_crsz5TestEstimateUtmCrs.test_estimate_utm_crs__missing_crs'  s]    H%]]</@A 	!!!))*EFG 	! 	! 	!s   :A44A=N)	rY   rZ   r[   r  r  r  r  r  r  rL   r!   r   r  r     s#    M
T

K!!r!   r  c                      t        j                  g       j                  j                  } | j	                  dd      t        j                  dgt              k(  sJ | j	                  dd      sJ y )Nr{  rf   T)keepdimsrk   F)r8   GeoDataFramer+   rr   _reducer$   rs   )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,   rp   r/   r   r    r1   rG   rM   rg   r~   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r  r  r  r  r  r%  r)  r,  r3  roundsquarebevelr<  r@  rI  rQ  rY  r[  rd  rf  rl  rq  ry  r  	GeoSeriesrr   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(SQ}v}}@ST   7;;#4#4_#Et"LL	 GLBiABG=6==?MFMMO<  
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*7	W/6AW5*W/