
    h                        d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZ	d dl
mZmZmZ d dlZd dlmZ d dlmZmZmZmZ d dlmZmZmZ d dlZd dlmZmZ d dlmZm Z  d dl!m"Z"m#Z#m$Z$ ejJ                  d	        Z& ejJ                  g d
      d        Z'ejP                  jS                  d       G d d             Z*d'dZ+ G d d      Z,ejP                  j[                  ej\                   d      d        Z/d Z0ejP                  j[                  ej\                   d      d        Z1ejP                  j[                  ej\                   d      ejP                  je                  dddg      d               Z3d Z4ejP                  je                  dddg      d         Z5ejP                  je                  dddg      d!        Z6ejP                  jo                  d"      d#        Z8 G d$ d%e      Z9d& Z:y)(    N)Enum)PointPolygonbox)GeoDataFrame	GeoSeriespoints_from_xy	read_file)GeometryArrayGeometryDtypefrom_shapely)assert_geodataframe_equalassert_geoseries_equal)PACKAGE_DIRvalidate_boro_df)assert_frame_equalassert_index_equalassert_series_equalc                     t        t        g d      t        g d      g      }t        t        g d      t        g d      g      }t        ddg|d      }t        ddg|d      }||fS )	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   )col1geometry)col2r   )r   r   r   )requests1s2df1df2s        T/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/test_geodataframe.pydfsr&      sw    	4545	

B 
4545	

B AB7
8C
AB7
8C8O    )unionintersection
differencesymmetric_differenceidentity)paramsc                     | j                   S N)param)r    s    r%   howr1   *   s     ==r'   _setup_class_nybb_filenamec                      e Zd Zd Zd Zd Zej                  j                  e	j                   d      d        Zej                  j                  d      d        Zd	 Zd
 Zd Zd Zd Zd Zej                  j                  e	j                   d      d        Zd Zd Zd Zd Zd Zd Zd Zej                  j                  e	j                   d      d        Zd Zd Zej                  j                  e	j                   d      d        Zd Z d Z!ej                  j                  d      d        Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?d< Z@d= ZAd> ZBej                  j                  d?g d@      ej                  j                  dAg dB      dC               ZDej                  j                  d?g d@      ej                  j                  dDdEdFg      ej                  j                  e	j                   dG      dH                      ZFej                  j                  d?g d@      ej                  j                  dIdJdKg      ej                  j                  dLdJdDg      ej                  j                  dM      dN                             ZGdO ZHdP ZIdQ ZJyJ)RTestDataFramec           
         d}t        | j                        | _        t        j                         | _        d| _        t        t        t        |      t        |            D cg c]  \  }}t        ||      ||z   ||z  d c}}| j                        | _        t        t        j                  j                  t        dddd            | _        y c c}}w )	N
   	epsg:4326)r   value1value2crs	geopandastestsdataznull_geom.geojson)r
   nybb_filenamedftempfilemkdtemptempdirr;   r   zipranger   r$   ospathjoinr   df3)selfNxys       r%   setup_methodzTestDataFrame.setup_method3   s    D../'')  a%(3Aq #1a[AEQUK 
 GGLLk7FDWX
s   # C
c                 B    t        j                  | j                         y r/   )shutilrmtreerC   rJ   s    r%   teardown_methodzTestDataFrame.teardown_methodE   s    dll#r'   c                     t        | j                        t        u sJ t        j                  r&| j                  j
                  | j
                  k(  sJ y y r/   )typer$   r   compat
HAS_PYPROJr;   rR   s    r%   test_df_initzTestDataFrame.test_df_initH   s@    DHH~---88<<488+++ r'   zRequires pyprojreasonc           
         ddl m} t        d      t        dd      t        t        d      t        d            D cg c]  \  }}t	        ||       c}}d}t        || j                  d      }t        |d   | j                        }t        |j                  |       d	|vsJ |j                  j                  dk(  sJ |j                  dk(  sJ t        t        dd
      t        d            D cg c]  \  }}t	        ||       }}}t        j                  |      5  |j                  |d       d d d        y c c}}w c c}}w # 1 sw Y   y xY w)Nr   )CRSErrorr   ABlocationra   r;   r   r:   r   r6   	dummy_crs)pyproj.exceptionsr\   rE   rD   r   r   r;   r   r   r   name_geometry_column_namepytestraisesset_geometry)rJ   r\   rL   rM   r>   r@   locsgeom2s           r%   test_different_geo_colnamez(TestDataFrame.test_different_geo_colnameM   s&   . qr114U1XuQx1HIAq!I

 $DHHzBj)txx8r{{D1###{{:---'':555),U1b\58)DEAq!EE]]8$ 	4OOE{O3	4 	4 J F	4 	4s   E 
5E#EEz&ignore:Geometry is in a geographic CRSc           
      P   t        d      t        dd      t        t        d      t        d            D cg c]  \  }}t        ||       c}}d}t        || j                  d      }t        |j                  t              sJ |d   |d<   t        |j                  t              sJ |j                  d   |d   d   k(  sJ t        |d   t              rJ t        |d   t              sJ |j                  d	      |d
<   t        |d
   t              sJ t        t        t        d      t        d            D cg c]  \  }}t        ||       c}}      |d<   t        |d   t              sJ t        t        d      t        d            D cg c]  \  }}t        |d	z   |d	z
         c}}|d<   t        || j                        }t        |j                  t              sJ t        |d   t              sJ t        |d   t              rJ y c c}}w c c}}w c c}}w )Nr   r]   r   r^   ra   rb   r_   r   r   buffarrayr:   )
rE   rD   r   r   r;   
isinstancer   r   bufferr   )rJ   rL   rM   r>   r@   s        r%   test_geo_getitemzTestDataFrame.test_geo_getitemb   s    qr114U1XuQx1HIAq!I

 $DHHzB"++y111C:"++y111{{1~j!1!!4444bni888"Z.)444YYq\6
"V*i000"Ca%PQ(<S#TDAqE!QK#TU7"W+y111<?a%PQ(<STDAqE!a%Q/TZ$DHH-"++y111"Z.)444bni8888- J $U Us   H
>H
H"c                 6   | j                   ddg   }t        |t        j                        sJ t        |t              rJ | j                   j                         }|j                  ddi      j                  d      }t        |t              sJ |ddg   }t        |t        j                        sJ t        |t              rJ t        j                  t        |            |d<   |g d   }t        |t        j                        sJ t        |t              rJ y )Nr8   r9   r   geomcolumns)r8   r9   r   )r$   rp   pd	DataFramer   copyrenameri   nparangelen)rJ   resr@   s      r%   test_getitem_no_geometryz&TestDataFrame.test_getitem_no_geometry   s    hh(+,#r||,,,c<000 XX]]_YY
F3Y4AA&I"l+++(H%&#r||,,,c<0003r7+:12#r||,,,c<0000r'   c                    t        d      t        j                  d      t        t        d      t        d            D cg c]  \  }}t	        ||       c}}d}t        |      }t        t        t        d      t        d            D cg c]  \  }}t	        ||dz          c}}      }||j                  fD ],  }||d<   t        |d   |       t        |j                  |       . t        t        t        d      t        d            D cg c]  \  }}t	        ||dz          c}}      }||d<   t        |d   |       t        |j                  |       ||j                  fD ]&  }||d<   t        |d   j                  t              r&J  t        d      t        j                  d      t        d      t        t        d      t        d            D cg c]  \  }}t	        ||       c}}d}t        |      }||j                  fD ]&  }||d<   t        |d   j                  t              r&J  y c c}}w c c}}w c c}}w c c}}w )	Nr   g      @r_   r`   r   r   r      
other_geom)r_   r`   r   r   )rE   r{   r|   rD   r   r   r   valuesr   r   rp   r   )rJ   rL   rM   r>   r@   svalsr"   s           r%   test_geo_setitemzTestDataFrame.test_geo_setitem   s   q314U1XuQx1HIAq!I

 $3uQxq3JK41auQAKL M 	3D!BzN"2j>15"2;;2	3 Ca%(4KLDAqaQLM:r*~q1r{{A. M 	FD#B|b.55}EEE	F q3(14U1XuQx1HIAq!I	
 $M 	FD#B|b.55}EEE	F= J L M Js    H;
I
I
Ic                 v   t        | j                  j                  | j                  d   dd       | j                  j                         }t	        t        t        | j                              t        t        | j                                    D cg c]  \  }}t        ||       }}}||_        t        ||j                  |j                        }t        |j                  |       t        |d   |       t        j                  r+|j                  d      }||_        |j                  dk(  sJ y y c c}}w )Nr   T)check_dtypecheck_index_typeindexr;   	epsg:3857r:   )r   r@   r   ry   rD   rE   r}   r   r   r   r;   rV   rW   to_crs)rJ   r@   rL   rM   new_geomgss         r%   test_geometry_propertyz$TestDataFrame.test_geometry_property   s    GGGGJ!		
 WW\\^$'c$''l(;U3tww<=P$Q
 AqE!QK
 
 XRXX266Br{{H5r*~x8[1BBK66[(((	 
s   D5c                    t        j                  t              5  | j                  j	                         }|d= |j
                   d d d        t        j                  t              5  | j                  j	                         }d|_        d d d        t        j                  t              5  | j                  j	                         }d|_        d d d        t        j                  t              5  | j                  j	                         }t        t        |j                  d               |_        d d d        t        j                  t              5  | j                  j	                         }|d= |d    d d d        t        j                  t              5  | j                  j	                         }||_        d d d        y # 1 sw Y   zxY w# 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r8   appler   )rg   rh   AttributeErrorr@   ry   r   
ValueErrorr$   	TypeErrorlistrE   shapeKeyErrorrJ   r@   s     r%   test_geometry_property_errorsz+TestDataFrame.test_geometry_property_errors   s{   ]]>* 	B:KK	 ]]:& 	#B"BK	#
 ]]:& 	"B!BK	"
 ]]9% 	3BuRXXa[12BK	3 ]]8$ 	B:zN	 ]]:& 	BBK	 	5	 		# 	#
	" 	"
	3 	3	 		 	sH   *F<%"G	("G+AG##G/"G;<G	GG #G,/G8;Hc                 z   | j                   j                  j                  dk(  sJ | j                   j                  d      }|j                  j                  dk(  sJ | j                   j                  dd      }|J | j                   j                  j                  dk(  sJ d}t	        j
                  t        |      5  | j                   j                  d      }d d d        t	        j
                  t        |      5  | j                   j                  dd       d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nr   new_nameTinplacez&Column named Shape_Area already existsmatch
Shape_Area)r@   r   re   rename_geometryrg   rh   r   )rJ   r$   msgs      r%   test_rename_geometryz"TestDataFrame.test_rename_geometry   s   ww$$
222gg%%j1||  J...gg%%j$%?{{ww$$
222 7]]:S1 	8'')),7C	8]]:S1 	@GG##L$#?	@ 	@	8 	8	@ 	@s   ?D%>D1%D.1D:c           
         t        t        t        d      t        d            D cg c]  \  }}t        ||       c}}      }| j                  j
                  }| j                  j                  |      }| j                  |usJ t        |j
                  |d       t        | j                  j
                  |       t        | j                  d   | j                  j
                         t        j                  t              5  | j                  j                  d       d d d        t        j                  t              5  | j                  j                  | j                         d d d        y c c}}w # 1 sw Y   WxY w# 1 sw Y   y xY w)Nr   F)	check_crsr   znonexistent-column)r   rD   rE   r   r@   r   ri   r   rg   rh   r   )rJ   rL   rM   rt   original_geomr$   s         r%   test_set_geometryzTestDataFrame.test_set_geometry   s   #eAha2IJ$!Q%1+JK((gg""4(wwc!!!s||TUCtww//?twwz2DGG4D4DE]]:& 	7GG  !56	7 ]]:& 	*GG  )	* 	* K	7 	7	* 	*s   E0
E6&F6E?Fc           
         t        t        t        d      t        d            D cg c]  \  }}t        ||       c}}      }t        |d      }| j                  j                  |      }|j                  dk(  sJ | j                  j                  |d      }|j                  dk(  sJ |j                  j                  dk(  sJ | j                  j                  |j                        }|j                  | j                  j                  k(  sJ |j                  j                  | j                  j                  k(  sJ y c c}}w )Nr   r   r:   z
epsg:26909)	r   rD   rE   r   r@   ri   r;   r   r   )rJ   rL   rM   rt   r   new_dfs         r%   test_set_geometry_crsz#TestDataFrame.test_set_geometry_crs  s   #eAha2IJ$!Q%1+JK t-%%b)zz[((( %%bl%;zz\)))""l222 %%dkk2zzTWW[[(((""dggkk111 Ks   E
c                    | j                   j                  }|j                  d      }|| j                   d<   | j                   j                  d      }d|v sJ t	        |j                  |       t        j                  t              5  | j                   j                  dd      }d d d        dvsJ t	        |j                  |       y # 1 sw Y   &xY w)Nd   simplified_geometryTdrop)r@   r   simplifyri   r   rg   warnsFutureWarning)rJ   gg_simplifiedr$   rI   s        r%   test_set_geometry_colz#TestDataFrame.test_set_geometry_col!  s    GGzz#)5%&gg""#89 %+++s||\: \\-( 	I''&&'<4&HC	I$C///s||\:	I 	Is   C

Cc                 r   t        t        d      t        d            D cg c]  \  }}t        ||       }}}| j                  j	                  |d      }|J t        || j                  j                  | j                  j                        }t        | j                  j                  |       y c c}}w )Nr   Tr   r   )
rD   rE   r   r@   ri   r   r   r;   r   r   )rJ   rL   rM   rt   rets        r%   test_set_geometry_inplacez'TestDataFrame.test_set_geometry_inplace1  s    (+E!HeAh(?@1a@@gg""4"6{{TWW]]Dtww//6	 As   B3c                    t        t        | j                        dz
  dd      | j                  _        i }t        t        | j                              D ]  }t	        ||      ||<    t        |      }| j                  j                  |      }|j                         D ]-  \  }}||d   j                  k(  sJ ||d   j                  k(  r-J  y )Nr   r   )
rE   r}   r@   r   r   r   ri   iterrowsrL   rM   )rJ   dir   r@   rs         r%   test_set_geometry_seriesz&TestDataFrame.test_set_geometry_series8  s     c$''lQ.B7s477|$ 	AA;AaD	aL WW!!!$KKM 	(DAq*'''*'''	(r'   c                     t        j                  ddgt        j                  g             }|j                  d      }t	        |t
              sJ t	        |j                  t         j                        sJ y )Nar   )rv   r   )rw   rx   DatetimeIndexri   rp   r   r   )rJ   r@   results      r%   test_set_geometry_emptyz%TestDataFrame.test_set_geometry_emptyM  sZ    \\3
"32;K;KB;OP,&,///&,,(8(8999r'   c                     | j                   j                  | j                   j                  d d df<   | j                   j                  t	        j
                  d            }|j                  j                  dk(  sJ y Nr   )r@   r   locri   r{   int64re   r   s     r%   test_set_geometry_np_intz&TestDataFrame.test_set_geometry_np_intS  sV     GG,,AqDWW!!"((1+.{{1$$$r'   c                    t               }| j                  j                  |d<   d}t        j                  t
        |      5  |j                   d d d        g d}| j                  j                         j                  | j                  j                        |   }t        j                  t
        d      5  |j                   d d d        d}d}t        j                  t
        |      5  |j                   d d d        t        j                  t
        |      5  t               j                   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)	Nrt   z0active geometry column to use has not been set. r   )BoroCodeBoroNamerk   rk   zis not present.z)There are columns with geometry data typez5There are no existing columns with geometry data type)r   r@   r   rg   rh   r   ry   assign)rJ   r@   msg_geo_col_nonecol_subset_drop_geometryr$   msg_other_geo_cols_presentmsg_no_other_geo_colss          r%   test_get_geometry_invalidz'TestDataFrame.test_get_geometry_invalidX  s   ^WW%%6
M]]>1AB 	KK	 $E gglln##$''*:*:#;<TU]]>1BC 	LL	 &Q" W]]>1KL 	LL	 ]]>1FG 	$N##	$ 	$	 	
	 	
	 		$ 	$s0   D86E*EE8EEEE%c                 J   | j                   j                  | j                   j                        j                  d      }|j                  d d ddgf   }|j
                  dk(  sJ d}t        j                  t        |      5  |j                   d d d        y # 1 sw Y   y xY w)Nr   rk   r   r   zis not present. r   )	r@   r   r   ri   r   rf   rg   rh   r   )rJ   r@   msg_geo_col_missings      r%   #test_get_geometry_geometry_inactivez1TestDataFrame.test_get_geometry_geometry_inactiven  s    WW^^$''"2"2^3@@IVVA
J//0''72220 ]]>1DE 	KK	 	 	s   BB"c                    t        j                  t        d      5  d| j                  j                  _        d d d        t        j                  t        d      5  d| j                  _        d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nz6Overriding the CRS of a GeoSeries that already has CRSr   z	epsg:2100z9Overriding the CRS of a GeoDataFrame that already has CRSr7   )rg   r   DeprecationWarningr@   r   r;   rR   s    r%   "test_override_existing_crs_warningz0TestDataFrame.test_override_existing_crs_warningy  sx    \\J
 	/ $/DGG 		/ \\M
 	& &DGGK		& 	&	/ 	/	& 	&s   A6B6A?Bc                 
   | j                   j                  dk(  sJ t        | j                   j                  | j                   j                  d      }|j                  J |j                  d      j                  dk(  sJ t        | j                   j                  | j                   j                  d      }|j                  J |j                  d      j                  dk(  sJ |j                  d      j                  dk(  sJ y )Nr   foobarr   r   )r@   active_geometry_namer   r   r   ri   )rJ   	no_activemultiples      r%   test_active_geometry_namez'TestDataFrame.test_active_geometry_name  s    ww++z999 !)9)9$''BRBR!ST	--555%%e,AAUJJJ  (8(8AQAQ RS,,444$$U+@@EIII$$U+@@EIIIr'   c                    | j                   }|j                  |      \  }}t        ||       t        ||       |j                  |j                               \  }}t        ||       t        ||       t        j
                  ri|j                         j                  d d      }|j                  |      \  }}t        ||       |j                  J t        ||       |j                  J t        j                  |j                  dd            }|j                  |d      \  }}t        ||       t        |      t        j                  u sJ t        ||       |j                  dd  j                         }|j                  d d j                         }|j                         }t        j                  |j                  d<   |j                         }	t        j                  |	j                  d<   |j                  |      \  }}t        ||       t        ||	       t        j
                  r|j                         j                  d d      }
|	j                         j                  d d      }|j                  |
      \  }}t        ||       |j                  J t        ||       |j                  J t        j                  |j                  dd            }t        j                  |	j                  dd            }|j                  |d      \  }}t        ||       t        |      t        j                  u sJ t        ||       y )NT)allow_overrider   r   axisr   r   )r$   alignr   ry   rV   rW   set_crsr;   rw   rx   r   rU   r   ilocr{   nan)rJ   r@   res1res2df_nocrs	df_nogeomr#   r$   exp1exp2	df2_nocrs
exp2_nocrs
df2_nogeomexp2_nogeoms                 r%   
test_alignzTestDataFrame.test_align  s   XXXXb\
d!$+!$+XXbggi(
d!$+!$+wwy((d(CH(+JD$%dB/88'''%dH588### LL!!<=	XXiaX0
d!$+DzR\\)))4+ ggabk ggcrl!wwyvv		!wwy		"YYs^
d!$-!$-
**4*EI,,T$,GJ9-JD$%dD188'''%dJ788###\\#((:A(">?
ll499Za9#@AYYzY2
d!$-DzR\\)))4-r'   c                 F   | j                   j                  d      }t        j                  |      }|d   dk(  sJ t	        |d         dk(  sJ d|d   d   j                         v sJ |d   d   d	   d
   d   d   d   }t        j                  j                  |ddg       y )NTto_wgs84rU   FeatureCollectionfeaturesr   idr   r   coordinatesg,;RgyLhHD@)	r@   to_jsonjsonloadsr}   keysr{   testingassert_allcloserJ   textr>   coords       r%   test_to_jsonzTestDataFrame.test_to_json  s    ww-zz$F|22224
#$)))tJ'*//1111 Z #J/>qA!DQG


""5+<>N*OPr'   c                     | j                   j                         }t        j                  |      }|d   d   d   d   d   d   d   }|ddgk(  sJ y )Nr   r   r   r   g  xқ-Ag  `ZA)r@   r   r   r   r  s       r%   test_to_json_wgs84_falsez&TestDataFrame.test_to_json_wgs84_false  s]    ww zz$Z #J/>qA!DQG*,>????r'   c                     d | j                   j                  j                  _        t	        j
                  t        d      5  | j                   j                  d       d d d        y # 1 sw Y   y xY w)NzCRS is not setr   Tr   )r@   r   ro   r;   rg   rh   r   r   rR   s    r%   test_to_json_no_crsz!TestDataFrame.test_to_json_no_crs  sP    %)"]]:-=> 	+GGOOTO*	+ 	+ 	+s   A''A0z<ignore:Geometry column does not contain geometry:UserWarningc                 4   | j                   j                         }|d   |d<   t        j                  t	        |            |d<   |j                  dd       |j                         }t        j                  |      }|d   dk(  sJ t	        |d         dk(  sJ y )	Nr   rt   Tr   rU   r   r   r   )	r@   ry   r{   r|   r}   ri   r   r   r   )rJ   r@   r  r>   s       r%   test_to_json_geom_colz#TestDataFrame.test_to_json_geom_col  s     WW\\^
^6
3r7+:
-zz|zz$F|22224
#$)))r'   c                     | j                   dg   j                         }t        j                  |      }t	        |d         dk(  sJ d|d   d   j                         v sJ y )Nr   r   r   r   r   r@   r   r   r   r}   r  )rJ   r  r>   s      r%   test_to_json_only_geom_columnz+TestDataFrame.test_to_json_only_geom_column  sb    ww
|$,,.zz$4
#$)))tJ'*//1111r'   c                 X   t         j                  | j                  j                  | j                  d   dk(  df<   | j                  j	                         }t        j                  |      }t        |d         dk(  sJ |d   D ]'  }|d   }t        |      dk(  sJ |d   dk(  s!|d   'J  y )Nr   Queensr   r   r   
propertiesr   r{   r   r@   r   r   r   r   r}   rJ   r  r>   fpropss        r%   test_to_json_nazTestDataFrame.test_to_json_na  s    EGVVDGGJ'83\ABww zz$4
#$)))j! 	3AlOEu:?"?Z H,\*222		3r'   c                     t        j                  t              5  | j                  j	                  d       d d d        y # 1 sw Y   y xY w)Ngarbagena)rg   rh   r   r@   r   rR   s    r%   test_to_json_bad_naz!TestDataFrame.test_to_json_bad_na  s5    ]]:& 	*GGOOyO)	* 	* 	*s   A  A	c                 B   t         j                  | j                  j                  | j                  d   dk(  df<   t         j                  | j                  j                  | j                  d   dk(  df<   | j                  j	                  d      }t        j                  |      }t        |d         d	k(  sJ |d   D ]a  }|d
   }|d   dk(  rt        |      dk(  sJ d|vsJ d|v r+J |d   dk(  rt        |      dk(  sJ d|vsJ d|v rPJ t        |      dk(  raJ  y )Nr   r  r   Bronx
Shape_Lengr   r  r   r   r  r   r   r  r  s        r%   test_to_json_dropnaz!TestDataFrame.test_to_json_dropna  s/   EGVVDGGJ'83\ABDFFFDGGJ'72L@Aww&)zz$4
#$)))j! 	'AlOEZ H,5zQ&#5000 $u,,,z"g-5zQ&#5000#u,,,5zQ&	'r'   c                 R   t         j                  | j                  j                  | j                  d   dk(  df<   t         j                  | j                  j                  | j                  d   dk(  df<   | j                  j	                  d      }t        j                  |      }t        |d         d	k(  sJ |d   D ]i  }|d
   }t        |      dk(  sJ |d   dk(  r!t        j                  |d         sJ d|v r?J |d   dk(  sJt        j                  |d         sJ d|v riJ  y )Nr   r  r   r  r   keepr  r   r   r  r   )	r{   r   r@   r   r   r   r   r}   isnanr  s        r%   test_to_json_keepnaz!TestDataFrame.test_to_json_keepna!  s!   EGVVDGGJ'83\ABDFFFDGGJ'72L@Aww&)zz$4
#$)))j! 
	-AlOEu:?"?Z H,xxl 3444 $u,,,z"g-xxl 3444#u,,,
	-r'   c                     | j                   j                  d      }t        j                  |      }t	        |d         dk(  sJ |d   D ]  }d|j                         vrJ  y )NTdrop_idr   r   r   r  rJ   r  r>   r  s       r%   test_to_json_drop_idz"TestDataFrame.test_to_json_drop_id4  sd    wwt,zz$4
#$)))j! 	(Aqvvx'''	(r'   c                     | j                   dg   j                  d      }t        j                  |      }t	        |d         dk(  sJ |d   D ]  }d|j                         vrJ  y )Nr   Tr'  r   r   r   r  r)  s       r%   %test_to_json_drop_id_only_geom_columnz3TestDataFrame.test_to_json_drop_id_only_geom_column;  sn    ww
|$,,T,:zz$4
#$)))j! 	(Aqvvx'''	(r'   c                     t        g dgg dt        dd      g      }t        j                  t        d      5  |j                          d d d        y # 1 sw Y   y xY w)Nr   r   r   )r   br   r   )r>   rv   r   4GeoDataFrame cannot contain duplicated column names.r   )r   r   rg   rh   r   r   r   s     r%   #test_to_json_with_duplicate_columnsz1TestDataFrame.test_to_json_with_duplicate_columnsB  sQ    oq!
 ]]T
 	 JJL	 	 	s   AAc                     | j                   j                         }t        |      t        u sJ | j                   j                  |j                  k(  sJ y r/   )r@   ry   rU   r   r;   )rJ   r$   s     r%   	test_copyzTestDataFrame.test_copyK  s=    ggllnCyL(((ww{{cgg%%%r'   c                     t               }|j                         }t        |      t         u sJ |j                  d      }t        |      t         u sJ y )NT)deep)r   ry   rU   )rJ   r@   r$   rI   s       r%   test_empty_copyzTestDataFrame.test_empty_copyP  sH    ^ggiCyL(((gg4g CyL(((r'   c                     t        t        j                  dg di            }t        |      t         u sJ t        |j	                               t         u sJ y )Nr   r.  )r   rw   rx   rU   ry   r   s     r%   test_no_geom_copyzTestDataFrame.test_no_geom_copyX  sD    ",,Y'789Bx<'''BGGI,...r'   c                     t        dg i      }|j                  j                  dk(  sJ t        dg id      }|j                  j                  dk(  sJ t        g       }|j                  j                  dk(  sJ y )Nr   r   r   )r   r   dtyper   s     r%   
test_emptyzTestDataFrame.test_empty]  ss    :r*+{{  J...3)c2{{  J...2&{{  J...r'   c                     | j                   | j                   d   j                  j                  d         }t        |      dk(  sJ |d   j                  }d|v sJ d|v sJ t        |      t        u sJ y )Nr   r`   r   Brooklynr  )r@   strcontainsr}   r   rU   r   )rJ   r@   boross      r%   test_bool_indexzTestDataFrame.test_bool_indexe  sw    WWTWWZ(,,55c:;2w!||:%%U"""%Bx<'''r'   c                 @   | j                   j                  ddddf   j                  sJ t        | j                   | j                   j                  d d d d f          t        | j                   j                  dd  | j                   j                  dd d d f          t        | j                   j                  dd  | j                   j                  d d dd f          t        | j                   j                  dd  | j                   j                  dd dd f          y )Nr   r   )r$   cxemptyr   r   rR   s    r%   test_coord_slice_pointsz%TestDataFrame.test_coord_slice_pointsn  s    xx{{2b5"R%<(....488TXX[[A%67488<<+TXX[[Q-?@488<<+TXX[[AB-?@488<<+TXX[[QR-@Ar'   c                 F   dgt        dd      gd}t        j                  |d      }t        j                  r|j
                  dk(  sJ |j
                  J |j                  dk(  sJ dgt        dd      gd}t        j                  |d	
      }|j                  d	k(  sJ y )Nr   g        )r_   r   i  r:   r   r   )r`   ra   ra   r:  )r   r   	from_dictrV   rW   r;   rf   )rJ   r>   r@   s      r%   test_from_dictzTestDataFrame.test_from_dictu  s    SuS#&78##Dd366[(((66>!>'':555SuS#&78##D:>'':555r'   c                 P   t        j                  d      }|j                  |      5 }t        |      }|j                  }d d d        t        j                        }t        |d       t        j                  r|j                  |k(  sJ y |j                  J y # 1 sw Y   ^xY w)Nfionar:   T)case_sensitive)rg   importorskipopenr   crs_wktr   from_featuresr   rV   rW   r;   )rJ   r?   rL  r  r   r;   r@   s          r%   test_from_featuresz TestDataFrame.test_from_features  s    ##G,ZZ& 	!AwH))C	 ''c:D166S= =66>!>	 	s   BB%c                    t        dd      }dddi|j                  d}t        dd      }dddi|j                  d}t        dd      }dd |j                  d}t        j                  |||g      }|ddg   }t        j
                  j                  dt        j                  d	t        j                  dd	t        j                  t        j                  d	g      }	t        |	|       y )
Nr   Featurer   r   rU   r  r   r   r/  r   )r   r/  )
r   __geo_interface__r   rQ  rw   rx   rI  r{   r   r   )
rJ   p1f1p2f2p3f3r@   r   expecteds
             r%   'test_from_features_unaligned_propertiesz5TestDataFrame.test_from_features_unaligned_properties  s    1a[(,,
 1a[(,,
 1a[,,
 ''R5S#J<<))266""&&q$9bff;UV
 	8V,r'   c                     d}d}t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }t	        ||       y )NaO  {
          "type": "FeatureCollection",
          "features": [
            {
              "type": "Feature",
              "properties": {},
              "geometry": {
                "type": "Polygon",
                "coordinates": [
                  [
                    [
                      11.3456529378891,
                      46.49461446367692
                    ],
                    [
                      11.345674395561216,
                      46.494097442978195
                    ],
                    [
                      11.346918940544128,
                      46.49385370294394
                    ],
                    [
                      11.347616314888,
                      46.4938352377453
                    ],
                    [
                      11.347514390945435,
                      46.49466985846028
                    ],
                    [
                      11.3456529378891,
                      46.49461446367692
                    ]
                  ]
                ]
              }
            }
          ]
        }aQ  {
          "type": "FeatureCollection",
          "features": [
            {
              "type": "Feature",
              "properties": null,
              "geometry": {
                "type": "Polygon",
                "coordinates": [
                  [
                    [
                      11.3456529378891,
                      46.49461446367692
                    ],
                    [
                      11.345674395561216,
                      46.494097442978195
                    ],
                    [
                      11.346918940544128,
                      46.49385370294394
                    ],
                    [
                      11.347616314888,
                      46.4938352377453
                    ],
                    [
                      11.347514390945435,
                      46.49466985846028
                    ],
                    [
                      11.3456529378891,
                      46.49461446367692
                    ]
                  ]
                ]
              }
            }
          ]
        })r   r   r   rQ  r   )rJ   geojson_properties_objectgeojson_properties_nullgjson_pogdf1
gjson_nullgdf2s          r%   #test_from_features_empty_propertiesz1TestDataFrame.test_from_features_empty_properties  s`    '%!R'#T ::78))(3 ZZ 78
))*54&r'   c                     G d d      }t        dd      } ||d      }t        dd      } ||d      }t        j                  ||g      }t        |j                        ddgk(  sJ |j
                  j                         ||gk(  sJ y )Nc                       e Zd Zd Zy)JTestDataFrame.test_from_features_geom_interface_feature.<locals>.Placemarkc                 2    dd|i|j                   d| _         y )NrT  r   rU  )rV  )rJ   rt   vals      r%   __init__zSTestDataFrame.test_from_features_geom_interface_feature.<locals>.Placemark.__init__  s    %#&* $ 6 6*&r'   N)__name__
__module____qualname__rl   r'   r%   	Placemarkri    s    r'   rq  r   r   r   r   r   )r   r   rQ  sortedrv   r   tolist)rJ   rq  rW  rX  rY  rZ  r@   s          r%   )test_from_features_geom_interface_featurez7TestDataFrame.test_from_features_geom_interface_feature
  s    	 	 1a[r11a[r1''R1bjj!c:%6666{{!!#Bx///r'   c                    g dg dg dd}t        j                  |      }t        |d   |d         D cg c]  }t        |       }}t	        ||      }|g d   }t	        j
                  |j                        }t        ||       t	        j
                  |j                  d	         }t        ||       t	        j
                  |      }t        ||       y c c}w )
N)r   r/  c)-   .   g     G@)igL^g^)re   latlonrz  ry  r:  )r   re   ry  rz  r   )rw   rx   rD   r   r   rQ  rV  r   )rJ   r>   r@   xyr   gdfr]  r~   s           r%   test_from_feature_collectionz*TestDataFrame.test_from_feature_collection  s    #!)
 \\$(+BuIr%y(AB"E"IBB219: (()>)>?3) (()>)>z)JK3) ((-3) Cs   Cc                 x   t        j                  t        t        | j                              t        j                  | j                  j                        d| j                  j                        }|j                  d| j                  j                        }t        |t         j                        sJ t        |t              sJ t        |j                  | j                  j                         |j                  j                  dk(  sJ d|vsJ t        j                   t"              5  |j                  d| j                  j                  d      }d d d        t        |t         j                        sJ t        t              sJ |j                  j                  dk(  sJ d|v sJ d|vsJ d|v sJ d|j$                  d	<   |j$                  d	   d
k(  sJ |j$                  d	   d
k(  sJ t        j&                  t(              5  |j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)r_   ra   r   ra   r:   r   T)r;   r   r   r   r_   r   r   )rw   rx   rE   r}   r@   r{   ro   r   r   ri   r;   rp   r   r   re   rg   r   r   r   rh   r   )rJ   r@   gfgf2s       r%   test_dataframe_to_geodataframez,TestDataFrame.test_dataframe_to_geodataframe4  s   \\DGG%288DGG<L<L3MN''--
 __ZTWW[[_9"bll+++"l+++r{{DGG,<,<={{:---###\\-( 	J//*$''++D/IC	J"bll+++#|,,,||  J...S   $$$R vvvf~"""wwv!###]]:& 	6OOJO5	6 	6	J 	J	6 	6s   +)H$H0$H-0H9c                    t        j                  t        t        | j                              | j                  j
                  j                  j                  | j                  j
                  j                  j                  d| j                  j                        }|j                         }t        |t        |d   |d         | j                  j                        }t        |      t         j                  u sJ d|vsJ t        ||       t!        |t              sJ t#        |d      sJ d|j$                  d<   t        ||       d	|d
<   t        ||       y )N)r_   latitude	longituder  r  r  )r   r;   r      r  r   r_   )rw   rx   rE   r}   r@   r   centroidrM   rL   r   ry   r   r	   r;   rU   r   rp   hasattrr   )rJ   r@   df_copyr  s       r%   test_dataframe_not_manipulatedz,TestDataFrame.test_dataframe_not_manipulatedQ  s   \\3tww<( GG,,5577!WW--6688
 ''--
 '')#B{OR
^D

 Bx2<<'''###2w'"l+++r:&&& v2w'32w'r'   c                     | j                   j                  d   dk(  sJ t        | j                   j                  d         | j                   j                  d   k(  sJ y )NrU   r   r   r   )r@   rV  r}   r   rR   s    r%   test_geodataframe_geointerfacez,TestDataFrame.test_geodataframe_geointerfacel  sO    ww((04GGGG477,,Z89TWW]]1=MMMMr'   c                    | j                   j                  d d j                         }t        j                  |j
                  d<   t        t        |j                  d                  d   }|d   J t        t        |j                  d                  d   }d|j                         vsJ t        t        |j                  d                  d   }t        j                  |d         sJ t        |j
                  d	         t        j                  u sJ t        t        |j                  d                  }t        |d   d
   t              sJ t        t        |j                  d                  }t        |d   d
   t              sJ t        t        |j                  d                  }t        |d   d
   t              sJ |g d   }t        |j
                  d	         t        j                  u sJ t        t        |j                  d                  }t        |d   d
   t              sJ t        t        |j                  d                  }t        |d   d
   t              sJ t        t        |j                  d                  }t        |d   d
   t              sJ t        j                   t"        d      5  |g d   }t%        |j                                d d d        t'        ddgt)        dd      t)        dd      gd      }t        j                   t*              5  t%        |j                                d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   )r   r   nullr  r  r   r   r#  )r   r   r   )r   r   r   r0  r   )r   r   r   r   r   )r   rt   )r@   r   ry   r{   r   r   nextiteriterfeaturesr  r$  rU   float64rp   floatrg   rh   r   r   r   r   r   )rJ   r@   r   df_only_numerical_colsdf_with_duplicate_columnss        r%   test_geodataframe_iterfeaturesz,TestDataFrame.test_geodataframe_iterfeaturesp  s	   WW\\"1""$ "} d2??f?567Ej!)))d2??f?567E...d2??f?567Exxz*+++ BFF?+,

:::d2??f?567&.|<eDDDd2??f?567&.|<eDDDd2??f?567&.|<eDDD "$$L!M*..?@BJJNNNd1>>&>IJK&.|<eDDDd1>>&>IJK&.|<eDDDd1>>&>IJK&.|<eDDD]]T
 	; )+F)% *779:	; aVeAqk5A;5OPQ]]>* 	$"#	$ 	$	; 	;	$ 	$s   !M5M$M!$M-c                    t        t        dd      gddggd d      }ddgd d}t        t        |j	                  d                  j                  d      }||k(  sJ dddgi}t        t        |j	                  d	                  j                  d      }||k(  sJ ddgd d}t        t        |j	                  d
                  j                  d      }||k(  sJ y )Nr   r   )r   
non-scalartest_col)r  r  r  r  r  r  r   r#  )r   r   r  r  r  get)rJ   r@   r]  r   s       r%   *test_geodataframe_iterfeatures_non_scalarsz8TestDataFrame.test_geodataframe_iterfeatures_non_scalars  s    1+1vhDQ
 $%a&d;d2??f?567;;LI6!!! 1a&)d2??f?567;;LI6!!!#$a&d;d2??f?567;;LI6!!!r'   c                     | j                   j                  dd      }d|j                         vsJ |d   D ]  }d|j                         vrJ  y )Nr  Fr  	show_bboxbboxr   )r@   to_geo_dictr  )rJ   geofeatures      r%   !test_geodataframe_geojson_no_bboxz/TestDataFrame.test_geodataframe_geojson_no_bbox  sV    gg!!Vu!=SXXZ''': 	0G///	0r'   c                 >   | j                   j                  dd      }d|j                         v sJ t        |d         dk(  sJ t	        |d   t
              sJ |d   D ]  }t	        |t        j                        sJ  |d   D ]  }d|j                         v rJ  y )Nr  Tr  r  r   r   )r@   r  r  r}   rp   tupler{   r  )rJ   r  boundr  s       r%   test_geodataframe_geojson_bboxz,TestDataFrame.test_geodataframe_geojson_bbox  s    gg!!Vt!<###3v;1$$$#f+u---[ 	5E!%444	5: 	,GW\\^+++	,r'   c                     dd l }|j                  |j                  | j                              }t	        | j                  |       y r   )pickler   dumpsr@   r   )rJ   r  r$   s      r%   test_picklezTestDataFrame.test_pickle  s.    ll6<<01!$''3/r'   c                 .   t         j                  j                  | j                  d      }| j                  j                  |       t        j                  |      }t        | j                  |       | j                  j                  |j                  k(  sJ y )Nzdf.pkl)
rF   rG   rH   rC   r@   	to_picklerw   read_pickler   r;   )rJ   filename	unpickleds      r%   test_pickle_methodz TestDataFrame.test_pickle_method  sb    77<<h7(#NN8,	477I.ww{{imm+++r'   c                     t        j                  d      }| j                  j                         |j	                  d      k(  sJ | j                  j                  d      |j	                  d      k(  sJ y )Npyprojz
EPSG:32618NAD83z
EPSG:26918)rg   rN  r@   estimate_utm_crsCRS)rJ   r  s     r%   test_estimate_utm_crsz#TestDataFrame.test_estimate_utm_crs  s\    $$X.ww'')VZZ-EEEEww''0FJJ|4LLLLr'   c                     ddg}ddg}t        j                  |      }t        j                  |      }t        ||d      }t        j                  ||d      }t        ||j                                y )Ns                      s            ?      ?s             @       @s            @      @)	geom_col0	geom_col1)r   from_wkbr   rw   rx   r   to_wkb)rJ   wkbs0wkbs1gs0gs1r|  expected_dfs          r%   test_to_wkbzTestDataFrame.test_to_wkb  sx    <:	
::	
   '  '3?@llU#KL;

5r'   c                     ddg}ddg}t        j                  |      }t        j                  |      }t        ||d      }t        j                  ||d      }t        ||j                                y )NzPOINT (0 0)zPOINT (1 1)zPOINT (2 2)zPOINT (3 3))r  r  )r   from_wktr   rw   rx   r   to_wkt)rJ   wkts0wkts1r  r  r|  r  s          r%   test_to_wktzTestDataFrame.test_to_wkt  sh    ..  '  '3s34ll5#?@;

5r'   r1   )leftinnerright	predicate)
intersectswithinr@  c                     t        |      }t        |      }t        j                  ||||      }|j                  |||      }t        ||       y)
        Basic test for availability of the GeoDataFrame method. Other
        sjoin tests are located in /tools/tests/test_sjoin.py
        )r1   r  N)r
   r<   sjoinr   )	rJ   r1   r  naturalearth_citiesnaturalearth_lowresr  r  r]  r   s	            r%   
test_sjoinzTestDataFrame.test_sjoin   sL     ,--.??4C9MEsi@!&(3r'   distancer   r   z`dwithin` requires GEOS 3.10c                     t        t        g dg d            }t        t        dddd      g      }t        j                  |||d|      }|j	                  ||d|      }t        ||       y)	z
        Basic test for predicate='dwithin' availability of the GeoDataFrame method.
        Other sjoin tests are located in /tools/tests/test_sjoin.py
        )r   r   r   )r   r   r   r:  r   r   dwithin)r1   r  r  N)r   r	   r   r<   r  r   )rJ   r1   r  r  r  r]  r   s          r%   test_sjoin_dwithinz TestDataFrame.test_sjoin_dwithin  sg     ^Iy%IJs1aA&78??%SI
 Esi(S!&(3r'   max_distanceNr   distance_colz2ignore:Geometry is in a geographic CRS:UserWarningc                     t        |      }t        |      }t        j                  |||||      }|j                  ||||      }	t        |	|       y)r  )r1   r  r  N)r
   r<   sjoin_nearestr   )
rJ   r1   r  r  r  r  r  r  r]  r   s
             r%   test_sjoin_nearestz TestDataFrame.test_sjoin_nearest"  sa     ,--.**%S|,
 ##sL $ 
 	"&(3r'   c                     t        |      }t        |      }||d   dk(     }t        j                  ||      }|j                  |      }t        ||       y)z
        Basic test for availability of the GeoDataFrame method. Other
        clip tests are located in /tools/tests/test_clip.py
        	continentSouth AmericaN)r
   r<   clipr   )rJ   r  r  r  worldsouth_americar]  r   s           r%   	test_clipzTestDataFrame.test_clip8  sV    
 ,--.eK0OCD>>$6=)!&(3r'   c                    t        |      }t        |      }||d   dk(     }t        j                  ||d      }t        j                  ||d      }t        j                  g d      }t        |j                        |j                  k(  j                         rJ t        |j                        |j                  k(  j                         sJ t        ||j                         y)z=
        Test sorting of geodataframe when clipping.
        r  r  F)sortT)7   ;   >   X   e   r   z                           N)	r
   r<   r  rw   Indexrr  r   allr   )	rJ   r  r  citiesr  r  unsorted_clipped_citiessorted_clipped_citiesexpected_sorted_indexs	            r%   test_clip_sortingzTestDataFrame.test_clip_sortingE  s     ./-.eK0OCD"+..U"S )v}4 P "S!

 *0015L5R5RR
#% 	  (../3H3N3NN
#% 	  	02G2M2MNr'   c                 |    |\  }}t        j                  |||      }|j                  ||      }t        ||       y)z
        Basic test for availability of the GeoDataFrame method. Other
        overlay tests are located in tests/test_overlay.py
        )r1   N)r<   overlayr   )rJ   r&   r1   r#   r$   r]  r   s          r%   test_overlayzTestDataFrame.test_overlay\  s=    
 S$$S#37Sc*!&(3r'   )Krm  rn  ro  rN   rS   rX   rg   markskipifrV   rW   rl   filterwarningsrr   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,  r1  r3  r6  r8  r<  rB  rG  rJ  rR  r^  rf  rt  r}  r  r  r  r  r  r  r  r  r  r  r  r  parametrizer  GEOS_GE_310r  r  r  r  r   rp  r'   r%   r4   r4   1   sh   
$$,
 [[F---6GH4 I4( [[ HI9 J981$$FL)0>@*" [[F---6GH2 I2$; 7(*:%
$,	 [[F---6GH& I&J5.n [[F---6GH	Q I	Q@+
 [[F	*	*23*
',-&((&
)/
/(B6"-<['z0"*26:(6N3$j"$0,0,M686 [[U$>?[[[*NO
4 P @
4 [[U$>?[[Z!Q0[[-  4	 1 @4 [[U$>?[[^dAY7[[^dJ-?@[[ TU4 V A 8 @4$4O.	4r'   r4   r   c                 z   t        | t              sJ t        | j                  t              sJ t        | |   t              sJ | j                  |k(  sJ | j                  j
                  |k(  sJ t        | j                  j                  t              sJ t        | j                  j                  t              sJ y r/   )
rp   r   r   r   rf   re   r   r   r;  r   )r@   geometry_columns     r%   check_geodataframer  h  s    b,'''bkk9---b)9555##666;;...bkk((-888bkk''777r'   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zej"                  j%                  dddg      d        Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestConstructorc           	         t        d      t        j                  d      t        d      D cg c]  }t        ||       c}d}t	        |      }t        |       t	        |t        d            }t        |       t        |j                  t        j                  t        d                   t	        |g d      }t        |       t        |j                  t        j                  g d             t	        |dd	g      }t        |       t        |j                  t        j                  dd	g             t        |d   t        j                  t        d      d
             y c c}w )Nr         @r   abcr  )r`   r_   r   ru   r_   r   re   )rE   r{   r|   r   r   r  r   r   r   rw   r  rv   r   SeriesrJ   rL   r>   r@   s       r%   	test_dictzTestConstructor.test_dicts  s    q3.3Ah7q!7

 $2 $d5k22288RXXd5k%:;$(>?22::rxx0F'GH$j(9:22::rxxj0A'BCBsGRYYuQxc%BC# 8s   E%c                 D   t        j                  t        d            t        j                  t        j                  d            t        t        d      D cg c]  }t        ||       c}      d}t        |      }t        |       t        |t        j                  ddg            }t        |       t        |j                  t        j                  ddg             |d   j                         ddgk(  sJ t        j                  t        d            t        j                  d      t        t        d      D cg c]  }t        ||       c}      d}t        j                  t              5  t        |ddg       d d d        y c c}w c c}w # 1 sw Y   y xY w)Nr   r  r   r   r   r  r_   )rw   r  rE   r{   r|   r   r   r   r  r  r   r   rs  rg   rh   r   r  s       r%   test_dict_of_seriesz#TestConstructor.test_dict_of_series  s:   58$299S>*!a"A15A;"AB
 $2$bhh1v&672288RXXq!f%56#w~~Aq6))) 58$3!a"A15A;"AB

 ]]:& 	-aV,	- 	-# #B #B	- 	-s   F>F3FFc           	         t        d      t        j                  d      t        d      D cg c]  }t        ||       c}d}t	        |d      }t        |d       t        j                  t              5  t	        |d      }d d d        t	        |      }t        j                  t              5  |j                  }d d d        |j                  d      }t        |d       t	        |dddg      }t        |d       t        |j                  t        j                  ddg             t!        |d   t        j"                  t        j                  d      d	             t	        |ddd
g      }t        |d       t        |j                  t        j                  dd
g             t!        |d
   t        j"                  t        d      d
	             y c c}w # 1 sw Y   XxY w# 1 sw Y   ,xY w)Nr   r  r_   r`   r   r   r:  r   r`   )r   rv   r  r_   )rE   r{   r|   r   r   r  rg   rh   r   r   r   ri   r   rv   rw   r  r   r  )rJ   rL   r>   r@   _s        r%   test_dict_specified_geometryz,TestConstructor.test_dict_specified_geometry  s   q305a915A;9
 $62|,]]:& 	9dZ8B	9
 $]]>* 	A	 __\*2|, $\?RS2|,2::rxxl0C'DEBsGRYYryy~C%HI$c?RS2|,2::rxxs0C'DEBsGRYYuQxc%BC9 :	9 	9	 	s   G6G0G'G$'G1c           	      b   t        d      t        j                  d      t        d      D cg c]  }t        ||       c}d}t        j                  |d   |d   |d   gt
              j                  }t        |g d      }t        |       t        |g d	d
      }t        |d
       y c c}w )Nr   r  r   r_   r`   r   )r;  ru   r  r   rv   r   )	rE   r{   r|   r   ro   objectTr   r  )rJ   rL   r>   r   r@   s        r%   
test_arrayzTestConstructor.test_array  s    q3.3Ah7q!7

 HHd3icD,<=VLNN!%;<2!%=U2|, 8   B,c           	      J   t        d      t        j                  d      t        d      D cg c]  }t        ||       c}d}t	        |      }t        j                  |      }t        |       t        |      t
        j                  u sJ ||fD ]  }t	        |      }t        |       t	        |t        j                  ddg            }t        |       t        |j                  t        j                  ddg             |d   j                         ddgk(  sJ t	        |dd	g
      }t        |       t        |j                  t        j                  dd	g             t        j                  t               5  t	        |d       d d d         y c c}w # 1 sw Y   xY w)Nr   r  r   r   r   r  r_   r   r`   ru   r   r:  )rE   r{   r|   r   r   rw   rx   r  rU   r  r   r   rs  rv   rg   rh   r   rJ   rL   r>   gpdfpddfr@   r~   s          r%   test_from_framezTestConstructor.test_from_frame  sS   q3.3Ah7q!7

 D!||D!4 DzR\\))), 	8Br"Cs#r1a&)9:Cs#syy"((Aq6*:;s8??$A...rJ+<=Cs#s{{BHHj#5F,GHz* 8R,78 8	8 8(8 8s   F9FF"	c           	      b   t        d      t        j                  d      t        d      D cg c]  }t        ||       c}d}t	        |d      }t        |d       t        j                  |      }||fD ]  }t	        |d      }t        |d        t	        |      }t        |d       y c c}w )Nr   r  r  r   r:  )rE   r{   r|   r   r   r  rw   rx   r  s          r%   "test_from_frame_specified_geometryz2TestConstructor.test_from_frame_specified_geometry  s    q305a915A;9
 D<84.||D!, 	2BrL9CsL1	2
 $2|, :r  c           
         t        t        d      D cg c]  }t        ||       c}t        d      d      dg   }t        t        d      D cg c]  }t        ||       c}      }t        |       t	        ||       t        dt        d      D cg c]  }t        ||       c}i      }t        |       t	        ||       t        dt        d      D cg c]  }t        ||       c}id      }t        |d       |j                  ddi      j                  d      }t	        ||       y c c}w c c}w c c}w c c}w )Nr   )r   otherr   r:  r   ru   )r   rE   r   r  r   rz   ri   )rJ   rL   expr@   s       r%   test_only_geometryz"TestConstructor.test_only_geometry   s   /4Qx8!%1+858L
, q#BAE!QK#BC2!"c*:U1X'Fa'FGH2!"c*q:AE!QK:;l
 	2|,jj*l!;j<II,W!"c*! 9 $C (G
 ;s   D2D7D<
E
c                     t        d      t        j                  d      d}t        |      }t	        |      t        u sJ t        ddgi      }t        |j                        dgk(  sJ y )Nr   r  r_   r`   rL   r   )rE   r{   r|   r   rU   r   rL   )rJ   r>   r@   r|  s       r%   test_no_geometriesz"TestConstructor.test_no_geometries  s\    1XBIIcN3$Bx<'''C!:&CEE{qc!!!r'   c                     t               }t        |      t         u sJ t        g g dg       }t        |      t         u sJ y )Nr*  r:  )r   rU   r   s     r%   r<  zTestConstructor.test_empty  s>    ^Bx<''',r:Bx<'''r'   c                 |   t        dd      t        dd      t        dd      g}t        |      }t        g d|dddgd      }t        |       t	        |j
                        ddgk(  sJ t        g d|dddgt        j                  g d	      d
      }t        |       t	        |j
                        ddgk(  sJ y )Nr   r   r   r.  )r   r   r   r   r  )r   r   r   )rv   r   r   )r   r   r   r  r   rv   rw   r  rJ   geomsr   r|  s       r%   test_column_orderingz$TestConstructor.test_column_ordering$  s    q!eAqk5A;7u,%

 	3CKK Z$5555 ,%((9%	
 	3CKK Z$5555r'   c                     t        dd      t        dd      t        dd      g}t        |      }t        dg di|      }t        |d       t        |d	
      }t        dg di|      }t        |d       y )Nr   r   r   r   r.  r:  r   )r  my_geomr  )r   r   r   r  r.  s       r%   /test_do_not_preserve_series_name_in_constructorz?TestConstructor.test_do_not_preserve_series_name_in_constructor9  sn     q!eAqk5A;7uC+b93
;u9-C+b93
;r'   c           	      
   t        j                  g dg dd      }t        j                  t        d      D cg c]  }t	        ||       c}      }t        ||      }t        |j                  t        |             y c c}w )Nr.  )r   r   r   )r   r   r   r:  )	rw   rx   r  rE   r   r   r   r   r   )rJ   r>   r   r/  r~   s        r%   test_overwrite_geometryz'TestConstructor.test_overwrite_geometryE  s\    ||IFG		a915A;9:4%0s||Yu-=> :s   B c                    t        j                  t        t        d      t        d            D cg c]  \  }}t	        ||      t	        ||      d  c}}      }|j                  ddi      }t        j                  t              5  t        |       d d d        |j                  ddi      }t        j                  t              5  t        |d       d d d        y c c}}w # 1 sw Y   SxY w# 1 sw Y   y xY w)Nr   )r   rt   rt   r   ru   r:  )
rw   rx   rD   rE   r   rz   rg   rh   r   r   )rJ   rL   rM   r@   r$   rI   s         r%   test_repeat_geo_colz#TestConstructor.test_repeat_geo_colM  s    \\  a%(3Aq #1a[%1+>
 ii 4i5]]:& 		 iiV 4i5]]:& 	/v.	/ 	/	 	
	/ 	/s   #C!
	C'
C3'C03C<r;  r   r  c                    t        j                  t        dd      t        dd      gt        dd      t        dd      gg      }|j                  |      }t         j                  j                  dgddgg      |_        t        |      }t        j                  t        d      5  |j                   d d d        |j                  d      }|j                  |j                  k(  sJ t        |j                  t              sJ y # 1 sw Y   RxY w)	Nr   r   r   r   r   z .*geometry .* has not been set.*r   )r   r   )rw   rx   r   astype
MultiIndexfrom_productrv   r   rg   rh   r   r   ri   r   rp   r   )rJ   r;  r@   r|  res_gdfs        r%   #test_multiindex_with_geometry_labelz3TestConstructor.test_multiindex_with_geometry_label_  s     \\E!QKq!5aU1a[7QRSYYu]]//*1v0FG
2]]>1ST 	LL	""?3}}		)))'**I666		 	s   $DDc                    d}t        dddgi      }|j                         }t        j                  ddgddg      }t	        j
                  t        |      5  ||d<   d d d        |j                  dk(  sJ |j                         }t	        j
                  t        |      5  ||_        d d d        |j                  dk(  sJ |j                         }t	        j
                  t        d      5  d	|d<   d d d        |j                  J t	        j
                  t        |      5  |j                         j                  |
      }d d d        j                  dk(  sJ |j                         }||d<   ||d<   |j                  d      }|ddg   }	|	j                  dk(  sJ ||	d<   |	j                  dk(  sJ y # 1 sw Y   ]xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nz:You are adding a column named 'geometry' to a GeoDataFramer   r   r   r   r   r   z)Geometry column does not contain geometryr   r:  rk   geom3)r   ry   r   from_xyrg   r   r   rf   r   UserWarningr   ri   )
rJ   r   r|  re  geo_colgdf4gdf5gdf3gdf6subsets
             r%   test_default_geo_colname_nonez-TestConstructor.test_default_geo_colname_nonen  s   LC!Q=)xxz##QFQF3\\-u5 	'&D	'))Z777xxz\\-u5 	$#DM	$))Z777 xxz\\J
 	%  %D	% ))111\\-u5 	788:$$g$6D	7))Z777
 xxzWW  )sGn%++w666$z++w666=	' 	'	$ 	$	% 	%
	7 	7s0   F8!G-G$!G8GGGG'c                    d}t        j                  ddgddggddgddgg      }|d   }|d	   }t        ||t        ||      
      }t        j
                  r,|j                  |k(  sJ |j                  j                  |k(  sJ |j                  j                  dk(  sJ |j                  dk(  sJ |j                  j                  dk(  sJ y )N	EPSG:4326r   r   ra   rL   rM   ru   )ra   rL   )ra   rM   rb   r   rw   rx   r   r	   rV   rW   r;   r   r;  rf   re   rJ   r;   r@   x_coly_colr|  s         r%   (test_multiindex_geometry_colname_2_levelz8TestConstructor.test_multiindex_geometry_colname_2_level  s    \\VaV
J'?#s&L
 ?#?#23u1MN77c>!><<##s***||!!Z///((J666||  J...r'   c                    d}t        j                  ddgddggddgddgddgg      }|d	   }|d
   }t        ||t        ||            }t        j
                  r,|j                  |k(  sJ |j                  j                  |k(  sJ |j                  j                  dk(  sJ |j                  dk(  sJ |j                  j                  dk(  sJ y )NrJ  r   r   r   ra   rL   rM   ru   r   ra   rL   r   ra   rM   rb   r   rK  rL  s         r%   (test_multiindex_geometry_colname_3_levelz8TestConstructor.test_multiindex_geometry_colname_3_level  s     \\VaVZ(c

 )*)*23u1MN77c>!><<##s***||!!Z///((J666||  J...r'   c                 :   d}t        j                  ddgddggddgddgddgg      }|d	   }|d
   }t        j                  ||      |d<   |j	                         }|j                  d|      }t        j                  r|j                  |k(  sJ |j                  dk(  sJ |j                  j                  dk(  sJ |j                  d|      }t        j                  r|j                  |k(  sJ |j                  dk(  sJ |j                  j                  dk(  sJ y )NrJ  r   r   r   ra   rL   rM   ru   rQ  rR  r   r:   )r    rU  )rw   rx   r   r@  ry   ri   rV   rW   r;   rf   r   re   )rJ   r;   r@   rM  rN  r$   r|  s          r%   0test_multiindex_geometry_colname_3_level_new_colz@TestConstructor.test_multiindex_geometry_colname_3_level_new_col  s-   \\VaVZ(c

 )*)*"**5%8:ggioojco277c>!>((J666||  J...3=77c>!>((,@@@@||  $8888r'   c                     t        |      }t        j                  t        d      t        d      d      }t        j                  ||gd      }|||j
                  <   t        ||       y )Nr   r   r   r   )r
   rw   rx   rE   concatrv   r   )rJ   r?   r@   other_dfr]  s        r%   test_assign_cols_using_indexz,TestConstructor.test_assign_cols_using_index  sU    }%<<aq BC99b(^!4'8!"h/r'   c           
          G d dt               }t        j                  |j                  ddg|j                  t        j                  ddgddg      i      }t        ||j                        }|j                  |j                  k(  sJ y )Nc                       e Zd ZdZdZy)9TestConstructor.test_geometry_colname_enum.<locals>.Fruitr   r   N)rm  rn  ro  r   pearrp  r'   r%   Fruitr]    s    EDr'   r_  r   r   r   r   r:  )	r   rw   rx   r   r^  r   r@  r   r   )rJ   r_  r@   r~   s       r%   test_geometry_colname_enumz*TestConstructor.test_geometry_colname_enum  su    	D 	 \\[[1a&%**i.?.?AA.OP
 2

3''5::555r'   c                    t        t        j                  t        j                  ggddgd      }|j                  dk(  sJ |j                  dk(  sJ |j
                  d   J t        j                  r|j                  dk(  sJ y y )Nr   	somethingrJ  )r>   rv   r;   )r   r   r   )	r   r{   r   r   r   r   rV   rW   r;   rJ   r|  s     r%   test_geometry_nan_scalarz(TestConstructor.test_geometry_nan_scalar  s    66266"#-

 yyF"""'':555||A&&&77k))) r'   c                    t        t        j                  d t        j                  gt        j                  t        j                  t        j                  gdd      }|j
                  dk(  sJ |j                  dk(  sJ |j                  j                         j                         sJ t        j                  r|j                  dk(  sJ y y )N)r   rb  rJ  r:   )r   r   r   )r   r{   r   rw   NAr   r   r   isnar  rV   rW   r;   rc  s     r%   test_geometry_nan_arrayz'TestConstructor.test_geometry_nan_array  s    VVT2551 ffbffbff5 
 yyF"""'':555||  "&&(((77k))) r'   N)rm  rn  ro  r  r  r  r  r"  r$  r(  r+  r<  r0  r3  r5  r7  rg   r  r  r=  rH  rO  rS  rV  rZ  r`  rd  rh  rp  r'   r%   r
  r
  r  s    D.-0 DD-86-&+("(6*
<?/$ [[Wz8&<=7 >7$7L/"/09606
**r'   r
  zpyproj not availablerY   c                  j    t        dg      } d| _        | j                  j                         dk(  sJ y )Nr   ru   zIGNF:ETRS89UTM28)IGNFETRS89UTM28)r   r;   to_authority)r|  s    r%   test_geodataframe_crsrm    s1    

|
,C CG77!%<<<<r'   c                      t        dg      } t        j                  | j                               }d|vsJ d| _        t        j                  | j                               }d|vsJ y )Nr   ru   r;   i  )r   r   r   r   r;   )r|  gdf_geojsons     r%   test_geodataframe_nocrs_jsonrp    s[    

|
,C**S[[]+K### CG**S[[]+K###r'   c                      t        dg      } d| _        t        j                  | j	                               }d|v sJ |d   dddidk(  sJ | j
                  }d|vsJ y )Nr   ru   id  r;   re   zurn:ogc:def:crs:EPSG::25833)rU   r  )r   r;   r   r   r   rV  )r|  ro  gdf_geointerfaces      r%   test_geodataframe_crs_jsonrs    s|    

|
,CCG**S[[]+KKu<="    ,,((((r'   r;   zA+proj=cea +lon_0=0 +lat_ts=45 +x_0=0 +y_0=0 +ellps=WGS84 +units=mz
IGNF:WGS84c                     t        t        dd      gdg|       }t        j                  t        d      5  t        j                  |j                               }d d d        dvsJ y # 1 sw Y   xY w)Ni  r   )rv   r;   z2GeoDataFrame's CRS is not representable in URN OGCr   r;   )r   r   rg   r   rA  r   r   r   )r;   r|  ro  s      r%   +test_geodataframe_crs_nonrepresentable_jsonru  (  sr     	tT	C
 
O
 0 jj/0 ###	0 0s   $A))A2c                  H   t        dgt        dd      gd      } | j                  J | d   j                  d   dk(  sJ t	        | d      J t        ddgit        dd      g      } | j                  J | d   j                  d   dk(  sJ t	        | d      J t        j                  ddgddggddgddgg      }|d	   }|d
   }t        |t        ||            } | j                  J | d   j                  d   j                         ddgk(  sJ t	        | d      J y )Nr   rb   r;   r   r:  rL   rM   ru   )r;   rL   )r;   rM   )	r   r   r;   r   getattrrw   rx   r	   to_list)r|  r@   rM  rN  s       r%   test_geodataframe_crs_colnamery  :  sI   
sq!>
?C77??u:??1"""3&&& s|uQ{m
<C77??u:??1"""3&&& 
1v1v&%#s0L	MBzNEzNE
rN5%$@
AC77??u:??1%%'Aq61113&&&r'   geo_col_namepolygonsc                    | \  }}|dk7  r|j                  |      }|j                  j                  |d<   |j                  d      }|j                  dk(  sJ ||j
                  v sJ d}t        j                  t        |      5  |j                  dd      }d d d        t        |       t        j                  t        |      5  |j                  dd      }d d d        j                  |k(  sJ d|j
                  vsJ t        ||j                  d      j                  |      j                  |             y # 1 sw Y   xY w# 1 sw Y   qxY w)	Nr   r  z)The `drop` keyword argument is deprecatedr   Fr   Tru   )r   r   r  ri   r   rv   rg   r   r   r   r   )r&   rz  r@   r  r~   
deprecatedr   res3s           r%    test_set_geometry_supply_colnamer  R  s<   EBz!-[[))BzN
//*
%C##z1113;;&&& =J	m:	6 7z67c4(	m:	6 6z56 $$444T\\))) 

#	l	#		&	7 76 6s   D?E?EEc                    | \  }}|dk7  r|j                  |      }|j                  j                  }|j                  |      }|j                  |k(  sJ d}t        j                  t        |      5  |j                  |d      }d d d        j                  |k(  sJ |j                  d      }|j                  |      }|j                  dk(  sJ ||j                  v sJ t        j                  t        |      5  |j                  |d      }	d d d        	j                  dk(  sJ ||	j                  v sJ y # 1 sw Y   xY w# 1 sw Y   7xY w)Nr   z]The `drop` keyword argument is deprecated and has no effect when `col` is an array-like valuer   Tr   	centroids)
r   r   r  ri   r   rg   r   r   rz   rv   )
r&   rz  r@   r  r  r~   	match_strr   r~  res4s
             r%   "test_set_geometry_supply_arrayliker  q  s\   EBz!-$$I
//)
$C##|333	'  

 5 yt4	5
 $$444  -I??9%D $$3334<<''' 

 5 yt4	5
 $$3334<<'''+5 55 5s   1D:<E:EEzerror::FutureWarningc                  :    t        dg i      j                          y)aL  
    Check for a FutureWarning.

    `geopandas.array.GeometryArray._reduce` issues a FutureWarning if
    the parameter `keepdims` is not set.
    `GeometryArray` inherits from `pandas.api.extensions.ExtensionArray`
    and its `_reduce` is overridden in `GeometryArray`.
    This warning is issued with pandas 2.2.2 (tested).
    r   N)r   r  rp  r'   r%   test_reduce_geometry_arrayr    s     *b!"&&(r'   c                       e Zd Zd Zy)GDFChildc                      y)Nthis is a custom outputrp  rR   s    r%   custom_methodzGDFChild.custom_method  s    (r'   N)rm  rn  ro  r  rp  r'   r%   r  r    s    )r'   r  c                 l   | \  }}dgt        |      z  |j                  d d df<   t        |      }|j                  d      }||j                  dg   |j                  |j
                  dk(     |j                         |ddg   |j                         ||j                  dg   |j                  |j
                  dk(     |j                         |ddg   |j                         g}|D ])  }t        |t              sJ |j                         dk(  r)J  |j                  dg      }t        |t              rJ y )	Nr   r   	geometry2r   r   r   r  ru   )r}   r   r  r   r   r   dissolvery   rp   r  r   )r&   r@   r  dfcdfc2childrenvr$   s           r%   test_inheritancer    s-   EBBBFF1f9
2,C{+D 	!AVZ !
		1#Qfk"#		H  >!X&&& $====> ))[M)
*C#x((((r'   r:  );r   rF   rP   rA   enumr   numpyr{   pandasrw   shapely.geometryr   r   r   r<   geopandas._compat_compatrV   r   r   r	   r
   geopandas.arrayr   r   r   rg   geopandas.testingr   r   geopandas.tests.utilr   r   pandas.testingr   r   r   fixturer&   r1   r  usefixturesr4   r  r
  r  rW   rm  rp  rs  r  ru  ry  r  r  r  r  r  r  rp  r'   r%   <module>r     s    	      0 0  " H H F F  O > V V  $ V 56s4 s4 7s4l!8R* R*j )))2HI= J=	$ )))2HI
) J
) )))2HI	H,W
$	 J

$'0 *j)AB C< *j)AB!( C!(H 23
) 4
))| )
)r'   