a
    1$eb                     @   s  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m	Z	m
Z
 d dlmZmZmZmZmZ d dlmZmZmZmZ d dlmZ 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 ej!dde"ddiddddddgg d d!d"d# Z#ej!d$d%e"d%dd&d'd(d)d*d+dd,gg d d!d-d. Z$ej%&d/ej%&d0d1d2 Z'd3d4 Z(d5d6 Z)G d7d8 d8Z*G d9d: d:Z+dS )<    N)PointPolygon
LineString)	GeoSeriesGeoDataFramepoints_from_xydatasets	read_file)from_shapelyfrom_wkbfrom_wktGeometryArray)assert_geodataframe_equalc                 C   s>   |p| }t | } t |}tt| || | | | d|dS )N)geometryZvalue1value2crs)npZasarrayr   r   xyr    r   T/var/www/html/django/DPS/env/lib/python3.9/site-packages/geopandas/tests/test_crs.py
_create_df   s    

r   c                   C   s   t tdddtdddddS )NNiN   sf i}f 
epsg:26918r   )r   ranger   r   r   r   df_epsg26918   s
    

r   c                  C   s0   t  } | jdd}|jdd}t| |dd d S )N  epsg&i  Tcheck_less_preciser   to_crsr   dflonlatutmr   r   r   test_to_crs_transform#   s    r,   c                  C   s:   t  } d | jd< | jdd}|jdd}t| |dd d S )N)   r   r    r!   r#   Tr$   )r   locr'   r   r(   r   r   r   #test_to_crs_transform__missing_data*   s
    
r/   c                  C   s:   t  jd d } | jdd}|jdd}t| |dd d S )Nr   r    r!   r#   Tr$   )r   ilocr'   r   r(   r   r   r   !test_to_crs_transform__empty_data3   s    r1   c                  C   s2   t  } | jdd}| jddd t| |dd d S )Nr    r!   T)r"   inplacer$   r&   )r)   r*   r   r   r   test_to_crs_inplace:   s    r3   c                  C   sn   t  } | jddid} | jddd | jdd}|jdd}|jjdksLJ |jjdks\J t| |dd	 d S )
Nr   geomcolumnsT)r2   r    r!   r#   r$   )r   renameset_geometryr'   r   namer   r(   r   r   r   test_to_crs_geo_column_nameA   s    r:   c                  C   sH   t ddgddgddgdd} | j s*J | jdd}|j sDJ d S )	Nr      r-      r    r     r!   )r   has_zallr'   )arrresultr   r   r   test_to_crs_dimension_zM   s    rB   c                  C   s   t tddtddggdd} | jdd}|d	 jr8J |j d
dgksNJ |jdd}t|| D ].\}}tj	j
|jd d  |jd d  dd qdd S )Nr   r;   )r   r;   r-   )r<         i  r   r    r!   r   FTg{Gz?)Zatol)r   r   r   r'   Zis_emptyr>   tolistzipr   testingZassert_allcloseZcoords)srA   Z	roundtripabr   r   r   test_to_crs_dimension_mixedU   s    rK   r    	epsg:4326initz0+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defsZlatlongZWGS84T)projZellpsdatumno_defs)Zepsg_numberZepsg_stringZ	epsg_dictZproj4_stringZ
proj4_dict)paramsidsc                 C   s    t | jtrd| jiS d| jiS Nr"   r   
isinstanceparamintrequestr   r   r   epsg4326e   s    
rZ   r#   r   )rM   rP   z?+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83 +units=m +no_defs r+      ZNAD83m)rN   zonerO   ZunitsrP   c                 C   s    t | jtrd| jiS d| jiS rS   rT   rX   r   r   r   	epsg26918w   s    
r^   z!ignore:'\+init:DeprecationWarningzignore:'\+init:FutureWarningc                 C   sF   t jd t }|jf i | }|jf i |}t||ddd d S )NFT)r%   Z	check_crs)pyprojnetworkZset_network_enabledr   r'   r   )rZ   r^   r)   r*   r+   r   r   r   test_transform2   s
    ra   c                  C   sD   t tddgdd} | d}t tddgdd}t||dd	 d S )
Nr   r   r   r   r   rL   gP	[gFNGK@Tr$   )r   r   r'   r   )r)   r*   Ztest_lonlatr   r   r   test_crs_axis_order__always_xy   s    
rc   c                  C   s$   t  } | | j}t| |dd d S )NTr$   )r   r'   r   r   )r)   r+   r   r   r   test_skip_exact_same   s    rd   c                   @   sd  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deddeddggdd Ze
j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d-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!e
jd9d:g d;ffd<d=d>d?gd@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'dLdM Z(dNdO Z)dS )PTestGeometryArrayCRSc                 C   sV   t d| _t d| _tddtddg| _dd tdD | _t| jdd| _	d S )	N4l  r    r   r   c                 S   s"   g | ]}t d d tdD qS )c                 S   s   g | ]}t   t   fqS r   random.0ir   r   r   
<listcomp>       z@TestGeometryArrayCRS.setup_method.<locals>.<listcomp>.<listcomp>r-   )r   r   )rj   _r   r   r   rl      s   z5TestGeometryArrayCRS.setup_method.<locals>.<listcomp>
   r   )
r_   CRSosgbwgsr   geomsr   Zpolysr
   r@   )selfr   r   r   setup_method   s    z!TestGeometryArrayCRS.setup_methodc                 C   sv   t | j}d|_|j| jks J t | jdd}|j| jks>J t|}|j| jksVJ t|dd}|j| jksrJ d S Nrf   r   r    )r
   rs   r   rq   r   rr   rt   r@   r   r   r   
test_array   s    
zTestGeometryArrayCRS.test_arrayc                 C   sF  t dd}|j| jksJ |jj| jks,J t| j}t |dd}|j| jksRJ |jj| jksdJ d|_|j| jkszJ |jj| jksJ t | jdd}|j| jksJ |jj| jksJ t| jdd}t |}|j| jksJ |jj| jksJ tjt	dd t |dd}W d    n1 s&0    Y  |j| jksBJ d S )Nrf   r   r    ;CRS mismatch between CRS of the passed geometries and 'crs'match)
r   r   rq   valuesr
   rs   rr   pytestraises
ValueError)rt   rH   r@   r   r   r   test_series   s.    

,z TestGeometryArrayCRS.test_seriesc                 C   s  t | jdd}t|d}|j| jks(J |jj| jks:J |jjj| jksNJ t | j}t|dd}t|d}|j| jks~J |jj| jksJ |jjj| jksJ d}tj	t
|d t|dd}W d    n1 s0    Y  tj	t
|d t|dd W d    n1 s0    Y  tj	t
|d& tdd	g|d
dd W d    n1 sZ0    Y  tj	t
|d t|ddj W d    n1 s0    Y  t | j}t|dd}t|d}d|_|j| jksJ |jj| jksJ |jjj| jksJ tj	t
dd" t| jdgdd W d    n1 s<0    Y  tj	t
dd tdd W d    n1 sv0    Y  t| jdgd}|jddd}|j| jksJ |jj| jksJ |jjj| jksJ |jj| jksJ |jjj| jksJ t| jdd}|j| jks$J |jj| jks8J |jjj| jksNJ t| jdd}|j| jdd}|j| jks~J |jj| jksJ |jjj| jksJ t | j}t|dd}t }||}|jdksJ |j| jksJ |jj| jksJ |jjj| jksJ t | jdd}t }||}|j| jksJJ |jj| jks^J |jjj| jkstJ t | j}tdd	g|ddd}|j| jksJ |jj| jksJ |jjj| jksJ t | jdd}tdd	g|d}|j| jksJ |jj| jksJ |jjj| jks,J tdddgi}tj	t
dd d|_W d    n1 sh0    Y  tdtddgijdgd}tj	t
dd d|_W d    n1 s0    Y  tj	tdd" |j| jksJ W d    n1 s0    Y  d S )Nrf   r   r   ry   rz   r    rb   r   r;   )datar   'Assigning CRS to a GeoDataFrame withoutr4   )r6   r   r5   r   col1r   r   z2Assigning CRS to a GeoDataFrame without a geometryz:Assigning CRS to a GeoDataFrame without an active geometry5The CRS attribute of a GeoDataFrame without an active)r
   rs   r   r   rq   r   r|   r   r}   r~   r   rr   r8   r4   Z_geometry_column_namer   ZassignAttributeError)rt   r@   r)   rH   Z	match_strr   r   r   test_dataframe   s    


*,6.

2*



&&z#TestGeometryArrayCRS.test_dataframec                 C   sp   t dtdi| jd}|jj|d< |ddg }tjtdd  |j| j	ksNJ W d    n1 sb0    Y  d S )Ncolro   r   geom2r   rz   )
r   r   r@   r   centroidr}   r~   r   r   rq   )rt   r)   Zsubsetr   r   r   .test_dataframe_getitem_without_geometry_columnN  s    zCTestGeometryArrayCRS.test_dataframe_getitem_without_geometry_columnc                 C   s  t | j}t|dd}t }tjtdd ||d< W d    n1 sH0    Y  |j| jksbJ |j	j| jkstJ |j	j
j| jksJ t | jdd}t }tjtdd ||d< W d    n1 s0    Y  |j| jksJ |j	j| jksJ |j	j
j| jks
J t | j}tddg|dd	d}|d d|d< |j| jksNJ |j	j| jksbJ |j	j
j| jksxJ t | j}tddg||d
d	d}t | jdd|d< |j| jksJ |j	j| jksJ |d j| jksJ |d j| jksJ d S )Nrf   r   (You are adding a column named 'geometry'rz   r   r   r;   r   r    )r   r   
other_geomr   )r
   rs   r   r   r}   warnsFutureWarningr   rq   r   r|   r'   rr   rt   r@   rH   r)   r   r   r   test_dataframe_setitemX  sD    
&&

z+TestGeometryArrayCRS.test_dataframe_setitemc                 C   sn   t | j}tddg|ddd}tt d|d< W d    n1 sH0    Y  | j|d< |jd u sjJ d S )Nr   r;   r   r    r   r   )r
   rs   r   r}   r   UserWarningr   )rt   r@   r)   r   r   r   .test_dataframe_setitem_without_geometry_column  s    
&
zCTestGeometryArrayCRS.test_dataframe_setitem_without_geometry_columnscalarNr   )r   r   )r   r   c                 C   s|   t  }tjtdd ||d< W d    n1 s20    Y  d|_|j| jksRJ |jj| jksdJ |jjj| jksxJ d S )Nr   rz   r   r    )r   r}   r   r   r   rr   r   r|   )rt   r   r)   r   r   r   test_scalar  s    &z TestGeometryArrayCRS.test_scalarzignore:Accessing CRSc                 C   s>   t jtdd t }d|_W d    n1 s00    Y  d S )Nr   rz   r    )r}   r~   r   r   r   )rt   r)   r   r   r   test_crs_with_no_geom_fails  s    z0TestGeometryArrayCRS.test_crs_with_no_geom_failsc                 C   sX   t d}t|}|jtdks&J |jjtdks<J |jjjtdksTJ d S )NZnybbi  )r   get_pathr	   r   r_   rp   r   r|   )rt   Znybb_filenamer)   r   r   r   test_read_file  s
    
z#TestGeometryArrayCRS.test_read_filec                 C   s   t | jdd}t| jdd}t||dgd}|j| jks<J |jj| jksNJ |jjj| jksbJ |jj| j	kstJ |jjj| j	ksJ d S Nrf   r   r    r   r   r6   )
r
   rs   r   r   r   rq   r   r|   r   rr   r   r   r   r   test_multiple_geoms  s    z(TestGeometryArrayCRS.test_multiple_geomsc                 C   s   t | jdd}t| jdd}t||dgd}|d}|j| jksFJ |jj| jksXJ |jjj| jkslJ |d j| j	ksJ |d jj| j	ksJ d S )Nrf   r   r    r   r   r   )
r
   rs   r   r   r8   r   rr   r   r|   rq   r   r   r   r   test_multiple_geoms_set_geom  s    
z1TestGeometryArrayCRS.test_multiple_geoms_set_geomc                 C   s   t | jdd}t| jdd}t||dgd}||d< |j|d< t | j|d< |j| jks\J |jj| jksnJ |jjj| jksJ |jj| j	ksJ |jjj| j	ksJ |j
j| j	ksJ |j
jj| j	ksJ |jjd u sJ |jjjd u sJ d S )	Nrf   r   r    r   r   r   geom3geom4)r
   rs   r   r   r|   r   rq   r   r   rr   r   r   r   r   r   r   test_assign_cols  s    
z%TestGeometryArrayCRS.test_assign_colsc                 C   s   t | jdd}t| jdd}t||dgd}| }|j|jksDJ | }|j|jks\J |jj|jjkspJ | }|j|jksJ |jj|jjksJ |jjj|jjjksJ |jj|jjksJ |jjj|jjjksJ d S r   )	r
   rs   r   r   copyr   r|   r   r   )rt   r@   rH   r)   Zarr_copyZs_copyZdf_copyr   r   r   	test_copy  s    zTestGeometryArrayCRS.test_copyc                 C   s   t | jdd}t| jdd}t||dgd}|jddidd}|j| jksRJ |jj| jksdJ |jj	j| jksxJ |
d	}|j| jksJ |jj| jksJ |jj	j| jksJ |jdd
id}|jj| jksJ |jj	j| jksJ d S )Nrf   r   r    r   r   r   r4   r5   r   column1)r
   rs   r   r   r7   r8   r   rq   r   r|   rename_geometryr   rr   r   r   r   r   test_rename  s    
z TestGeometryArrayCRS.test_renamec                 C   s   t | jdd}|d}|j| jks(J |jj| jks:J t|d}|j| jksTJ |d}|j| jksnJ |jj| jksJ |jjj| jksJ t	| jdd}||d< |d}|j
j| jksJ |j
jj| jksJ d S )Nrf   r   r    r   r   r=   )r   rs   r'   r   rr   r|   r   rq   r   r
   r   )rt   rH   r)   r@   r   r   r   test_geoseries_to_crs  s    



z*TestGeometryArrayCRS.test_geoseries_to_crsc                 C   s,   t | jdd}|d}|j| jks(J d S rv   )r
   rs   r'   r   rr   rw   r   r   r   test_array_to_crs  s    
z&TestGeometryArrayCRS.test_array_to_crsc                 C   s"   t | jdd}|j| jksJ d S Nrf   r   )r
   rs   r   rq   rw   r   r   r   test_from_shapely  s    z&TestGeometryArrayCRS.test_from_shapelyc                 C   s0   dd | j D }t|dd}|j| jks,J d S )Nc                 S   s   g | ]
}|j qS r   )Zwkbrj   pr   r   r   rl     rm   z6TestGeometryArrayCRS.test_from_wkb.<locals>.<listcomp>rf   r   )rs   r   r   rq   )rt   ZL_wkbr@   r   r   r   test_from_wkb  s    z"TestGeometryArrayCRS.test_from_wkbc                 C   s0   dd | j D }t|dd}|j| jks,J d S )Nc                 S   s   g | ]
}|j qS r   )Zwktr   r   r   r   rl     rm   z6TestGeometryArrayCRS.test_from_wkt.<locals>.<listcomp>rf   r   )rs   r   r   rq   )rt   ZL_wktr@   r   r   r   test_from_wkt  s    z"TestGeometryArrayCRS.test_from_wktc                 C   sB   t dd tdD }t|d |d dd}|j| jks>J d S )Nc                 S   s   g | ]}|||d qS ))r   r   zr   )rj   r   r   r   r   rl     rm   z<TestGeometryArrayCRS.test_points_from_xy.<locals>.<listcomp>ro   r   r   rf   r   )pdZ	DataFramer   r   r   rq   )rt   r)   r@   r   r   r   test_points_from_xy  s    z(TestGeometryArrayCRS.test_points_from_xyc                 C   s8   t | j}t|dd}|jd u s$J |j| jks4J d S r   )r
   rs   r   r   rq   )rt   r@   rH   r   r   r   test_original!  s    
z"TestGeometryArrayCRS.test_originalc                 C   s   | j }|j}|j| jksJ |j}|j| jks2J |j}|j| jksHJ |j}|j| jks^J |j}|j| jkstJ | }|j| jksJ d S N)	r@   boundaryr   rq   r   Zconvex_hullenvelopeexteriorrepresentative_point)rt   r@   boundcentZhullr   r   r   r   r   r   test_ops'  s    zTestGeometryArrayCRS.test_opsc           	      C   s   | j }g }t|dk r>tdd tdD }|jr
|| q
t|dd}||}|j| j	ksdJ |
|}|j| j	ks~J ||}|j| j	ksJ ||}|j| j	ksJ d S )Nro   c                 S   s   g | ]}t   t   fqS r   rg   ri   r   r   r   rl   ?  rm   z8TestGeometryArrayCRS.test_binary_ops.<locals>.<listcomp>r<   rf   r   )r@   lenr   r   is_validappendr
   
differencer   rq   intersectionsymmetric_differenceunion)	rt   r@   Zquadsr4   Zarr2r   r   r   r   r   r   r   test_binary_ops;  s    



z$TestGeometryArrayCRS.test_binary_opsc                 C   sZ   | j }|d}|j| jks J |jd}|j| jks<J |d}|j| jksVJ d S )NrC   g?)r@   bufferr   rq   r   interpolatesimplify)rt   r@   r   r   r   r   r   r   
test_otherQ  s    

zTestGeometryArrayCRS.test_otherz	attr, argZaffine_transform)r   r   r   r   r   r   )	translater   )rotate)ro   )scaler   )Zskewr   c                 C   s$   t | j|| }|j| jks J d S r   )getattrr@   r   rq   )rt   attrargrA   r   r   r   test_affinity_methods]  s    z*TestGeometryArrayCRS.test_affinity_methodsc                 C   s|   t | jdd}|jdd  jj| jks*J td| ji|d}|jdd  jjj| jksZJ |jdd  jjj| jksxJ d S )Nrf   r   r   r   r   )	r   r@   r0   r|   r   rq   r   r   r   rt   rH   r)   r   r   r   
test_slicel  s
    zTestGeometryArrayCRS.test_slicec                 C   s   t | jdd}t||gjj| jks*J tdt| j	ddi|d}t||gj
jj| jksbJ t||gjjj| jksJ d S )Nrf   r   r   r    r   )r   r@   r   concatr|   r   rq   r   r
   rs   r   r   rr   r   r   r   r   test_concatt  s
    z TestGeometryArrayCRS.test_concatc                 C   s   t | jdd}t| jdd}td|i|d}td|i|dd}|j|ddd	}|jjj| j	ksfJ |j
jj| jkszJ |jjj| j	ksJ |jjj| jksJ |j| jksJ d S )
Nrf   r   r    r   r   col2r4   T)Z
left_indexZright_index)r
   rs   r   r   r   merger   r|   r   rr   r   rq   r   r4   )rt   r@   rH   r)   df2mergedr   r   r   
test_merge|  s    zTestGeometryArrayCRS.test_mergec                 C   s   t | jdd}tdddgi|d}t|j|d< |jjj| jksDJ tdddgi|d}t | jdd|d< |jjj| jks~J d S )	Nrf   r   r   r   r   r   r   r    )	r
   rs   r   listr   r|   r   rq   rr   rt   r@   r)   r   r   r   r   test_setitem_geometry  s    z*TestGeometryArrayCRS.test_setitem_geometryc                 C   sD   t | jdd}tdddgi|d}|dti}|j| jks@J d S )Nrf   r   r   r   r   r   )r
   rs   r   Zastypestrr   rq   r   r   r   r   test_astype  s    z TestGeometryArrayCRS.test_astypec                 C   s8   t | j}|jdksJ |dd }|jdks4J d S )Nrf   c                 S   s   | j S r   )r   )r   r   r   r   <lambda>  rm   z1TestGeometryArrayCRS.test_apply.<locals>.<lambda>)r   r@   r   apply)rt   rH   rA   r   r   r   
test_apply  s    
zTestGeometryArrayCRS.test_applyc                 C   sj   t dddgi| jdd}|jdks&J |jdd dd}|jdksFJ |jd	d dd}|jdksfJ d S )
Nr   r   r   rf   rb   c                 S   s   | S r   r   )r   r   r   r   r     rm   z>TestGeometryArrayCRS.test_apply_geodataframe.<locals>.<lambda>)Zaxisc                 S   s   | S r   r   )rowr   r   r   r     rm   )r   rs   r   r   )rt   r)   rA   r   r   r   test_apply_geodataframe  s    z,TestGeometryArrayCRS.test_apply_geodataframe)*__name__
__module____qualname__ru   rx   r   r   r   r   r   r}   markparametrizer   r   r   filterwarningsr   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   re      s\   l
*





re   c                   @   s6   e Zd Zejjddd dd gddgddd	 Zd
S )
TestSetCRSconstructorc                 C   s   t | |dS )Nr   )r   rs   r   r   r   r   r     rm   zTestSetCRS.<lambda>c                 C   s   t | |dS )Nrb   )r   r   r   r   r   r     rm   Z	geoseriesZgeodataframe)rR   c                 C   s  |t ddt ddgd d}|jd u s*J |jdd}|jdksDJ |jd u sRJ |jdd}|jdkslJ |jd u szJ |jddd}||u sJ |j|j  krdksn J |t ddt ddgdd}|jdksJ tjtd	d
 |d W d    n1 s0    Y  |d}|jdks0J |jddd}|jdksNJ |jdks^J |jdddd}|jdks~J |jdksJ tt |jd d d W d    n1 s0    Y  d S )Nr   r   r   z	EPSG:4326r    r!   T)r   r2   zalready has a CRSrz   z	EPSG:3857)allow_override)r   r2   )r   r"   )r   r   Zset_crsr}   r~   r   )rt   r   ZnaiverA   Z	non_naiver   r   r   test_set_crs  s2    	*
zTestSetCRS.test_set_crsN)r   r   r   r}   r   r   r   r   r   r   r   r     s   r   )NN),rh   numpyr   Zpandasr   r_   r}   Zshapely.geometryr   r   r   Z	geopandasr   r   r   r   r	   Zgeopandas.arrayr
   r   r   r   Zgeopandas.testingr   r   r   r,   r/   r1   r3   r:   rB   rK   ZfixturerV   rZ   r^   r   r   ra   rc   rd   re   r   r   r   r   r   <module>   sh   

		
	


	    