a
    1$e                     @   s(  d dl Z d dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZ d dlZd dlmZ d dlmZmZmZmZmZ d dlmZmZ d dlmZmZ d dlZejpejoejZej j!Z"e# dd Z$G d	d
 d
Z%G dd dZ&G dd dZ'ej j(edddd Z)ej j(e ddG dd dZ*dS )    N)Sequence)PointPolygonGeometryCollection)GeoDataFrame	GeoSeries	read_filesjoinsjoin_nearest)assert_geodataframe_equalassert_geoseries_equal)assert_frame_equalassert_series_equalc                 C   sj  t tg dtg dtg dg}t tg dtg dtg dg}t|g dd}t|g d	d
}| jdkrg d|_g d|_| jdkrd|j_d|j_| jdkrg d}g d}|||g}|||g}| jdkr.g d}g d}|||g}|||g}ddg|j_ddg|j_i }| 	 j
ddid}| jg d 	 j
ddid}	g d|d< g d|	d< tj||	ddd}
|
jdd d! |d"< | 	 j
ddid}| 	 j
ddid}	g d|d< g d#|	d< tj||	ddd}
|
jdd d! |d$< g d|d< g d%|	d< tj||	ddd}
|
jdd d! |d&< | j|||g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   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   Zaxis
intersects)r   r   r   contains)r   r   r   within)r   r   r   paramr1   name	set_indexnamescopyreset_indexrenameilocpdmergedrop)requestZpolys1Zpolys2r   r    i1i2expectedZpart1Zpart2exp rN   \/var/www/html/django/DPS/env/lib/python3.9/site-packages/geopandas/tools/tests/test_sjoin.pydfs   sn    










rP   c                   @   s>  e Zd Zejddddh dfdddh dfdddh dfdddh d	fdddh d	fdddh d
fgeeedddZejjdddgdddd Zejjddgddejdg ddd Z	ejjddgddejdg dejdddgdd Z
ejjddgdddd Zejd ejjdg d!ddejdg dejd"ddgd#d$ Zejjdg d!ddejdg dd%d& Zd'd( Zejdg d)ejd*ee e gd+ee d+gd,d- Zejjdddgddd.d/ Zejjdg d!ddejdg dd0d1 Zd2S )3TestSpatialJoinz$how, lsuffix, rsuffix, expected_colsleftright>   	col_rightr5   col_leftinner>   r2   rT   rU   ZlftZrgt>   Z	index_rgtcol_rgtcol_lft>   Z	index_lftrW   rX   r9   lsuffixrsuffixc                 C   s^   t dgtddgd}t dgtddgd}t|||||d}t|j|dhB ksZJ d S )Nr   r   )colr   rY   r   )r   r   r	   setr4   )selfr9   rZ   r[   Zexpected_colsrR   rS   joinedrN   rN   rO   test_suffixesc   s    zTestSpatialJoin.test_suffixesrP   default-indexr!   T)Zindirectc                 C   sN   |\}}}}d|_ tjtdd t|| W d    n1 s@0    Y  d S )Nz	epsg:4326zCRS mismatch between the CRSmatch)crspytestwarnsUserWarningr	   r^   rP   r1   r   r    rL   rN   rN   rO   test_crs_mismatcht   s    z!TestSpatialJoin.test_crs_mismatchop)r;   r<   r=   c                 C   sL   |\}}}}t jtdd t|||d W d    n1 s>0    Y  d S )Nz`op` parameter is deprecatedrb   )rj   )re   rf   FutureWarningr	   )r^   rP   rj   _r   r    rN   rN   rO   test_deprecated_op_param{   s    z(TestSpatialJoin.test_deprecated_op_param	predicater<   r=   c           	      C   sl   |\}}}}d}||kr&t }d| }nt}tj||d  t||||d W d    n1 s^0    Y  d S )Nz%use the `predicate` parameter insteadz:`predicate` will be overridden by the value of `op`(.|\s)*rb   )rn   rj   )rg   rk   re   rf   r	   )	r^   rP   rj   rn   rl   r   r    rc   ZwarntyperN   rN   rO   -test_deprecated_op_param_nondefault_predicate   s    z=TestSpatialJoin.test_deprecated_op_param_nondefault_predicatec                 C   sL   |\}}}}t jtdd t||dd W d    n1 s>0    Y  d S )Nz:sjoin\(\) got an unexpected keyword argument 'extra_param'rb   test)Zextra_param)re   raises	TypeErrorr	   )r^   rP   rl   r   r    rN   rN   rO   test_unknown_kwargs   s    z#TestSpatialJoin.test_unknown_kwargsz'ignore:The `op` parameter:FutureWarning)ra   r!   r(   r+   r,   predicate_kwc           
      C   sP  |\}}}}t ||fddi||i}||   }	|	jdddjddid}	|	d	d
g d|	d	d
g< |dkr|	ddg d|	ddg< |dkr|	ddg d|	ddg< |	djddid}	|dv r|	d}	d |	j_|dkr|	ddgjdddd}	|jj	|	j_	|dkrB|	ddgjdddd}	|jj	|	j_	t
||	 d S )Nr9   rV   
geometry_yr   r:   
geometry_xr   r3   r   r    int64ra   r2   r5   r(   r)   r*   ra   r!   r+   	level_0_x	level_1_xindex_right0index_right1	level_0_y	level_1_yr,   r-   r.   r/   r0   )r	   dropnarB   rH   rD   astyper@   r1   r?   rA   r   )
r^   rn   rt   rP   r1   r   r    rL   resrM   rN   rN   rO   
test_inner   s8    


zTestSpatialJoin.test_innerc           	      C   s  |\}}}}t ||d|d}|dv r<|| jdgd }n^|dkr\|| jdgd }n>|dkr||| jd	gd }n|d
kr|| jdgd }|jdddjddid}|d d|d< |dkr|d d|d< |d t|d< n6|dkr*|dg d|dg< |djddid}|dv rF|d}d |j_	|dkrx|d	dgjdddd}|jj
|j_
|d
kr|ddgjdddd}|jj
|j_
t|| d S )NrR   r9   rn   rx   r2   Zsubsetr(   r)   r+   ry   r,   r-   ru   r   r:   rv   r   r3   r   rw   ra   r5   r*   rz   r{   r|   r}   r.   r   )r	   r   rB   rH   rD   r   floatr@   r1   r?   rA   r   	r^   rn   rP   r1   r   r    rL   r   rM   rN   rN   rO   	test_left   s@    




zTestSpatialJoin.test_leftc                 C   s   t ddgtg dtg dgd}t dgtddgd}t||d	d
d}|j  sdJ t||dd
d}|j  sJ t||dd
d}|j	sJ d S )Nr   r   r   r   r   r   )r   r   r   )r   r   )r   r   r   Zcol2r   g      g      ?)Zcol1r   rR   r;   r   rS   rV   )
	geopandasr   r   r   r	   r5   isnullallr2   empty)r^   polygonsZnot_inr   rN   rN   rO   test_empty_join   s    

	zTestSpatialJoin.test_empty_join)r<   Zcontains_properlyZ
covered_byZcoversZcrossesr;   Ztouchesr=   r   r   c                 C   s   t ddgtg dtg dgd}t||d|d}|j  sJJ t||d|d}|j  slJ t||d	|d}|jsJ d S )
Nr   r   r   r   r   rR   r   rS   rV   )	r   r   r   r	   r5   r   r   r2   r   )r^   rn   r   r   resultrN   rN   rO   test_join_with_empty  s    

	z$TestSpatialJoin.test_join_with_emptyc                 C   s   |\}}}}t jtdd t|j| W d    n1 s<0    Y  t jtdd t||j W d    n1 sv0    Y  d S )Nz 'left_df' should be GeoDataFramerb   z!'right_df' should be GeoDataFrame)re   rq   
ValueErrorr	   r   rh   rN   rN   rO   test_sjoin_invalid_args5  s
    *z'TestSpatialJoin.test_sjoin_invalid_argsc           	      C   s  |\}}}}t ||d|d}|dv r<|| jdgd }n^|dkr\|| jdgd }n>|dkr||| jd	gd }n|d
kr|| jdgd }|jdddjddid}|d d|d< |dkr|d d|d< |d t|d< n6|dkr*|dg d|dg< |djddid}|dv rT|d}|j|j	d}d |j
_|dkr|d	dgjdddd}|j
j|j
_|d
kr|ddgjdddd}|j
j|j
_|dkr| }t||dd d S ) NrS   r   rx   r5   r   r(   r*   r+   r~   r,   r/   rv   r   r:   ru   r   r3   r    rw   ra   r2   r)   r   Zindex_left0Zindex_left1)ry   rz   r0   )r-   r.   r=   F)Zcheck_index_type)r	   r   rB   rH   rD   r   r   r@   Zreindexr4   r1   r?   rA   Z
sort_indexr   r   rN   rN   rO   
test_right?  sF    





zTestSpatialJoin.test_rightN)__name__
__module____qualname__re   markparametrizestrr`   ri   rm   ro   rs   filterwarningsr   r   r   r   r   r   r   r   r   rN   rN   rN   rO   rQ   b   sv   


&

	rQ   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
ejdg ddd Zdd Zejjdd Zejddd Zdd Zejdg dd d! Zd"d# Zd$S )%TestSpatialJoinNYBBc                 C   s   t jd}t|| _| jj| _d}dd | jjD }tdd tt	|d |d t
|d |d  | t	|d |d	 t
|d	 |d  | D | jd
| _d S )Nnybb   c                 S   s   g | ]}t |qS rN   )int.0xrN   rN   rO   
<listcomp>z      z4TestSpatialJoinNYBB.setup_method.<locals>.<listcomp>c                 S   s*   g | ]"\}}t |||| || d qS ))r   
pointattr1Z
pointattr2r   r   r   yrN   rN   rO   r   |  s   r   r   r   r   )rd   )r   datasetsget_pathr   polydfrd   Ztotal_boundsr   zipranger   pointdf)r^   Znybb_filenameNr#   rN   rN   rO   setup_methodu  s    

&&z TestSpatialJoinNYBB.setup_methodc                 C   sb   | j jj}| j jddidd| _ || j jjks6J t| j | jdd}| j jj|jjks^J d S )Nr   Znew_geomr3   rR   r9   )r   r   r?   rD   Zset_geometryr	   r   )r^   Zpolydf_original_geom_namer   rN   rN   rO   test_geometry_name  s    
z&TestSpatialJoinNYBB.test_geometry_namec                 C   sb   t | j| jdd}|jdks J | D ]\}}|jjdks(J q(d|jv sPJ d|jv s^J d S )NrR   r         r   r   ZBoroCode)r	   r   r   shapeiterrowsr   	geom_typer4   )r^   dfirowrN   rN   rO   test_sjoin_left  s    z#TestSpatialJoinNYBB.test_sjoin_leftc                 C   s   t | j| jdd}t | j| jdd}|jdks2J |j|jksBJ | D ]\}}|jjdksJJ qJ| D ]\}}|jjdkslJ qld S )NrS   r   rR      r   ZMultiPolygon)r	   r   r   r   r   r   r   )r^   r   r    r   r   rN   rN   rO   test_sjoin_right  s    z$TestSpatialJoinNYBB.test_sjoin_rightc                 C   s$   t | j| jdd}|jdks J d S )NrV   r   )   r   r	   r   r   r   r^   r   rN   rN   rO   test_sjoin_inner  s    z$TestSpatialJoinNYBB.test_sjoin_innerc                 C   sv   t | j| jddd}|jdks"J |jd d dks8J t | j| jddd}|jdksZJ t|jd d	 srJ d S )
NrR   r=   r   r   r   ZBoroNamezStaten Islandr<   
Shape_Area)r	   r   r   r   locnpisnanr   rN   rN   rO   test_sjoin_predicate  s    z(TestSpatialJoinNYBB.test_sjoin_predicatec                 C   sB   t t$ t| j| jddd W d    n1 s40    Y  d S )NrR   Zspandexr   )re   rq   r   r	   r   r   )r^   rN   rN   rO   test_sjoin_bad_predicate  s    z,TestSpatialJoinNYBB.test_sjoin_bad_predicatec                 C   sB   | j jddid}t|| jdd}d|jv s0J d|jv s>J d S )Nr   r   r3   rR   r   ZShape_Area_leftZShape_Area_right)r   rD   r	   r   r4   )r^   pointdf2r   rN   rN   rO    test_sjoin_duplicate_column_name  s    z4TestSpatialJoinNYBB.test_sjoin_duplicate_column_namer9   )rR   rS   rV   c                 C   s   | j  }d|j_| j }d|j_t|||d}|jjdksBJ |jjdksRJ |dkrl|jjdks|J n|jjdks|J d S )NZpointidZpolyidr   rS   )r   rB   r1   r?   r   r	   )r^   r9   r   r   r   rN   rN   rO   test_sjoin_named_index  s    

z*TestSpatialJoinNYBB.test_sjoin_named_indexc                 C   sP   g d| j _t| j| j dd}|jdks,J t| j | jdd}|jdksLJ d S )N)r   r   r   r   r   rR   r   r   r   )r   r1   r	   r   r   r   rN   rN   rO   test_sjoin_values  s
    z%TestSpatialJoinNYBB.test_sjoin_valuesc           
      C   st  t | jjdd  | jdd}t | jjdd  | jdd}t | jjdd  | jdd}tj| jjd d tjddd	| jjd
ddjd d gdd}t|}tj| jjd
ddjd d tjtjddd	tjddd	gdd| jgdd}t|	d}tj| jjdd  tjddd	| jjd d jd
ddgdd}t|}	|
|sPJ |
|s`J |	
|spJ d S )N   rV   r   rR   rS   r   r5   rw   )r?   dtyper   r   r:   r2   )r	   r   rE   r   rF   concatSeriesrH   r   r@   equals)
r^   Zdf_innerZdf_leftZdf_rightZexpected_inner_dfZexpected_innerZexpected_right_dfexpected_rightZexpected_left_dfexpected_leftrN   rN   rO   test_no_overlapping_geometry  sF    		z0TestSpatialJoinNYBB.test_no_overlapping_geometryzNot implementedc                 C   s$   t | j| jdd}|jdks J d S )Nr7   r   r   r   r   rN   rN   rO   test_sjoin_outer  s    z$TestSpatialJoinNYBB.test_sjoin_outerc                 C   sj   t t gd d}tt| j|g| jdd}|jdks<J t| jt| j|gdd}|jdksfJ d S )Nr   r   rR   r   )   r   r   )r   r   r	   rF   r   r   r   r   )r^   r   r   r    rN   rN   rO   test_sjoin_empty_geometries  s
    z/TestSpatialJoinNYBB.test_sjoin_empty_geometriesrn   )r;   r=   r<   c                 C   st   t g | jjd}t| j|d|djs(J t| j|d|djs@J t|| jd|djsXJ t|| jd|djspJ dS )z&Tests a completely empty GeoDataFrame.)r   rd   rV   r   rS   rR   N)r   r   rd   r	   r   )r^   rn   r   rN   rN   rO   test_sjoin_no_valid_geoms  s
    z-TestSpatialJoinNYBB.test_sjoin_no_valid_geomsc                 C   sR   t t jd}| }|d|_t ||}d|jv s@J d|jv sNJ d S )Nr   i@ ZBoroCode_rightZBoroCode_left)	r   r   r   r   rB   	translater   r	   r4   )r^   r   Znybb2r   rN   rN   rO   *test_empty_sjoin_return_duplicated_columns!  s    z>TestSpatialJoinNYBB.test_empty_sjoin_return_duplicated_columnsN)r   r   r   r   r   r   r   r   r   r   r   re   r   r   r   r   Zxfailr   skipr   r   r   r   rN   rN   rN   rO   r   t  s&   


3


r   c                   @   s   e Zd Zdd Zdd ZdS )TestSpatialJoinNaturalEarthc                 C   s0   t jd}t jd}t|| _t|| _d S )Nnaturalearth_lowresnaturalearth_cities)r   r   r   r   worldcities)r^   Z
world_pathZcities_pathrN   rN   rO   r   -  s    
z(TestSpatialJoinNaturalEarth.setup_methodc                 C   sB   | j ddg }|jddid}t| j|ddd}|jdks>J d S )	Nr   r?   countryr3   rV   r;   r   )   r   )r   rD   r	   r   r   )r^   	countriesZcities_with_countryrN   rN   rO   r   3  s    
z,TestSpatialJoinNaturalEarth.test_sjoin_innerN)r   r   r   r   r   rN   rN   rN   rO   r   ,  s   r   z<This test can only be run _without_ PyGEOS >= 0.10 installedreasonc                  C   sX   t dg i} t dg i}tjtdd t| | W d    n1 sJ0    Y  d S )Nr   z;Currently, only PyGEOS >= 0.10.0 or Shapely >= 2.0 supportsrb   )r   r   re   rq   NotImplementedErrorr
   )r   r    rN   rN   rO   test_no_nearest_all=  s    r   zfPyGEOS >= 0.10.0 must be installed and activated via the geopandas.compat module to test sjoin_nearestc                   @   s  e Zd Zejdi ddiddiddifdd Zejdded	d
dZejddedddZ	ejddedddZ
ejdddgejddedddZejddedddZejdddgdd Zdd Zejdddgdd Zdd Zejdddgejded d ed!d!ged!d!gd d!gd d ged"d gfed d ed!d!ged!d!ed d gd d!gd!d gd d gfed d ed!d!ged!d!ed d ed d gg d#g d$g d%fed d ed!d!ged!d!ed d ed"d"gd d!gd!d gd d gfed d ed!d!ged!d!ed&d!gd d!gd!d ged'd gfed d ed!d!ged(d(ed)d)gd d!gd d ged*ed+gfed d ed!d!gd,d- eed.ed.D d d!gd d!gd d gfed d ed!d!ed d ged/d/ed d gg d0g d1d ed2d gfgee ee ee d3d4d5Zejded d ed!d!ged!d!gd!gd gd gfed d ed!d!ged!d!ed d gd!d gd d!gd d gfed d ed!d!ged!d!ed d ed d gg d6g d0g d%fed d ed!d!ged!d!ed d ed"d"gg d1g d0d d ed"gfed d ed!d!ged!d!ed&d!gd!d!gd d!gd d7gfed d ed!d!ged(d(ed)d)gd d!gd d!ged*ed8gfed d ed!d!gd9d- eed.ed.D d d!gd!gd:  eed.d d gd;d- ed!d<D  fed d ed!d!ed d ged/d/ed d gg d=g d>ed2d d gfgee ee ee d3d?d@ZejdAdBdC Zejj e!j" dDdEejdFdGg dHfd/g dIfgdJdK Z#dGS )LTestNearest
how_kwargsr9   rV   rR   rS   c                 C   s2   t dg i}t dg i}t||fi | d S )Nr   )r   r   r
   )r^   r   rR   rS   rN   rN   rO   test_allowed_howsT  s    zTestNearest.test_allowed_hows)r7   Zabcder   c                 C   s\   t dg i}t dg i}tjtdd t|||d W d    n1 sN0    Y  d S )Nr   z	`how` wasrb   r   )r   r   re   rq   r   r
   )r^   r9   rR   rS   rN   rN   rO   test_invalid_hows\  s    zTestNearest.test_invalid_howsdistance_col)NZdistancer   c                 C   s   t dtddtddgi}t dg i}t||d|d}t|d |d  |d   sbJ |d ur~||   s~J d S )Nr   r   r   rR   r9   r   r5   r   r   r   r
   r   Zisnar   r^   r   rR   rS   r_   rN   rN   rO   test_empty_right_df_how_leftc  s    z(TestNearest.test_empty_right_df_how_leftc                 C   s^   t dtddtddgi}t dg i}t||d|d}|jsFJ |d urZ||v sZJ d S )Nr   r   r   rS   r   r   r   r   r
   r   r   rN   rN   rO   test_empty_right_df_how_rights  s    
z)TestNearest.test_empty_right_df_how_rightc                 C   s^   t dtddtddgi}t dg i}t||||d}|jsFJ |d urZ||v sZJ d S )Nr   r   r   r   r   )r^   r9   r   rS   rR   r_   rN   rN   rO   test_empty_left_df  s    
zTestNearest.test_empty_left_dfc                 C   s   t dtddtddgi}t dg i}t||d|d}t|d |d  |d   sbJ |d ur~||   s~J d S )Nr   r   r   rS   r   r2   r   )r^   r   rS   rR   r_   rN   rN   rO   test_empty_left_df_how_right  s    z(TestNearest.test_empty_left_df_how_rightc                 C   s   t dtddgi}t dtddtddgi}t|||ddd}| }tjg|d< tjg|d< |dkr| }|d d	|d< t	|| d S 
Nr   r   r   r   	distancesr9   max_distancer   r5   rV   rw   
r   r   r   r
   rB   r   nanr   r   r   r^   r9   rR   rS   r_   rL   rN   rN   rO   #test_empty_join_due_to_max_distance  s     z/TestNearest.test_empty_join_due_to_max_distancec                 C   s   t dtddtddgi}t dtddgi}t||dddd}| }tjg|d< tjg|d< |g d	 }t|| d S )
Nr   r   r   r   rS   r   r   r2   r2   r   r   r   r   r   r
   rB   r   r  r   r^   rR   rS   r_   rL   rN   rN   rO   -test_empty_join_due_to_max_distance_how_right  s    z9TestNearest.test_empty_join_due_to_max_distance_how_rightc                 C   s   t dtddtddgi}t dtddtddgi}t|||ddd}| }tjdg|d< tjdg|d< |dkr| }|d d	|d< t	|| d S r   r   r  rN   rN   rO   test_max_distance  s     zTestNearest.test_max_distancec                 C   s   t dtddtddgi}t dtddtddgi}t||dddd}| }tjdg|d< tjdg|d< |g d	 }t|| d S )
Nr   r   r   r   rS   r   r   r2   r  r  r  rN   rN   rO   test_max_distance_how_right  s    z'TestNearest.test_max_distance_how_rightz=geo_left, geo_right, expected_left, expected_right, distancesr   r   r   )r   r   r   )r   r   r   )r   r   r   g      ?g      ?id         c                 C   s   g | ]\}}t ||qS rN   r   r   rN   rN   rO   r     r   zTestNearest.<listcomp>r   g?r   )r   r   r   g|Gz?)r   r   r   c                 C   s   t d|i}t d|i}|j|  }	||	d< t|||d}
|dk}t|	|
|d tj|td|	d< t|||dd}
t|	|
|d d S )	Nr   r5   r   rV   
check_liker   r   r   	r   r   rE   rB   r
   r   r   arrayr   )r^   geo_left	geo_rightr   r   r   r9   rR   rS   expected_gdfr_   r  rN   rN   rO   test_sjoin_nearest_left  s    Gz#TestNearest.test_sjoin_nearest_left)r   r   r   g      ?iL  c                 C   s   g | ]\}}t ||qS rN   r   r   rN   rN   rO   r   c  r   r   c                 C   s"   g | ]}t |d  |d   qS )r   )r   sqrtr   rN   rN   rO   r   f  r   r   )r   r   r   )r   r   r   c           
      C   s   t d|i}t d|i}|j|  }||d< |ddg }t||dd}	t||	 tj|td|d< t||ddd}	t||	 d S )Nr   r2   rS   r   r  r   r   r  )
r^   r  r  r   r   r   rR   rS   r  r_   rN   rN   rO   test_sjoin_nearest_right:  s    ?
z$TestNearest.test_sjoin_nearest_rightz&ignore:Geometry is in a geographic CRSc                 C   s  t tjd}t tjd}|ddg jddid}t||dd}|jd	 |jd	 ks^J t||dd
d}t|| t||ddd}t||dd t||ddd}t|||d dk  dd t||dddd}|jd	 |jd	 ksJ | }|d 	d|d< t||dd d S )Nr   r   r   r?   r   r3   distr   r   rV   )r   r9   rR   Tr  r   )r   r   )r   r   r9   r5   rw   )
r   r   r   r   rD   r
   r   r   r   r   )r^   r   r   Zresult1Zresult2Zresult3Zresult4Zresult5rN   rN   rO   test_sjoin_nearest_inner  s(    

z$TestNearest.test_sjoin_nearest_innerzMshapely >= 2.0 is required to run sjoin_nearestwith parameter `exclusive` setr   zmax_distance,expectedN)r   r   r   r   r   )r   r   r   r   c                 C   s   t tdtd}t|tddg}td|i}|j||ddd}t	|d j
dd	t|d
d |r|d  |ksJ d S )Nr   r   r   r   r  T)r   r   Z	exclusiver5   )rH   F)Zcheck_names)shapelyZpointsr   arangeappendr   r   r   r
   r   rC   rF   r   max)r^   r   rL   Zgeomsr   r   rN   rN   rO   test_sjoin_nearest_exclusive  s    z(TestNearest.test_sjoin_nearest_exclusive)$r   r   r   re   r   r   r   r   r   r   r   r   r   r  r  r  r	  r   mathr  r   r   r  r   r   r   r  listr   r  r   r  skipifcompatUSE_SHAPELY_20r  rN   rN   rN   rO   r   K  s  	



A*
;

r   )+r  typingr   numpyr   ZpandasrF   r  Zshapely.geometryr   r   r   r   Zgeopandas._compat_compatr"  r   r   r   r	   r
   Zgeopandas.testingr   r   Zpandas.testingr   r   re   r#  ZPYGEOS_GE_010Z
USE_PYGEOSZTEST_NEARESTr   Zskip_no_sindexZ
pytestmarkZfixturerP   rQ   r   r   r!  r   r   rN   rN   rN   rO   <module>   s>   
H   9

