
    jj                        S SK r S SKJr  S SKrS SKrS SKrS SKJ	r	J
r
JrJr  S SKrS SKJr  S SKJrJrJrJrJrJr  S SKrS SKJrJr  S SKJrJrJr  \R>                  " 5       S 5       r \R>                  " 5       S 5       r! " S	 S
5      r" " S S5      r#\RH                  RK                  S5       " S S5      5       r&\R>                  S 5       r'\R>                  S 5       r(S r) " S S5      r*g)    N)Sequence)GeometryCollectionPointPolygonbox)GeoDataFrame	GeoSeriespoints_from_xy	read_filesjoinsjoin_nearest)assert_geodataframe_equalassert_geoseries_equal)assert_frame_equalassert_index_equalassert_series_equalc                 (   [        [        / SQ5      [        / SQ5      [        / SQ5      /5      n[        [        / SQ5      [        / SQ5      [        / SQ5      /5      n[        U/ SQS.5      n[        U/ S	QS
.5      nU R                  S:X  a  / SQUl        / SQUl        U R                  S:X  a"  SUR                  l        SUR                  l        U R                  S:X  a,  / SQn/ SQnUR                  XV/5      nUR                  Xe/5      nU R                  S:X  aR  / SQn/ SQnUR                  XV/5      nUR                  Xe/5      nSS/UR                  l        SS/UR                  l        0 nUR                  5       R                  5       R                  SS0S9nUR                  5       R                  / SQ   R                  5       R                  SS0S9n	/ SQUS'   / SQU	S'   [        R                  " XSSS9n
U
R                  SS S!9R                  5       US"'   UR                  5       R                  5       R                  SS0S9nUR                  5       R                  5       R                  SS0S9n	/ SQUS'   / S#QU	S'   [        R                  " XSSS9n
U
R                  SS S!9R                  5       US$'   / SQUS'   / S%QU	S'   [        R                  " XSSS9n
U
R                  SS S!9R                  5       US&'   U R                  X4U/$ )'N)r   r   )   r   r   r   )r   r   )r   )   r   )r   r   )r   r   ))r   r   )	   r   )r      )r   r   )   r   )   r   r   r   )r   r   )r   )   r   r   r   )r   r   )r   )
   r   )r    r    )r   r    r   r      )geometrydf1)r   r   r   )r#   df2string-index)abc)defnamed-indexdf1_ixdf2_ixmulti-indexnamed-multi-indexdf1_ix1df1_ix2df2_ix1df2_ix2index
index_leftcolumns)r   r   r   r"   index_right_merge)r   r   r   r   outer)onhowr   axis
intersects)r   r   r   contains)r   r   r   within)r	   r   r   paramr6   name	set_indexnamescopyreset_indexrenameilocpdmergedrop)requestpolys1polys2r$   r%   i1i2expectedpart1part2exps              c/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/tools/tests/test_sjoin.pydfsrY      s   454545	
F 454589	
F F9=
>C
F9=
>C}}&#	#	}}%!		!		}}%mmRH%mmRH%}}++mmRH%mmRH%$i0		$i0		 HHHJ""$++Wl4K+LE
	l			-0	1	 
  E(O"E(O
((5H'
:C XXhQX7<<>H\HHJ""$++Wl4K+LEHHJ""$++Wm4L+MEE(OE(O
((5H'
:C88H185::<HZE(OE(O
((5H'
:C(388:HXMM3X..    c                     [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /n [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /n/ S	Qn[        R                  " U U/ S
Q/ SQ/ SQS.5      n[        R                  " U/ S
Q/ SQ/ SQS.5      nX44$ )Nr   r   r"   r   r   r   r   r   )ABCDEFGH)r   r   r"   r   r   r   r   r   )TTTTTTTT)r#   attr_trackerduplicate_columnattr1attr2)TTFFTTFF)TTFFFFFF)r#   re   rf   rg   )r   	geopandasr   )geo_left	geo_rightrd   left_gdf	right_gdfs        rX   dfs_shared_attributerm   c   s     	aaaaaaaa	H 	aaaaaaaa	I <L%% ( 8EE	
H &&! 8IK		
I rZ   c                      \ rS rSr\R
                  R                  SSSS1 Sk4SSS1 Sk4SSS1 Sk4SSS	1 S
k4SSS	1 S
k4SSS	1 Sk4/5      S\S\S\4S j5       r\R
                  R                  \
R                  (       + SS9\R
                  R                  SSS/SS9S 5       5       r\R
                  R                  SS/SS9S 5       r\R
                  R                  S/ SQSS9\R
                  R                  S/ SQ5      S 5       5       r\R
                  R                  S/ SQSS9\R
                  R                  S/ SQ5      S 5       5       rS r\R
                  R                  S/ SQ5      \R
                  R                  S \" \" 5       \" 5       /S!9\" \" 5       S!9/5      S" 5       5       r\R
                  R                  SSS/SS9S# 5       r\R
                  R                  S/ SQSS9\R
                  R                  S/ SQ5      S$ 5       5       r\R
                  R                  \
R.                  (       + S%S9\R
                  R                  SS/5      \R
                  R                  S&\" S'S'5      \" S(S(5      /\" S(S(5      /S'S(/S'S'/\R4                  " S)5      4\" S'S'5      \" S(S(5      /\" S'S'5      \" S(S(5      // S*Q/ S+Q\R4                  " S)5      4\" S'S'5      \" S'S'5      \" S,S,5      /\" S(S(5      /S(S)/S'S'/S'\R4                  " S)5      \R4                  " S-5      /4\" S'S'5      \" S'S'5      \" S,S,5      /\" S(S(5      \" S.S.5      // S/Q/ S0Q\R8                  " S'\R4                  " S)5      \R4                  " S-5      /5      4/5      S1\\   S2\\   4S3 j5       5       5       r\R
                  R                  S/ SQ5      S4 5       r S5 r!\R
                  R                  S6\RD                  " S7S8S9.S7S8S9.S:S;9\RD                  " S)S(S9.S)S(S9.S<S;9\RD                  " SS=S9.SS=S9.S>S;9\RD                  " SS=S9.S7S8S9.S?S;9/5      S@ 5       r#SA r$SB r%SC r&SDr'gE)FTestSpatialJoin   z$how, lsuffix, rsuffix, expected_colsleftright>   col_left	col_rightr:   inner>   rs   rt   r7   lftrgt>   col_lftcol_rgt	index_rgt>   rx   ry   	index_lftr>   lsuffixrsuffixc                     [        S/[        SS5      /S.5      n[        S/[        SS5      /S.5      n[        XVXUS9n[        UR                  5      US1-  :X  d   eg )Nr   r   )colr#   )r>   r|   r}   r#   )r   r   r   setr9   )selfr>   r|   r}   expected_colsrq   rr   joineds           rX   test_suffixesTestSpatialJoin.test_suffixes   sb     QCeAqk]CDaSuQ{mDEtgN6>>"mzl&BBBBrZ   zpyproj not available)reasonrY   default-indexr&   T)indirectc                     Uu  p#pESUl         [        R                  " [        SS9   [	        X45        S S S 5        g ! , (       d  f       g = f)Nz	epsg:4326zCRS mismatch between the CRSmatch)crspytestwarnsUserWarningr   r   rY   r6   r$   r%   rT   s         rX   test_crs_mismatch!TestSpatialJoin.test_crs_mismatch   s8     %(!C\\+-KL#O MLLs	   ;
A	c                     Uu  p#pB[         R                  " [        SS9   [        X4SS9  S S S 5        g ! , (       d  f       g = f)Nz:sjoin\(\) got an unexpected keyword argument 'extra_param'r   test)extra_param)r   raises	TypeErrorr   )r   rY   _r$   r%   s        rX   test_unknown_kwargs#TestSpatialJoin.test_unknown_kwargs   s9    ]]O
 #/	
 
 
s	   3
A)r   r&   r-   r0   r1   	predicate)rA   rB   rC   c                    Uu  p4pV[        XESUS9nXa   R                  5       R                  5       nUR                  SSS9R	                  SS0S9nUS	S
/   R                  S5      US	S
/'   US:X  a  USS/   R                  S5      USS/'   US:X  a,  USS/   R                  S5      USS/'   UR                  S5      nUS;   a"  UR                  S5      nS UR                  l        US:X  aH  UR                  SS/5      R	                  SSS.S9nUR                  R                  UR                  l	        US:X  a  UR                  SS/5      n[        Xx5        g )Nru   r>   r   
geometry_yr   r?   
geometry_xr#   r8   r$   r%   int64r   r7   r:   r-   r.   r/   r   r&   r0   	level_0_x	level_1_xindex_right0index_right1	level_0_y	level_1_yr1   r2   r3   )r   dropnarH   rN   rJ   astyperF   r6   rE   rG   r   	r   r   rY   r6   r$   r%   rT   resrW   s	            rX   
test_innerTestSpatialJoin.test_inner   sx    %(!CC'Y?!((*//1hh|!h,33\:<V3W!5%.188AUENO#14}-2fWo }-. M!(+Xx,@(A(H(H(QC8$%--)C55---C!CIINM!--k :;BB&4>R C C "iiooCIIO''--I 67C3$rZ   c                    Uu  p4pV[        XESUS9nUS;   a!  Xa   R                  S/S9R                  5       nOtUS:X  a!  Xa   R                  S/S9R                  5       nOMUS:X  a!  Xa   R                  S	/S9R                  5       nO&US
:X  a   Xa   R                  S/S9R                  5       nWR                  SSS9R	                  SS0S9nUS   R                  S5      US'   US:X  a3  US   R                  S5      US'   US   R                  [        5      US'   O0US:X  a*  US/   R                  S5      US/'   UR                  S5      nUS;   a"  UR                  S5      nS UR                  l	        US:X  aH  UR                  S	S/5      R	                  SSS.S9nUR                  R                  UR                  l
        US
:X  a  UR                  SS/5      n[        Xx5        g )Nrq   r   r   r7   subsetr-   r.   r0   r   r1   r2   r   r   r?   r   r#   r8   r$   r   r   r:   r   r   r   r   r3   )r   r   rH   rN   rJ   r   floatrF   r6   rE   rG   r   r   s	            rX   	test_leftTestSpatialJoin.test_left   s    %(!CC&I>55%,,\N,CHHJCm#%,,XJ,?DDFCm#%,,[M,BGGIC))%,,YK,@EEGChh|!h,33\:<V3WZ&&w/E
O# #L 1 8 8 AC!$]!3!:!:5!ACm#!8*o44W=C
O--)C55---C!CIINM!--k :;BB&4>R C C "iiooCIIO''--I 67C3$rZ   c                    [         R                  " SS/[        / SQ5      [        / SQ5      /S.5      n[         R                  " S/[        SS5      /S.5      n[	        X!S	S
S9nUR
                  R                  5       R                  5       (       d   e[	        X!SS
S9nUR                  R                  5       R                  5       (       d   e[	        X!SS
S9nUR                  (       d   eg )Nr   r"   r   r   r   r   )r   r   r   )r"   r   )r"   r   r   col2r#   g            ?)col1r#   rq   rA   r   rr   ru   )
rh   r   r   r   r   r:   isnullallr7   empty)r   polygonsnot_inr   s       rX   test_empty_joinTestSpatialJoin.test_empty_join	  s    ))A<=<=
 ''!5sCSBT(UVfFlK  '')--////fG|L&&(,,....fG|L{{{rZ   )rB   contains_properly
covered_bycoverscrossesrA   touchesrC   r   r#   c                    [         R                  " SS/[        / SQ5      [        / SQ5      /S.5      n[        X#SUS9nUR                  R                  5       R                  5       (       d   e[        X#SUS9nUR                  R                  5       R                  5       (       d   e[        X#S	US9nUR                  (       d   eg )
Nr   r"   r   r   r   rq   r   rr   ru   )	rh   r   r   r   r:   r   r   r7   r   )r   r   r   r   results        rX   test_join_with_empty$TestSpatialJoin.test_join_with_empty  s    , ))A<=<=
 uFiH!!((*..0000uGyI  '')--////uGyI|||rZ   c                 0   Uu  p#pE[         R                  " [        SS9   [        UR                  U5        S S S 5        [         R                  " [        SS9   [        X4R                  5        S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)Nz 'left_df' should be GeoDataFramer   z!'right_df' should be GeoDataFrame)r   r   
ValueErrorr   r#   r   s         rX   test_sjoin_invalid_args'TestSpatialJoin.test_sjoin_invalid_argsB  si    $'!C]]:-OP#,,$ Q ]]:-PQ#||$ RQ QP RQs   A6B6
B
Bc                 (   Uu  p4pV[        XESUS9nUS;   a!  Xa   R                  S/S9R                  5       nOtUS:X  a!  Xa   R                  S/S9R                  5       nOMUS:X  a!  Xa   R                  S	/S9R                  5       nO&US
:X  a   Xa   R                  S/S9R                  5       nWR                  SSS9R	                  SS0S9nUS   R                  S5      US'   US:X  a3  US   R                  S5      US'   US   R                  [        5      US'   O0US:X  a*  US/   R                  S5      US/'   UR                  S5      nUS;   a;  UR                  S5      nUR                  UR                  S9nS UR                  l        US:X  aH  UR                  S	S/5      R	                  SSS.S9nUR                  R                  UR                  l        US
:X  a  UR                  SS/5      nUS:X  a  UR                  5       n[        XxSS9  g )Nrr   r   r   r:   r   r-   r/   r0   r   r1   r4   r   r   r?   r   r#   r8   r%   r   r   r7   r   index_left0index_left1)r   r   r5   rC   F)check_index_type)r   r   rH   rN   rJ   r   r   rF   reindexr9   r6   rE   rG   
sort_indexr   r   s	            rX   
test_rightTestSpatialJoin.test_rightL  s&    %(!CC'Y?55%,,]O,DIIKCm#%,,XJ,?DDFCm#%,,[M,BGGIC))%,,YK,@EEGChh|!h,33\:<V3WZ&&w/E
O#!$]!3!:!:7!CC #L 1 8 8 ?Cm#!8*o44W=C
O--)C55--.C++ckk+2C!CIINM!--k :;BB&3-P C C "iiooCIIO''--I 67C .."C3e<rZ   z`dwithin` requires GEOS 3.10z<geo_left, geo_right, expected_left, expected_right, distancer   r   r"   )r   r   r   r   )r   r   r   r      r   )r   r"   r   r"   )r   r   r   r   expected_leftexpected_rightc                    [         R                  " SU05      n[         R                  " SU05      nUR                  U   R                  5       n	XIS'   [	        XxUSUS9n
[        U	R                  5       U
R                  5       5        g )Nr#   r:   dwithin)r>   r   distance)rh   r   rK   rH   r   r   r   )r   ri   rj   r   r   r   r>   rq   rr   expected_gdfr   s              rX   test_sjoin_dwithin"TestSpatialJoin.test_sjoin_dwithin~  sz    b %%z8&<=&&
I'>?yy/446&4]#ty8T<224f6G6G6IJrZ   c                    [        [        / SQ/ SQ5      S9n[        S/ SQ0[        SSSS5      [        SSSS5      [        SSSS5      [        SSSS5      /S9n[        X#US	S
9n[	        UR
                  UR
                  5        g )N)皙?g?g333333?gffffff?)g?g333333?g?r   r   id)r   r"   r   r   r   r   r   rq   )r   r>   )r   r
   r   r   r   r6   )r   r   ptspolysr   s        rX   test_sjoin_left_order%TestSpatialJoin.test_sjoin_left_order  s      #$8:NO
 < Aq#s#AsC#CAs#Ca#	
 sYFC6<<3rZ   c                    [        U5      n[        U5      nUSS/   R                  SS0S9nUS   R                  [        5      R                  S   US'   US   R                  [        5      R                  S   US'   [	        XCSS9nUS   R                  [        5      R                  S   US   R                  [        5      R                  S   :H  R                  5       (       d   eUR                  S:X  d   eg )	Nr#   rE   countryr8   r   firstLetteron_attribute)   r   )r   rJ   r   strr   r   shape)r   naturalearth_lowresnaturalearth_cities	countriescitiesr   s         rX   test_sjoin_shared_attribute+TestSpatialJoin.test_sjoin_shared_attribute  s    12	./z623::FICV:W	 $-Y#7#>#>s#C#G#G#J	-  &v 5 5c : > >q A}v}E9$$S)--a0F6N4I4I#4N4R4RST4UU
#% 	  ||w&&&rZ   z,attr1_key_change_dict, attr2_key_change_dictrM   no_merge)TFzmerge on string attributes)r   zmerge on integer attributesFzmerge on boolean attributeszmerge on mixed attributesc                 *   Uu  pEUS   R                  U5      US'   US   R                  U5      US'   US   R                  U5      US'   US   R                  U5      US'   [        XESS9nSS/US   R                  :H  R                  5       (       d   eg )Nrf   rg   )rf   rg   r   r\   r]   rd   )mapr   valuesr   )r   rm   attr1_key_change_dictattr2_key_change_dictrk   rl   r   s          rX   (test_sjoin_multiple_attributes_datatypes8TestSpatialJoin.test_sjoin_multiple_attributes_datatypes  s    8 3$W-112GH$W-112GH&w/334IJ	'&w/334IJ	'x9KLc
f^4;;;@@BBBBrZ   c                     Uu  p#[        X#S/S9n/ SQUS   R                  :H  R                  5       (       d   e1 SkR                  UR                  5      (       d   eSU;  d   eg )Nrf   r   )r\   r]   r`   ra   rd   >   rf   
attr2_leftattr2_right
attr1_left)r   r   r   issubsetr9   )r   rm   rk   rl   r   s        rX   +test_sjoin_multiple_attributes_check_header;TestSpatialJoin.test_sjoin_multiple_attributes_check_header  sf    2x'C$~(>(E(EEJJLLLL5>>v~~NNNN6)))rZ   c                    Uu  p#UR                  SSS9nUR                  SSS9n[        R                  " [        SS9   [	        X$SS9  S S S 5        [        R                  " [        SS9   [	        XSSS9  S S S 5        [        R                  " [        SS9   [	        XTSS9  S S S 5        g ! , (       d  f       Ng= f! , (       d  f       NL= f! , (       d  f       g = f)	Nrf   r   r?   z:Expected column attr1 is missing from the right dataframe.r   r   z9Expected column attr1 is missing from the left dataframe.z=Expected column attr1 is missing from both of the dataframes.)rN   r   r   r   r   )r   rm   rk   rl   right_gdf_dropped_attrleft_gdf_dropped_attrs         rX   &test_sjoin_error_column_does_not_exist6TestSpatialJoin.test_sjoin_error_column_does_not_exist  s    2!*a!@ (gA >]]N
 (I	
 ]]M
 'I	
 ]]Q
 'gV	
 

 

 

 
s#   B**B;C*
B8;
C	
Cc                    Uu  p#[         R                  " [        SS9   [        X#SS9  S S S 5        [         R                  " [        SS9   [        X#SS/S9  S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)NzMActive geometry column cannot be used as an input for on_attribute parameter.r   r#   r   rf   )r   r   r   r   )r   rm   rk   rl   s       rX   $test_sjoin_error_use_geometry_column4TestSpatialJoin.test_sjoin_error_use_geometry_column*  sv    2]]&

 (J?
 ]]&

 (Wj4IJ
 

 

 
s   A 
A1 
A.1
A? N)(__name__
__module____qualname____firstlineno__r   markparametrizer   r   skipifcompat
HAS_PYPROJr   r   r   r   r   r   r   r	   r   r   r   GEOS_GE_310r   mathsqrtnparrayr   intr   r   r   rD   r   r  r  r  __static_attributes__r  rZ   rX   ro   ro      sg   [[.VW&NOfg'OPfg'NOUE#FGeU$GHeU$GH	

C Cs CS C
C [[F---6LM[[U_n$EPTU V N [[U_$5E0 F0 [[	
   
 [[[*NO% P
%4 [[	
   
 [[[*NO!% P
!%F& [[		
 [[#5#79K9M"NO)+.	
($ [[U_n$EPTU% V% [[	
   
 [[[*NO$= P
$=L [[F...7UV[[UWI.[[F q!eAqk*q!AA		! q!eAqk*q!eAqk*		! q!eAqk5R=9q!AADIIaL$))A,/ q!eAqk5R=9q!eCo.!TYYq\499Q<897"	
%LK  }	K
 !KM% / WPK" [[		
44&' [[6LLz2z2/
 LL##0
 LLE*E*0
 LLE*z2.!	
2
C32
C*W.KrZ   ro   c                      \ rS rSr\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S 5       r	\R
                  R                  S/ SQ5      S 5       r
\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S/ SQ5      S	 5       rS
rg)TestIndexNamesi:  r>   )ru   rq   rr   c                 |   [        SS5      [        SS5      /n[        SU0[        R                  " SS/SS9S9n[        SU0[        R                  " SS/S	S9S9n[	        X4US
9nUS;   a#  [        SS/USS/S.5      R                  S5      nO"[        SS/SS/US.5      R                  S	5      n[        XV5        SUR                  l        SUR                  l        [	        X4US
9nUS;   a#  [        SS/USS/S.5      R                  S5      nO"[        SS/SS/US.5      R                  S5      n[        XV5        g )Nr   r"   r#   myidx1rE   r6   r'   r(   myidx2r>   ru   rq   )r$  r#   r'  )r'  r$  r#   myidx
myidx_leftr#   myidx_rightr,  )r-  r,  r#   r-  )	r   r   rL   Indexr   rF   r   r6   rE   r   r>   geomsr$   r%   r   rT   s          rX   test_preserve_index_names(TestIndexNames.test_preserve_index_names;  s]    q!eAqk*J.bhh1vH6UVrxxc
'J
 sS)###q6uc
Ki! 
 $:!QUKi!  	"&3 !		 		sS)### !1v5#sTi% 
 $!$c
1a&eTi&  	"&3rZ   c                    [        SS5      [        SS5      /n[        SU0[        R                  R	                  SS/SS/S9S	9n[        SU0[        R                  R	                  S
S/SS /S9S	9n[        X4US9n[        SS/SS/USS/SS/S.5      nUS;   a  UR                  SS/5      nO&UR                  SS/5      nSS /UR                  l        [        XW5        SS/UR                  l        SS /UR                  l        [        X4US9n[        SS/SS/USS/SS/S.5      nUS;   a  UR                  SS/5      nO&UR                  SS/5      nSS /UR                  l        [        XW5        g )Nr   r"   r#   r'   r   r(   r"   r$  level2rG   r&  )r)   r   )r*   r   r'  r(  r'   r(   r)   r*   r   r   )r$  r6  r#   r'  r   r)  r   r*  )r,  r6  r#   r-  r   r,  r-  )
r   r   rL   
MultiIndexfrom_tuplesr   rF   r6   rG   r   )r   r>   r0  r$   r%   r   expected_baserT   s           rX   $test_preserve_index_names_multiindex3TestIndexNames.test_preserve_index_names_multiindex^  s    q!eAqk*--++8$Xx,@ , 
 --++8$Xt,< , 
 sS)$*a&!*!"A
 ##$..(/CDH %.../IJH$,d#3HNN !&3 #H-		"D/		sS)$"Cja&! #Sz!"A
 ##$..h/GHH %..~/NOH$14#8HNN !&3rZ   c                    [        SS5      [        SS5      /n[        SS/US.5      n[        SU0[        R                  " SS/SS9S	9n[	        X4US
9nUS;   a  [        SS/USS/S.5      nO'[        SS/SS/US.[        R                  " SS/SS9S	9n[        XV5        [	        XCUS
9nUS;   a(  [        USS/SS/S.[        R                  " SS/SS9S	9nO[        SS/SS/US.5      n[        XV5        g )Nr   r"   r*  r#   r#   r'   r(   r*  r%  r&  r(  r)  r+  r   r7   r,  r#   r-  r#   r:   r-  r,  )r,  r-  r#   )r   r   rL   r.  r   r   r/  s          rX    test_duplicate_column_index_name/TestIndexNames.test_duplicate_column_index_name  s(    q!eAqk*aV?@rxxc
'I
 sS)### !1v5#sTH
 $ !1vaVOhhSz>H 	"&3sS)###"Aq61a&QhhSz=H $ #Sz1a&eTH 	"&3rZ   c                 <   [        SS5      [        SS5      /n[        SS/US.5      n[        SU0[        R                  R	                  SS/SS/S	9S
9n[        X4US9nUS;   a  [        SS/USS/SS/S.5      nO2[        SS/SS/US.[        R                  R	                  SS/SS/S	9S
9n[        XV5        [        XCUS9nUS;   a3  [        USS/SS/S.[        R                  R	                  SS/SS/S	9S
9nO[        SS/SS/SS/US.5      n[        XV5        g )Nr   r"   r>  r#   r4  r5  r*  r6  r7  r&  r(  r)  r'   r(   )r,  r#   r-  r6  r   r?  r-  r@  r,  )r,  r6  r-  r#   )r   r   rL   r8  r9  r   r   r/  s          rX   +test_duplicate_column_index_name_multiindex:TestIndexNames.test_duplicate_column_index_name_multiindex  s{    q!eAqk*aV?@--++8$Wh,? , 
 sS)####$a& %$': !f	H $ !1vaVOmm//x(0I 0 H 	"&3sS)###"Aq61a&Qmm//x(x0H 0 H $#&* !f$%q6 %	H 	"&3rZ   c                     [        SS5      [        SS5      /n[        SS/US.5      n[        SU05      n[        R                  " [        SS9   [        X4US9  S S S 5        g ! , (       d  f       g = f)Nr   r"   )r:   r#   r#   z%'index_right' cannot be a column namer   r(  )r   r   r   r   r   r   )r   r>   r0  r$   r%   s        rX   "test_conflicting_column_index_name1TestIndexNames.test_conflicting_column_index_name  sb     q!eAqk*Aq6uEFJ./]]:-TU#$ VUUs   A##
A1c                 \   [        SS5      [        SS5      /n[        SS/SS/US.5      n[        SS/US.5      n[        X4US	9nUS
;   a#  [        SS/SS/USS/SS/S.5      n/ SQUl        O"[        SS/SS/SS/SS/US.5      n/ SQUl        UR	                  S5      n[        XV5        g )Nr   r"   r'   r(   )columncolumn_rightr#   r   g?)rJ  r#   r(  r)  r   )r   r"   r   r   r   )column_leftrK  r#   r:   rK  )r7   rL  rK  rK  r#   r#   )r   r   r   r9   set_geometryr   r/  s          rX   #test_conflicting_column_with_suffix2TestIndexNames.test_conflicting_column_with_suffix  s     q!eAqk*1vSzuM
 sCjeDEsS)###FSzeAC:NH H $F1v3*#sNH H ((4!&3rZ   r  N)r  r  r  r  r   r  r  r1  r;  rA  rD  rG  rN  r   r  rZ   rX   r"  r"  :  s    [[U$>? 4 @ 4D [[U$>?64 @64p [[U$>? 4 @ 4D [[U$>?14 @14f [[U$>?% @% [[U$>?!4 @!4rZ   r"  _setup_class_nybb_filenamec                   `   \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
/ SQ5      S 5       rS r\R                  R"                  S 5       r\R                  R'                  S5      S 5       rS r\R                  R                  S/ SQ5      S 5       rS rSrg)TestSpatialJoinNYBBi  c                    [        U R                  5      U l        U R                  R                  U l        SnU R                  R                   Vs/ s H  n[        U5      PM     nn[        [        [        US   US   [        US   US   -
  U-  5      5      [        US   US   [        US   US   -
  U-  5      5      5       VVs/ s H  u  p$[        X$5      X$-   X$-
  S.PM     snnU R                  S9U l
        g s  snf s  snnf )N   r   r"   r   r   )r#   
pointattr1
pointattr2)r   )r   nybb_filenamepolydfr   total_boundsr  r   zipranger   pointdf)r   Nxr(   ys        rX   setup_method TestSpatialJoinNYBB.setup_method  s     2 23;;??![[5565SV56#  !A$!c1Q4!A$;!*;&<=!A$!c1Q4!A$;!*;&<=DA #1[QUS 	
 7s   C=D
c                    U R                   R                  R                  nU R                   R                  SS0S9R	                  S5      U l         XR                   R                  R                  :w  d   e[        U R                   U R                  SS9nU R                   R                  R                  UR                  R                  :X  d   eg )Nr#   new_geomr8   rq   r(  )rX  r#   rE   rJ   rM  r   r\  )r   polydf_original_geom_namer   s      rX   test_geometry_name&TestSpatialJoinNYBB.test_geometry_name.  s    $(KK$8$8$=$=!kk((*j1I(JWW
 )KK,@,@,E,EEEEDKK6:{{##((CLL,=,====rZ   c                    [        U R                  U R                  SS9nUR                  S:X  d   eUR	                  5        H!  u  p#UR
                  R                  S:X  a  M!   e   SUR                  ;   d   eSUR                  ;   d   eg )Nrq   r(     r   r   rU  BoroCode)r   r\  rX  r   iterrowsr#   	geom_typer9   )r   dfirows       rX   test_sjoin_left#TestSpatialJoinNYBB.test_sjoin_left8  sx    4<<&9xx7"""kkmFA<<))W444 $rzz)))RZZ'''rZ   c                    [        U R                  U R                  SS9n[        U R                  U R                  SS9nUR                  S:X  d   eUR                  UR                  :X  d   eUR	                  5        H!  u  p4UR
                  R                  S:X  a  M!   e   UR	                  5        H!  u  p4UR
                  R                  S:X  a  M!   e   g )Nrr   r(  rq      r   MultiPolygon)r   r\  rX  r   rk  r#   rl  )r   rm  r%   rn  ro  s        rX   test_sjoin_right$TestSpatialJoinNYBB.test_sjoin_right@  s    4<<':DKK6:xx7"""xx399$$$kkmFA<<))^;;; $llnFA<<))^;;; %rZ   c                 f    [        U R                  U R                  SS9nUR                  S:X  d   eg )Nru   r(  )   r   r   r\  rX  r   r   rm  s     rX   test_sjoin_inner$TestSpatialJoinNYBB.test_sjoin_innerK  s*    4<<':xx7"""rZ   c                 V   [        U R                  U R                  SSS9nUR                  S:X  d   eUR                  S   S   S:X  d   e[        U R                  U R                  SSS9nUR                  S:X  d   e[
        R                  " UR                  S   S	   5      (       d   eg )
Nrq   rC   r   rh  r   BoroNamezStaten IslandrB   
Shape_Area)r   r\  rX  r   locr  isnanr{  s     rX   test_sjoin_predicate(TestSpatialJoinNYBB.test_sjoin_predicateO  s    4<<&HMxx7"""vvay$777 4<<&JOxx7"""xxq	,/0000rZ   c                     [         R                  " [        5         [        U R                  U R
                  SSS9  S S S 5        g ! , (       d  f       g = f)Nrq   spandexr   )r   r   r   r   r\  rX  )r   s    rX   test_sjoin_bad_predicate,TestSpatialJoinNYBB.test_sjoin_bad_predicateZ  s0    ]]:&$,,9M '&&s   !A
Ac                     U R                   R                  SS0S9n[        XR                  SS9nSUR                  ;   d   eSUR                  ;   d   eg )NrU  r  r8   rq   r(  Shape_Area_leftShape_Area_right)r\  rJ   r   rX  r9   )r   pointdf2rm  s      rX    test_sjoin_duplicate_column_name4TestSpatialJoinNYBB.test_sjoin_duplicate_column_name_  sR    <<&&l/K&L8[[f5 BJJ...!RZZ///rZ   r>   )rq   rr   ru   c                    U R                   R                  5       nSUR                  l        U R                  R                  5       nSUR                  l        [        X#US9nUR                  R                  S:X  d   eUR                  R                  S:X  d   eUS:X  a  UR                  R                  S:X  d   eg UR                  R                  S:X  d   eg )Npointidpolyidr(  rr   )r\  rH   r6   rE   rX  r   )r   r>   r  rX  r   s        rX   test_sjoin_named_index*TestSpatialJoinNYBB.test_sjoin_named_indexe  s     <<$$&'!!#$H#.~~""i///||  H,,, '>99>>X---99>>Y...rZ   c                     / SQU R                   l        [        U R                  U R                   SS9nUR                  S:X  d   e[        U R                   U R                  SS9nUR                  S:X  d   eg )N)r   r   r   r   r   rq   r(  rh  rs  )rX  r6   r   r\  r   r{  s     rX   test_sjoin_values%TestSpatialJoinNYBB.test_sjoin_valuesw  s^    +4<<&9xx7"""4;;&9xx7"""rZ   c                    [        U R                  R                  SS  U R                  SS9n[        U R                  R                  SS  U R                  SS9n[        U R                  R                  SS  U R                  SS9n[        R
                  " U R                  R                  S S [        R                  " SSS	9U R                  R                  S
SS9R                  S S /SS9n[        U5      n[        R
                  " U R                  R                  S
SS9R                  S S [        R
                  " [        R                  " SSS	9[        R                  " SSS	9/SS9U R                  /SS9n[        U5      R                  S5      n[        R
                  " U R                  R                  SS  [        R                  " SSS	9U R                  R                  S S R                  S
SS9/SS9n[        U5      n	UR                  U5      (       d   eUR                  U5      (       d   eU	R                  U5      (       d   eg )N   ru   r(  rq   rr   r   r:   r   )rE   dtyper#   r   r?   r7   )r   r\  rK   rX  rL   concatSeriesrN   r   rF   equals)
r   df_innerdf_leftdf_rightexpected_inner_dfexpected_innerexpected_right_dfr   expected_left_dfr   s
             rX   test_no_overlapping_geometry0TestSpatialJoinNYBB.test_no_overlapping_geometry  s   
 **23/'J))"#.H**23/'JII!!"1%		}G<  ! 499"1=
 
 &&78II!!*1!5::2A>				|7C		}GD  
 
 &&78BB=Q99!!"#&		}G<  !$))*1)=
 
 %%56$$X....$$X....##G,,,,rZ   zNot implementedc                 f    [        U R                  U R                  SS9nUR                  S:X  d   eg )Nr<   r(  rh  rz  r{  s     rX   test_sjoin_outer$TestSpatialJoinNYBB.test_sjoin_outer  s*    4<<':xx7"""rZ   c                 `   [        [        5       /S-  U R                  S9n[        [        R
                  " U R                  U/5      U R                  SS9nUR                  S:X  d   e[        U R                  [        R
                  " U R                  U/5      SS9nUR                  S:X  d   eg )Nr   r#   r   rq   r(  )   r   rh  )	r   r   r   r   rL   r  r\  rX  r   )r   r   rm  r%   s       rX   test_sjoin_empty_geometries/TestSpatialJoinNYBB.test_sjoin_empty_geometries  s    '9';&<q&@dhhO299dllE23T[[fMxx7"""DLL"))T[[%,@"AvNyyG###rZ   r   )rA   rC   rB   c                 t   [        / U R                  R                  S9n[        U R                  USUS9R                  (       d   e[        U R                  USUS9R                  (       d   e[        X R                  SUS9R                  (       d   e[        X R                  SUS9R                  (       d   eg)z&Tests a completely empty GeoDataFrame.r  ru   r   rr   rq   N)r   r\  r   r   r   )r   r   r   s      rX   test_sjoin_no_valid_geoms-TestSpatialJoinNYBB.test_sjoin_no_valid_geoms  s     bdll.>.>?T\\5gKQQQQT\\5gKQQQQULLgKQQQQULLf	JPPPPrZ   c                     [         R                  " U5      nUR                  5       nUR                  S5      Ul        [         R
                  " X#5      nSUR                  ;   d   eSUR                  ;   d   eg )Ni@ BoroCode_rightBoroCode_left)rh   r   rH   	translater#   r   r9   )r   rW  nybbnybb2r   s        rX   *test_empty_sjoin_return_duplicated_columns>TestSpatialJoinNYBB.test_empty_sjoin_return_duplicated_columns  s_    ""=1		0-6>>111&..000rZ   )r   r\  rX  N)r  r  r  r  r`  re  rp  rv  r|  r  r  r  r   r  r  r  r  xfailr  skipr  r  r  r  r   r  rZ   rX   rR  rR    s    
 >(	<#	1N
0 [[U$>?/ @/"# [[1- 1-f [['(# )#$ [[[*NOQ PQ1rZ   rR  c                     [        U 5      $ Nr   )r   s    rX   worldr        ())rZ   c                     [        U 5      $ r  r  )r   s    rX   r   r     r  rZ   c                 n    U SS/   nUR                  SS0S9n[        XSSS9nUR                  S:X  d   eg )	Nr#   rE   r   r8   ru   rA   r   )   r   )rJ   r   r   )r  r   r   cities_with_countrys       rX   r|  r|    sL    z6*+I  &))< =Iw,W$$000rZ   c                      \ rS rSr\R
                  R                  S0 SS0SS0SS045      S 5       r\R
                  R                  SS5      S\4S	 j5       r	\R
                  R                  S
S5      S
\4S j5       r
\R
                  R                  S
S5      S
\4S j5       r\R
                  R                  SSS/5      \R
                  R                  S
S5      S
\4S j5       5       r\R
                  R                  S
S5      S
\4S j5       r\R
                  R                  SSS/5      S 5       rS r\R
                  R                  SSS/5      S 5       rS r\R
                  R                  SSS/5      \R
                  R                  S\" SS5      \" SS5      /\" SS5      /SS/SS/\R(                  " S5      S/4\" SS5      \" SS5      /\" SS5      \" SS5      /SS/SS/SS/4\" SS5      \" SS5      /\" SS5      \" SS5      \" SS5      // SQ/ SQ/ SQ4\" SS5      \" SS5      /\" SS5      \" SS5      \" SS5      /SS/SS/SS/4\" SS5      \" SS5      /\" SS5      \" SS5      /SS/SS/\R(                  " S5      S/4\" SS5      \" SS5      /\" SS5      \" SS5      /SS/SS/\R(                  " S5      \R(                  " S 5      /4\" SS5      \" SS5      /\" \R.                  " S!5      \R.                  " S!5      5       V VVVs/ s H  u  p[%        X5      PM     snnnn SS/SS/SS/4\" SS5      \" SS5      \" SS5      /\" S"S"5      \" SS5      // S#Q/ S$QS\R(                  " S%5      S/4/5      S&\\   S'\\   S(\\   4S) j5       5       r\R
                  R                  S\" SS5      \" SS5      /\" SS5      /S/S/S/4\" SS5      \" SS5      /\" SS5      \" SS5      /SS/SS/SS/4\" SS5      \" SS5      /\" SS5      \" SS5      \" SS5      // S*Q/ S#Q/ SQ4\" SS5      \" SS5      /\" SS5      \" SS5      \" SS5      // S$Q/ S#QSS\R(                  " S5      /4\" SS5      \" SS5      /\" SS5      \" SS5      /SS/SS/SS+/4\" SS5      \" SS5      /\" SS5      \" SS5      /SS/SS/\R(                  " S5      \R(                  " S,5      /4\" SS5      \" SS5      /\" \R.                  " S!5      \R.                  " S!5      5       V VVVs/ s H  u  p[%        X5      PM     snnnn SS/S/S--  -   \" \" S!5      5      SS/\R.                  " SS.5       V VVs/ s H"  n[,        R(                  " US-  US-  -   5      PM$     snnn -   4\" SS5      \" SS5      \" SS5      /\" S"S"5      \" SS5      // S/Q/ S0Q\R(                  " S%5      SS/4/5      S&\\   S'\\   S(\\   4S1 j5       r\R
                  R?                  S25      S3 5       r \R
                  R                  S4S5/ S6Q4S"/ S7Q4/5      S8 5       r!S9r"g5s  snnnn f s  snnnn f s  snnn f ):TestNearesti  
how_kwargsr>   ru   rq   rr   c                 |    [         R                  " S/ 05      n[         R                  " S/ 05      n[        X#40 UD6  g )Nr#   )rh   r   r   )r   r  rq   rr   s       rX   test_allowed_howsTestNearest.test_allowed_hows  s;     %%z2&67&&
B'78d0Z0rZ   )r<   abcdec                     [         R                  " S/ 05      n[         R                  " S/ 05      n[        R                  " [        SS9   [        X#US9  S S S 5        g ! , (       d  f       g = f)Nr#   z	`how` wasr   r(  )rh   r   r   r   r   r   )r   r>   rq   rr   s       rX   test_invalid_howsTestNearest.test_invalid_hows  sP    %%z2&67&&
B'78]]:[9$3/ :99s   
A
A,distance_col)Nr   c                 r   [         R                  " S[        SS5      [        SS5      /05      n[         R                  " S/ 05      n[        UUSUS9n[	        US   US   5        US   R                  5       R                  5       (       d   eUb(  XA   R                  5       R                  5       (       d   eg g )Nr#   r   r   rq   r>   r  r:   rh   r   r   r   r   isnar   r   r  rq   rr   r   s        rX   test_empty_right_df_how_left(TestNearest.test_empty_right_df_how_left  s     %%zE!QKq!3M&NO&&
B'78%	
 	vj14
3CDm$))+//1111#',,.224444 $rZ   c                     [         R                  " S[        SS5      [        SS5      /05      n[         R                  " S/ 05      n[        UUSUS9nUR                  (       d   eUb  X;   d   eg g )Nr#   r   r   rr   r  rh   r   r   r   r   r  s        rX   test_empty_right_df_how_right)TestNearest.test_empty_right_df_how_right  sz     %%zE!QKq!3M&NO&&
B'78%	
 |||#))) $rZ   c                     [         R                  " S[        SS5      [        SS5      /05      n[         R                  " S/ 05      n[        XCXS9nUR                  (       d   eUb  X%;   d   eg g )Nr#   r   r   r  r  )r   r>   r  rr   rq   r   s         rX   test_empty_left_dfTestNearest.test_empty_left_df  sn     &&
U1a[%1+4N'OP%%z2&67tO|||#))) $rZ   c                 r   [         R                  " S[        SS5      [        SS5      /05      n[         R                  " S/ 05      n[        UUSUS9n[	        US   US   5        US   R                  5       R                  5       (       d   eUb(  XA   R                  5       R                  5       (       d   eg g )Nr#   r   r   rr   r  r7   r  )r   r  rr   rq   r   s        rX   test_empty_left_df_how_right(TestNearest.test_empty_left_df_how_right  s    &&
U1a[%1+4N'OP%%z2&67%	
 	vj153DEl#((*..0000#',,.224444 $rZ   c                    [         R                  " S[        SS5      /05      n[         R                  " S[        SS5      [        SS5      /05      n[        UUUSSS9nUR	                  5       n[
        R                  /US'   [
        R                  /US'   US:X  a'  UR                  5       nUS   R                  S	5      US'   [        XE5        g 
Nr#   r   r   r"   	distancesr>   max_distancer  r:   ru   r   
rh   r   r   r   rH   r  nanr   r   r   r   r>   rq   rr   r   rT   s         rX   #test_empty_join_due_to_max_distance/TestNearest.test_empty_join_due_to_max_distance.  s     %%zE!QK=&AB&&
U1a[%1+4N'OP$
 99;#%66(!#'>(H&.}&=&D&DW&MH]#!&3rZ   c                 T   [         R                  " S[        SS5      [        SS5      /05      n[         R                  " S[        SS5      /05      n[        UUSSSS9nUR	                  5       n[
        R                  /US'   [
        R                  /US'   U/ S	Q   n[        X45        g )
Nr#   r   r   r"   rr   r  r  r7   r7   r#   r  rh   r   r   r   rH   r  r  r   r   rq   rr   r   rT   s        rX   -test_empty_join_due_to_max_distance_how_right9TestNearest.test_empty_join_due_to_max_distance_how_rightC  s     %%zE!QKq!3M&NO&&
U1a[M'BC$
 ::<"$&&!#CD!&3rZ   c                    [         R                  " S[        SS5      [        SS5      /05      n[         R                  " S[        SS5      [        SS5      /05      n[        UUUSSS9nUR	                  5       n[
        R                  S/US'   [
        R                  S/US'   US:X  a'  UR                  5       nUS   R                  S	5      US'   [        XE5        g r  r  r  s         rX   test_max_distanceTestNearest.test_max_distanceU  s    %%zE!QKq!3M&NO&&
U1a[%1+4N'OP$
 99;#%661+!#'>(H&.}&=&D&DW&MH]#!&3rZ   c                 n   [         R                  " S[        SS5      [        SS5      /05      n[         R                  " S[        SS5      [        SS5      /05      n[        UUSSSS9nUR	                  5       n[
        R                  S/US'   [
        R                  S/US'   U/ S	Q   n[        X45        g )
Nr#   r   r"   r   rr   r  r  r7   r  r  r  s        rX   test_max_distance_how_right'TestNearest.test_max_distance_how_righth  s    %%zE!QKq!3M&NO&&
U1a[%1+4N'OP$
 ::<"$&&!!#CD!&3rZ   z=geo_left, geo_right, expected_left, expected_right, distancesr   r   r"   )r   r   r   )r   r"   r   )r   r   r   g      ?g      ?id         r    g?r!   )r   r   r   g|Gz?r   r   r  c                 :   [         R                  " SU05      n[         R                  " SU05      nUR                  U   R                  5       n	XIS'   [	        XxUS9n
US:H  n[        XUS9  [        R                  " U[        S9U	S'   [	        XxUSS9n
[        XUS9  g )	Nr#   r:   r(  ru   
check_liker  r  r  	rh   r   rK   rH   r   r   r  r  r   )r   ri   rj   r   r   r  r>   rq   rr   r   r   r  s               rX   test_sjoin_nearest_left#TestNearest.test_sjoin_nearest_leftx  s    N %%z8&<=&&
I'>?yy/446&4]#t4G^
!,:N')xx	'G^$t.Q!,:NrZ   )r   r   r   g      ?iL  r   r   )r   r   r"   )r   r   r   c                 B   [         R                  " SU05      n[         R                  " SU05      nUR                  U   R                  5       nX8S'   USS/   n[	        XgSS9n	[        X5        [        R                  " U[        S9US'   [	        XgSSS9n	[        X5        g )Nr#   r7   rr   r(  r  r  r  r  )
r   ri   rj   r   r   r  rq   rr   r   r   s
             rX   test_sjoin_nearest_right$TestNearest.test_sjoin_nearest_right  s    ~ %%z8&<=&&
I'>?zz.1668%2\"#\:$>?t8!,7')xx	'G^$tnU!,7rZ   z&ignore:Geometry is in a geographic CRSc                    [        U5      n[        U5      nUSS/   R                  SS0S9n[        XCSS9nUR                  S   UR                  S   :X  d   e[        XCSSS	9n[	        Xe5        [        XCSS
S	9n[	        XuSS9  [        XCSSS9n[	        XUS   S:     SS9  [        XCSSS
S9n	U	R                  S   UR                  S   :X  d   eU	R                  5       n	U	S   R                  S5      U	S'   [	        XSS9  g )Nr#   rE   r   r8   dist)r  r   ru   )r  r>   rq   Tr  r   )r  r  )r  r  r>   r:   r   )r   rJ   r   r   r   r   r   )
r   r   r   r   r   result1result2result3result4result5s
             rX   test_sjoin_nearest_inner$TestNearest.test_sjoin_nearest_inner  s)    12	./z623::FICV:W	  G}}Q6<<?222GT!'3FS!'tD  UVW!WV_q01d	
  F
 }}Q6<<?222.."!(!7!>!>w!G!'tDrZ   zmax_distance,expectedN)r   r   r   r   r"   )r   r   r   r"   c                    [         R                  " [        R                  " S5      [        R                  " S5      5      n[        R                  " U[        SS5      /5      n[        R                  " SU05      nUR                  XASSS9n[        US   R                  SS	9[        R                  " U5      S
S9  U(       a  US   R                  5       U::  d   eg g )Nr   r   r"   r#   r  T)r  r  	exclusiver:   )rN   F)check_names)shapelypointsr  arangeappendr   rh   r   r   r   rI   rL   r  max)r   r  rT   r0  rm  r   s         rX   test_sjoin_nearest_exclusive(TestNearest.test_sjoin_nearest_exclusive5  s     ryy|RYYq\:		%%1+/##Z$78!!$ " 
 	=!--4-8IIh	
 &>%%'<777 rZ   r  )#r  r  r  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r  r   r  r  rZ  r  r  r   r  r   r  listr[  r  filterwarningsr
  r  r   ).0r^  r_  r   r  s   00000rX   r  r    s   [[rE7+eV_ug>NO11
 [[U$670S 0 80 [[^-?@5 5 A5 [[^-?@*# * A* [[UWf$56[[^-?@*C * A 7* [[^-?@5 5 A5 [[UWf$564 74(4$ [[UWf$564 74$4  [[UWf$56[[G q!eAqk*q!AA1q! q!eAqk*q!eAqk*AAA q!eAqk*q!eAqk5A;7 q!eAqk*q!eAqk5A;7AAA q!eAqk*q!eD!n-AA;'+ q!eAqk*sC%S/2AA=)499]+CD q!eAqk*),RYYr]BIIbM)JK)Jq)JKAAA q!eAqk5A;7sC%1+.BGGO,a0e9	
<zO  }	O
 !O E?O{< 7|O. [[GAqk5A;'%1+aS1#Fq!eAqk*q!eAqk*AAA q!eAqk*q!eAqk5A;7 q!eAqk*q!eAqk5A;7Atyy|$ q!eAqk*q!eD!n-AAD	 q!eAqk*sC%S/2AA=)499]+CD q!eAqk*),RYYr]BIIbM)JK)Jq)JKA!q U2YA		!QH1"''!Q$A+.HH q!eAqk5A;7sC%1+.)1a0Y3	
6n8  }	8
 !8 E?8o6n8* [[ HIE JE6 [[4"9C;N!O88a L\ L Is   "Y0 Y8)Z $r  )+r  collections.abcr   numpyr  pandasrL   r  shapely.geometryr   r   r   r   rh   geopandas._compat_compatr  r   r	   r
   r   r   r   r   geopandas.testingr   r   pandas.testingr   r   r   fixturerY   rm   ro   r"  r  usefixturesrR  r  r   r|  r  r  rZ   rX   <module>r#     s     $    D D  "   O V V E/ E/P * *ZfK fKR_4 _4D 56t1 t1 7t1n * * * *1b8 b8rZ   