a
    1$e+                     @   s>  d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
Z
d dlmZmZ d dlmZmZ e
jdd Ze
jdd	 Ze
jd
d Ze
jdd Zdd Zdd Zdd Zdd Zdd Ze
jje peddd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%d,d- Z&d.d/ Z'd0d1 Z(dS )2    N)GeoDataFrame	read_file)assert_frame_equal)PANDAS_GE_15PANDAS_GE_20)assert_geodataframe_equalgeom_almost_equalsc                  C   sj   t jd} t| }|g d }|jddid}|d}d|d< d|jd	d
df< |d d|d< |S )NZnybb)geometryBoroNameBoroCoder	   myshapescolumns   manhattan_bronx         r   int64)	geopandasZdatasetsget_pathr   renameZset_geometrylocZastype)Znybb_filenamenybb_polydf r   Y/var/www/html/django/DPS/env/lib/python3.9/site-packages/geopandas/tests/test_dissolve.pyr      s    
r   c                 C   sT   | j dd }| j dd }|jj|jjg}td|idtjddgdd	| jd
}|S )Nr   r   r      r   r   r   r   )name)r	   indexcrs)r   r	   unary_unionr   pdIndexr   )r   r   others	collapsedmerged_shapesr   r   r   r%      s    r%   c                 C   s$   |   }ddg|d< ddg|d< |S )NStaten IslandZ	Manhattanr
   r      r   copy)r%   firstr   r   r   r*   .   s    r*   c                 C   s   |   }ddg|d< |S )Nr   g      ?r   r(   )r%   Z	test_meanr   r   r   expected_mean6   s    r+   c                 C   s,   |  d}|jjdksJ t||s(J d S )Nr   r   )dissolver	   r   r   r   r*   testr   r   r   test_geom_dissolve=   s    
r/   c                 C   s*   | j d usJ | d}|j d us&J d S Nr   r   r,   r   r.   r   r   r   "test_dissolve_retains_existing_crsC   s    
r3   c                 C   s"   d | _ | d}|j d u sJ d S r0   r1   r2   r   r   r   %test_dissolve_retains_nonexisting_crsI   s    
r4   c                 C   s   |  d}t||dd d S )Nr   FZcheck_column_type)r,   r   r-   r   r   r   test_first_dissolveO   s    
r6   c                 C   s   t s$| jddd}| jdtjd}nt rztsztjtdd. | jddd}| jdtjd}W d    q1 sn0    Y  n*| jdddd}| jdgd	jdtjd}t	||d
d t	||d
d d S )Nr   meanaggfunc".*used in dissolve is deprecated.*matchTr9   numeric_onlyr
   r   Fr5   )
r   r,   npr7   r   pytestwarnsFutureWarningZdropr   )r   r*   r+   r.   Ztest2r   r   r   test_mean_dissolveT   s    0rC   zwarning for pandas 1.5.x)reasonc                 C   s   t jtdd | jddd W d    n1 s20    Y  t ( td | jddd W d    n1 sr0    Y  d S )Nr:   r;   r   r7   r8   errorr*   )r@   rA   rB   r,   warningscatch_warningssimplefilter)r   r*   r+   r   r   r   "test_mean_dissolve_warning_capturei   s    ,

rI   c                 C   sH   dd }t jtdd | jd|d W d    n1 s:0    Y  d S )Nc                 S   s&   t d tr| jddS |  S d S )NfooF)r>   )rF   warnr   sum)groupr   r   r   sum_and_warnz   s    
z8test_dissolve_emits_other_warnings.<locals>.sum_and_warnrJ   r;   r   r8   )r@   rA   UserWarningr,   )r   rN   r   r   r   "test_dissolve_emits_other_warningsw   s    rP   c                 C   sX   |   }|j|d< |jddgdd}|  }|j|d< ||jdg}t||dd d S )NZdup_colr   r*   r8   Fr5   )r)   r   r,   r   	set_indexr   )r   r*   multiZ
multi_testZ
first_copyr   r   r   test_multicolumn_dissolve   s    

rS   c                 C   s(   | j ddd}| }t||dd d S )Nr   F)Zas_indexr5   )r,   Zreset_indexr   )r   r*   r.   Z
comparisonr   r   r   test_reset_index   s    rT   c              	   C   sR   | j d d}t| jj| jjgddgddgddgi| jj| jd}t||dd	 d S )
N)byr
   r&   r   r   r   r	   r   Fr5   r,   r   r	   r   r    r   r   r   r.   expectedr   r   r   test_dissolve_none   s    
rZ   c                 C   sN   | j ddd}t| jj| jjgddgddgi| jj| jd}t||d	d
 d S )Nr7   Tr=   r   g      @r   g@rV   Fr5   rW   rX   r   r   r   test_dissolve_none_mean   s    	r[   c               	   C   s*  t g dg dg dt jg ddg d} t ddgt jd	d
gdd}t ddgt jddgdd}t g dg dt jg ddddg}t|| jdd t|| jdd t|| jdd t|| jdd t|| jddgd t|| jddgd d S )N)r'   r'   r   r   )r   r   r   r   )r   r   r   r   POINT (0 0)POINT (1 1)POINT (2 2)POINT (3 3))abcr	   )ra   rb   rc   r'   r   MULTIPOINT (0 0, 1 1)MULTIPOINT (2 2, 3 3)ra   r	   ra   r   r   r]   zMULTIPOINT (1 1, 2 2, 3 3))rb   r	   rb   r'   r'   r   )r   r   r   )r]   r^   re   )ra   rb   r	   r   )level)r   r   arrayfrom_wktrQ   r   r,   )gdfZ
expected_aZ
expected_bZexpected_abr   r   r   test_dissolve_level   sZ    	
rl   c                  C   sv   t g dt jg dd} t ddgt jddgdd}| }t|| d t|| jdd	d
 d S )N)r   r'   r'   r]   r^   r_   rf   r   r'   r]   zMULTIPOINT (1 1, 2 2)ra   F)sort)r   r   ri   rj   rQ   Z
sort_indexr   r,   )rk   Zexpected_unsortedZexpected_sortedr   r   r   test_dissolve_sort   s&    	ro   c               	   C   s   t tg dg dg dt jg dd} t tg dg dt jg dg dd	d
dg}t tg dg dt jg dg dd	d
dg}t|| d
dg t|| jd
dgdd d S )N)ra   ra   rb   rb   )r'   r'   r'   r   )r'   r   r   r   r\   )catnoncatto_aggr	   )r'   r   r'   r   )rd   Nr_   r`   )r'   Nr   r   )rp   rq   r	   rr   rp   rq   )ra   rb   rb   rg   )rd   r_   r`   )r'   r   r   T)Zobserved)	r   r   r!   ZCategoricalri   rj   rQ   r   r,   )rk   Zexpected_gdf_observed_falseZexpected_gdf_observed_truer   r   r   test_dissolve_categorical   sF    	rs   c                  C   s   t g dt jg dd} t dtjgt jddgdd}t dgt jdgdd}t|| jddd	 t|| d d S )
N)r'   r'   Nrm   rf   g      ?rd   r_   ra   F)Zdropna)	r   r   ri   rj   r?   nanrQ   r   r,   )rk   Zexpected_with_naZexpected_no_nar   r   r   test_dissolve_dropna*  s2    	ru   c                 C   sT   t jdd}|   W d    n1 s*0    Y  |D ]}dt|jvs8J q8d S )NTrecordzdropna kwarg is not supported)rF   rG   r,   strmessage)r   rw   rr   r   r   test_dissolve_dropna_warnG  s    &r{   c                 C   s   ddg|d< ddg|d< ddg|d< t jdd	(}| jd
ddgddd}W d    n1 s^0    Y  t|| t|dksJ d S )Nr   r'   )r   minr   r   )r   max)r
   countTrv   r   r|   r}   r~   )r   r
   )rU   r9   r   )rF   rG   r,   r   len)r   r%   rw   r.   r   r   r   test_dissolve_multi_aggP  s    $
r   ))rF   numpyr?   Zpandasr!   r   r   r   Zpandas.testingr   r@   Zgeopandas._compatr   r   Zgeopandas.testingr   r   Zfixturer   r%   r*   r+   r/   r3   r4   r6   rC   markZskipifrI   rP   rS   rT   rZ   r[   rl   ro   rs   ru   r{   r   r   r   r   r   <module>   sD   




.0	