a
    1$eS                     @   sP  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlZd dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZm Z  d dl!m"Z" d d	l#m$Z$m%Z% d d
l&m'Z'm(Z( d dl)m*Z* d dlm+Z+ d dl,Z,G dd dZ-e,j./ddd Z0dd Z1dd Z2dd Z3G dd dZ4dS )    N)assert_array_equal)assert_index_equal)CRS)GeometryCollection
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)BaseGeometry)	GeoSeriesGeoDataFrame	read_filedatasetsclip)ignore_shapely2_warnings)GeometryArrayGeometryDtype)assert_geoseries_equalgeom_almost_equals)geom_equals)assert_series_equalc                   @   sT  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
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d'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%e&j'j(dGdH Z)dIdJ Z*dKdL Z+dMdN Z,dOdP Z-dQS )R
TestSeriesc                 C   s>  t  | _tg d| _tg d| _tg d| _t| j| jg| _t| j| jg| _	t| j| jg| _
d| j
_t| j| jg| _t| j| jt g| _t| j| jd g| _| j | _ddg| j_| j	 | _ddg| j_tdd	| _td
d| _t| j| jgdd| _tg d| _tg d| _t| j| jg| _d S )N)r   r      r   r   r   )r   r   r   r   r   r   r   r   	epsg:4326ABCg&SRg):_D@gYڂRg ~:XD@crs)r   r   r   )tempfilemkdtemptempdirr   t1t2sqr   g1g2g3r%   g4nana_nonecopya1indexa2r
   ZesbZsol	landmarksr   l1l2Zg5self r;   Z/var/www/html/django/DPS/env/lib/python3.9/site-packages/geopandas/tests/test_geoseries.pysetup_method%   s*    
zTestSeries.setup_methodc                 C   s   t | j d S N)shutilrmtreer(   r9   r;   r;   r<   teardown_method<   s    zTestSeries.teardown_methodc                 C   sB   | j  }t|tu sJ | j j|jks,J | j j|jks>J d S r>   )r.   r2   typer   namer%   )r:   gcr;   r;   r<   	test_copy?   s    
zTestSeries.test_copyc                 C   sb   | j | jv sJ | j| jv s J | j | jv s0J | j| jv s@J | j| jvsPJ d| jvs^J d S )N   )r)   r,   r+   r3   r*   r.   r9   r;   r;   r<   test_inE   s    zTestSeries.test_inc                 C   sh   | j | j\}}t|ts J t|ts.J |d d u s>J |d |d sTJ |d d u sdJ d S )Nr!   r"   r#   )r3   alignr5   
isinstancer   equals)r:   r3   r5   r;   r;   r<   
test_alignM   s    zTestSeries.test_alignc                 C   sv   | j }d|_| j}d|_||\}}|jdks4J |jdksBJ d |_||\}}|jdksdJ |jd u srJ d S )Nr    z
epsg:31370)r3   r%   r5   rH   )r:   r3   r5   res1res2r;   r;   r<   test_align_crsU   s    zTestSeries.test_align_crsc                 C   sR   | j }tjddgddgd}||\}}tjtjddgg dd}t|| d S )Nr      r"   r#   r4   r!   r"   r#   )r3   pdSeriesrH   npnanr   )r:   r3   s2rL   rM   Zexp2r;   r;   r<   test_align_mixedd   s
    zTestSeries.test_align_mixedc                 C   s|   t jtdd | j| j W d    n1 s20    Y  t jtdd | j| j W d    n1 sn0    Y  d S )NThe indices .+ differentmatch)pytestwarnsUserWarningr3   containsr5   unionr9   r;   r;   r<   test_warning_if_not_alignedl   s    ,z&TestSeries.test_warning_if_not_alignedc                 C   s   | j | j\}}tjdd@}|| | j| j |	| | j
| j W d    n1 sd0    Y  dd |D }|rJ |d jd S )NTrecordc                 S   s   g | ]}|j tu r|qS r;   )categoryr]   ).0wr;   r;   r<   
<listcomp>       z9TestSeries.test_no_warning_if_aligned.<locals>.<listcomp>r   )r3   rH   r5   warningscatch_warningsr^   r,   Z
intersectsr-   r_   intersectionmessage)r:   r3   r5   rb   Zuser_warningsr;   r;   r<   test_no_warning_if_alignedx   s    

,z%TestSeries.test_no_warning_if_alignedc                 C   s4   t | j| jsJ t| j| jddg d S )NFT)rT   allr,   r   r   r+   r9   r;   r;   r<   test_geom_equals   s    zTestSeries.test_geom_equalsc                 C   s   t jtdd" | jj| jdd}W d    n1 s60    Y  tjg dg dd}t|| | jj| jdd}tjddgd	d
gd}t|| d S )NrX   rY   TrH   FTFrQ   rP   Fr!   r"   )	r[   r\   r]   r3   r   r5   rR   rS   r   )r:   aexpr;   r;   r<   test_geom_equals_align   s    0
z!TestSeries.test_geom_equals_alignc                 C   s   t jttddx t| j| js.J t	| j| j
ddg t	| jj| jddg d t	| jj| jddddg W d    n1 s0    Y  d S )NzThe 'geom_almost_equals()'rY   FTro   rp   )r[   r\   FutureWarningreescaperT   rm   r,   r   r   r+   r3   r5   r9   r;   r;   r<   test_geom_almost_equals   s    z"TestSeries.test_geom_almost_equalsc                 C   st   t | j| jdsJ t| j| jdddg t| jj| jdddg d t| jj| jdddddg d S )NgMbP?FTro   rp   )rT   rm   r,   Zgeom_equals_exactr   r+   r3   r5   r9   r;   r;   r<   test_geom_equals_exact   s    z!TestSeries.test_geom_equals_exactc                 C   s@   t dd tdD }|tddk}tg d}t|| d S )Nc                 S   s   g | ]}t ||qS r;   r
   rd   xr;   r;   r<   rf      rg   z1TestSeries.test_equal_comp_op.<locals>.<listcomp>   r   rp   )r   ranger
   rR   rS   r   )r:   sresrr   r;   r;   r<   test_equal_comp_op   s    zTestSeries.test_equal_comp_opc                 C   s>   t j| jd}| j| t|}t| j	|s:J dS )zTest to_file and from_fileztest.shpN)
ospathjoinr(   r.   Zto_filer   	from_filerm   r   )r:   Ztempfilenamer~   r;   r;   r<   test_to_file   s    
zTestSeries.test_to_filec                 C   s   | j  }t| dS )zW
        Test whether GeoSeries.to_json works and returns an actual json file.
        N)r.   to_jsonjsonloads)r:   Zjson_strr;   r;   r<   test_to_json   s    
zTestSeries.test_to_jsonc                 C   st   t | j| j sJ t | j| j s8J t | j| j sTJ t | j| j spJ d S r>   )rT   rm   r,   r^   Zrepresentative_pointr-   r.   r/   r9   r;   r;   r<   test_representative_point   s    z$TestSeries.test_representative_pointc                 C   s   | j jdd}|jdd}t| j |s*J tt | jjdd W d    n1 sX0    Y  tt  | j jd d d W d    n1 s0    Y  d S )Ni&i  epsg  )r%   r   )r6   to_crsr   r[   raises
ValueErrorr,   )r:   Zutm18nZlonlatr;   r;   r<   test_transform   s    ,zTestSeries.test_transformc                 C   s2   | j  tdksJ | j dtdks.J d S )N
EPSG:32618ZNAD83z
EPSG:26918)r6   estimate_utm_crsr   r9   r;   r;   r<   !test_estimate_utm_crs__geographic   s    z,TestSeries.test_estimate_utm_crs__geographicc                 C   s    | j d tdksJ d S )Nz	EPSG:3857r   )r6   r   r   r   r9   r;   r;   r<    test_estimate_utm_crs__projected   s    z+TestSeries.test_estimate_utm_crs__projectedc                 C   sL   t jtdd* ttg dgdd  W d    n1 s>0    Y  d S )NzUnable to determine UTM CRSrY   )r   Z   )r   r   )rO   r   z	EPSG:4326r$   r[   r   RuntimeErrorr   r   r   r9   r;   r;   r<   $test_estimate_utm_crs__out_of_bounds   s    z/TestSeries.test_estimate_utm_crs__out_of_boundsc                 C   sH   t jtdd& ttg dg  W d    n1 s:0    Y  d S )Nzcrs must be setrY   r   r   r9   r;   r;   r<   "test_estimate_utm_crs__missing_crs   s    z-TestSeries.test_estimate_utm_crs__missing_crsc                 C   sN   | j  }t|d tsJ |d js*J t| j d d |d d sJJ d S )NrO   )r1   fillnarI   r   is_emptyr   )r:   r0   r;   r;   r<   test_fillna   s    
zTestSeries.test_fillnac                 C   s   t | j| jjddddf s$J t | jddg | jjddddf sPJ t | jddg | jjddddf s|J dS )zTest CoordinateSlicerNTF?皙?r   g      ?)r   r.   cxr9   r;   r;   r<   test_coord_slice   s    $,zTestSeries.test_coord_slicec                 C   s  t dd tddD }t|jd dd df |jd d sBJ t|jd d d df |jd d slJ t|jd dd d f |jd d sJ t|jdd dd f |jdd  sJ t|jdd d d f |jdd  sJ t|jd d dd f |jdd  sJ d S )Nc                 S   s   g | ]}t ||qS r;   ry   rz   r;   r;   r<   rf      rg   z9TestSeries.test_coord_slice_with_zero.<locals>.<listcomp>   r   r|   )r   r}   r   r   loc)r:   gsr;   r;   r<   test_coord_slice_with_zero   s    *****z%TestSeries.test_coord_slice_with_zeroc                 C   s8   | j jd dksJ t| j jd | j jd ks4J d S )NrB   ZFeatureCollectionfeaturesr   )r,   Z__geo_interface__lenshaper9   r;   r;   r<   test_geoseries_geointerface  s    z&TestSeries.test_geoseries_geointerfacec                 C   s   | j d}|jdd}t| j |s(J | j ddd}|jdd}t| j |sVJ | j  }d|_|ddd}|jdd}t| j |sJ | j d}| j ddd}t||sJ d S )Nz+proj=utm +zone=30r   r   ZutmZ30)Zprojzoner    )r.   r   r   r2   r%   )r:   ZreprojectedZreprojected_backr2   Zreprojected_stringZreprojected_dictr;   r;   r<   test_proj4strings  s    
zTestSeries.test_proj4stringsc                 C   s"   t | jt| jj| jjg d S r>   )r   r,   r   from_wkbr)   wkbr+   r9   r;   r;   r<   test_from_wkb  s    zTestSeries.test_from_wkbc                 C   sL   t j| jj| jjgddgd}| j }t ddg|_t	|t
| d S Nr   rO   rP   )rR   rS   r)   r   r+   r,   r2   Indexr4   r   r   r   r:   r~   expectedr;   r;   r<   test_from_wkb_series  s    
zTestSeries.test_from_wkb_seriesc                 C   sH   dg}t j| jj| jjgddgd}| j|}t|tj	||d d S Nr   rO   rP   )
rR   rS   r)   r   r+   r,   reindexr   r   r   r:   r4   r~   r   r;   r;   r<   test_from_wkb_series_with_index%  s    z*TestSeries.test_from_wkb_series_with_indexc                 C   s"   t | jt| jj| jjg d S r>   )r   r,   r   from_wktr)   wktr+   r9   r;   r;   r<   test_from_wkt+  s    zTestSeries.test_from_wktc                 C   sL   t j| jj| jjgddgd}| j }t ddg|_t	|t
| d S r   )rR   rS   r)   r   r+   r,   r2   r   r4   r   r   r   r   r;   r;   r<   test_from_wkt_series.  s    
zTestSeries.test_from_wkt_seriesc                 C   sH   dg}t j| jj| jjgddgd}| j|}t|tj	||d d S r   )
rR   rS   r)   r   r+   r,   r   r   r   r   r   r;   r;   r<   test_from_wkt_series_with_index4  s    z*TestSeries.test_from_wkt_series_with_indexc                 C   sL   t t| jj| jjg| j  t t| jj| jjg| jjdd d S )NT)hex)	r   rR   rS   r)   r   r+   r,   Zto_wkbZwkb_hexr9   r;   r;   r<   test_to_wkb:  s    " zTestSeries.test_to_wkbc                 C   s&   t t| jj| jjg| j  d S r>   )r   rR   rS   r)   r   r+   r,   Zto_wktr9   r;   r;   r<   test_to_wkt@  s    zTestSeries.test_to_wktc                 C   sR   t td}t td}||d dk }t|j|}|j|}t|| d S )NZnaturalearth_citiesZnaturalearth_lowresZ	continentzSouth America)r   r   get_pathr   geometryr   )r:   leftZworldZsouth_americar   resultr;   r;   r<   	test_clipC  s    zTestSeries.test_clipc                 C   sf   | j jj}| j jj}| j j }| j j}t| j tj	||||d t| j tj	| j j| j j|d d S )Nr4   r%   r$   )
r6   r{   valuesyr4   tolistr%   r   r   from_xy)r:   r{   r   r4   r%   r;   r;   r<   test_from_xy_pointsM  s    

zTestSeries.test_from_xy_pointsc                 C   s   g d}t jg d|d}t jg d|d}t jg d|d}ttdddtd	d
dtdddg|d}t|t||| d S )N)rF         )r   rO   rP   )   r|   r   )rF   r   r   r   rF   r   r|   r   rO   r   r   )rR   rS   r   r
   r   r   )r:   Zindex_valuesr{   r   zr   r;   r;   r<   test_from_xy_points_w_zZ  s    "z"TestSeries.test_from_xy_points_w_zc                 C   sx   | j j}| j j}tt| |_| j j}t| j t	j
|||j|d | j  }|jddd t|t	j
|||d d S )Nr   T)ZinplaceZdropr$   )r6   r{   r   rT   Zaranger   r4   r%   r   r   r   r2   reset_index)r:   r{   r   r%   Zunindexed_landmarksr;   r;   r<   !test_from_xy_points_unequal_indexd  s    
z,TestSeries.test_from_xy_points_unequal_indexc                 C   s^   t ddg}t ddg}t ddg}ttddd	td
ddg}t|t||| d S )Ng        g      @g       @g      @g      g      @r   rO   r   r|   rF   r   )rT   arrayr   r
   r   r   )r:   r{   r   r   r   r;   r;   r<   test_from_xy_points_indexlesss  s
    z(TestSeries.test_from_xy_points_indexlessN).__name__
__module____qualname__r=   rA   rE   rG   rK   rN   rW   r`   rl   rn   rs   rw   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r[   markZskip_no_sindexr   r   r   r   r   r;   r;   r;   r<   r   $   sR   
			
	
r   zignore::UserWarningc                  C   s   t tddd tjt t g} | d d u s.J | d d u s>J | d jsLJ | d jsZJ |   g dksrJ | j g dksJ | 	  g dksJ | 
   rJ |    rJ t|  dksJ d S )Nr   rO   r|   r   )FTTFF)FFFTT)TFFTT)r   r
   rT   rU   r   r   r   isnar   Znotnar   anyZdropnar   r~   r;   r;   r<   test_missing_values{  s    r   c                  C   s(   t g } |  }t|tjg dd d S )Nbooldtype)r   r   r   rR   rS   )r~   r   r;   r;   r<   test_isna_empty_geoseries  s    r   c                  C   s"   t  } d| _| j dksJ d S )NzIGNF:ETRS89UTM28)ZIGNFZETRS89UTM28)r   r%   Zto_authority)r   r;   r;   r<   test_geoseries_crs  s    r   c                 C   sB   t | tsJ t | jtsJ t | jts.J t | jts>J d S r>   )rI   r   r   r   r   r   r   r   r;   r;   r<   check_geoseries  s    r   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	e
jdg de
jdddgdd Ze
jdg de
jdddgdd Zdd Zdd ZdS )TestConstructorc                 C   s"   t dd tdD }t| d S )Nc                 S   s   g | ]}t ||qS r;   ry   rz   r;   r;   r<   rf     rg   z4TestConstructor.test_constructor.<locals>.<listcomp>r|   r   r}   r   r:   r~   r;   r;   r<   test_constructor  s    z TestConstructor.test_constructorc                 C   s   t dd}tg d}tg dg dg}tg d}tg dddgg}tg d	g d
g}t||g}||||||g}g d}	|D ]h}
t|
}t|dksJ |jd 	|
sJ t|
|	d}t|t|	ksJ |D ]}|	|
sJ qqd S )Nr   rO   ))rO   r|   )r   rF   rF   r   r   ))r   r   )r   r   )r   r   ))r   rO   )r|   r   r   )r   r   )	   
   )r   )r   r   )r   r   )r   r   ))皙r   )r         )r   r   )r   r   )rq   bcdr   rP   )
r
   r   r   r   r   r	   r   r   ZilocrJ   )r:   plineZpolympZmlineZpoly2ZmpolyZgeomsr4   gr   r{   r;   r;   r<   test_single_geom_constructor  s,    
z,TestConstructor.test_single_geom_constructorc                 C   s   t jtdd tg d W d    n1 s00    Y  t jtdd tg d W d    n1 sj0    Y  t jtdd$ tddgddgg W d    n1 s0    Y  d S )	N%Non geometry data passed to GeoSeriesrY   )TFT)rq   r   r   r   rO   r|   r   )r[   r   	TypeErrorr   r9   r;   r;   r<   test_non_geometry_raises  s    **z(TestConstructor.test_non_geometry_raisesc                 C   s"   t g }t| t  }t| d S r>   )r   r   r   r;   r;   r<   
test_empty  s    zTestConstructor.test_emptyc                 C   s   t tdd}t| d S )Nr|   rP   r   r   r;   r;   r<   test_data_is_none  s    z!TestConstructor.test_data_is_nonec              	   C   s   t jg ddt jg ddt jg ddfD ]:}tjtdd t| W d    q(1 sX0    Y  q(t jg ddt jg ddt jg d	dfD ]N}tjd
d}t|}W d    n1 s0    Y  |rJ t|tsJ qd S )Nr   r   int64float32r   rY   objectfloat64strTra   )	rT   r   r[   r   r   r   rh   ri   rI   )r:   Zarrrb   r~   r;   r;   r<   test_empty_array  s     (&z TestConstructor.test_empty_arrayc                 C   s   dd t dD }t $ tj|tddd}W d    n1 sB0    Y  t|}t| dd t||D stJ |j|jksJ |j	|j	u sJ d S )Nc                 S   s"   g | ]}t d d tdD qS )c                 S   s   g | ]}t   t   fqS r;   )randomrd   _r;   r;   r<   rf     rg   z?TestConstructor.test_from_series.<locals>.<listcomp>.<listcomp>r|   )r   r}   r  r;   r;   r<   rf      s   z4TestConstructor.test_from_series.<locals>.<listcomp>r   Z
abcdefghijZfoo)r4   rC   c                 S   s   g | ]\}}| |qS r;   )rJ   )rd   rq   r   r;   r;   r<   rf     rg   )
r}   r   rR   rS   listr   r   ziprC   r4   )r:   Zshapesr~   r   r;   r;   r<   test_from_series  s    2z TestConstructor.test_from_seriesrC   )Nr   ZPointsr%   Nr    c                 C   sv   t tddgtg dg||d}|jdd}| }t|tksFJ |jj|d urX|ndksbJ |j|jksrJ d S )Nr   r   )rO   rO   )r|   r|   )r   r   rC   r%   Tindex_partsr   )	r   r   exploder   rB   r   r   rC   r%   )r:   rC   r%   r~   dfr;   r;   r<   test_reset_index  s    z TestConstructor.test_reset_indexc                 C   s   t tddtddg||d}| }t|tks6J |d urB|nd}|jj|ksVJ |j|ksdJ |j|jkstJ |jdd}t|tksJ |jjdksJ |j|jksJ d S )Nr   r   r	  Zgeom)rC   )	r   r
   Zto_framerB   r   r   rC   Z_geometry_column_namer%   )r:   rC   r%   r~   r  Zexpected_nameZdf2r;   r;   r<   test_to_frame  s    zTestConstructor.test_to_framec                 C   sF   t tddgtg dg}|jdd}tg d}t|j| d S )Nr   r   r  Fr
  )r   r   r   r   r   )r   r   r  rR   r   r   r4   r:   r~   Zexpected_indexr;   r;   r<   test_explode_without_multiindex1  s    z/TestConstructor.test_explode_without_multiindexc                 C   sd   t tddgtg dg}|jdd}ttt|}t|j| |jddd}t|j| d S )Nr   r   r  T)ignore_index)r  r  )	r   r   r  rR   r   r}   r   r   r4   r  r;   r;   r<   test_explode_ignore_index9  s    z)TestConstructor.test_explode_ignore_index)r   r   r   r   r   r   r   r   r  r  r[   r   Zparametrizer  r  r  r  r;   r;   r;   r<   r     s   
r   )5r   r   r  ru   r?   r&   rh   numpyrT   Znumpy.testingr   ZpandasrR   Zpandas.testingr   Zpyprojr   Zshapely.geometryr   r   r   r   r	   r
   r   Zshapely.geometry.baser   Z	geopandasr   r   r   r   r   Zgeopandas._compatr   Zgeopandas.arrayr   r   Zgeopandas.testingr   r   Zgeopandas.tests.utilr   r   r[   r   r   filterwarningsr   r   r   r   r   r;   r;   r;   r<   <module>   s:   $	  Y

