a
    J5d<                     @   s  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 d dl	m
Z
 ddlmZmZmZmZmZmZ dd eD ZejejejejfZejejfejejfejejffZejejffZed d d	d	ed
d
ddedddded	d	ddgZdd eD Zej !deej !dedd Z"ej j#ej$dkddej !deej !dd dgdd Z%ej j#ej$dk ddej !dedd Z&ej j#ej$dk ddej !deej !deej !dg ddd Z'ej !d e(dd	ej !d!ed"d# Z)ej !d!ed$d% Z*ej !d!ed&d' Z+ej !d!ed(d) Z,ej !d*e(d+ej !d!ed,d- Z-ej !d*e(d+ej !d!ed.d/ Z.ej !d!ed0d1 Z/ej !d e(dd+ej !d!ed2d3 Z0ej !d e(dd+ej !d!ed4d5 Z1ej j#ej$dkddej !d!eej !dd dgd6d7 Z2ej j#ej$dk ddej !d!ed8d9 Z3ej j#ej$dk ddej !d!ed:d; Z4ej j#ej$dk ddej !d e(dd	ej !d!eej !dd dgd<d= Z5ej j#ej$dk ddej !d!ed>d? Z6ej j#ej$dk ddej !d*e(d+ej !d!ed@dA Z7ej j#ej$dk ddej !d*e(d+ej !d!edBdC Z8ej j#ej$dk ddej !d e(dd+ej !d!edDdE Z9ej j#ej$dFk dGdej !d e(dddHdI Z:ej j#ej$dFk dGddJdK Z;ej j#ej$dFk dGddLdM Z<ej j#ej$dFk dGdej !dNdOd eD dPd eD  dQdR Z=ej j#ej$dk ddej !dSedTdTd	d	ed dUdVdgd edWfedTdTd	d	ed dUdVdgdTedWfedTdTd	d	ed dUdVdgdeg dXfedTdTd	d	ed dUdVdgdeg dYfedTdTd	d	ed dUdVdgdZe fgd[d\ Z>ej j#ej$dk ddd]d^ Z?dS )_    N)GeometryGeometryCollectionPolygon)UnsupportedGEOSVersionError)assert_geometries_equal   )	all_typesemptygeometry_collectionmulti_polygonpointpolygonc                 C   s   g | ]}t |d ks|qS )   )shapelyZget_type_id).0g r   ]/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/tests/test_set_operations.py
<listcomp>       r         r      	   
   c                 C   s&   g | ]}t |s|ttfvr|qS r   )r   Zis_emptyr   r   )r   geomr   r   r   r   (   s   afuncc                 C   s|   |t jkr2|tkr2t jdkr2| jtjjdd ||t	}t
|tsJJ |||gt	}|jdksfJ t
|d tsxJ d S )N)      r   z*https://github.com/libgeos/geos/issues/797reasonr   r   )r   
differencer
   geos_versionnodeZ
add_markerpytestmarkZxfailr   
isinstancer   shape)requestr   r   actualr   r   r   test_set_operation_array/   s    
r,   )r   r   r   zGEOS >= 3.9r    	grid_sizec                 C   s>   t jtdd | tt| W d    n1 s00    Y  d S Nz*grid_size parameter requires GEOS >= 3.9.0matchr&   raisesr   r   )r   r-   r   r   r   &test_set_operations_prec_not_supportedB   s    r3   z
GEOS < 3.9c                 C   sB   t jtdd  | ttdgd W d    n1 s40    Y  d S Nz.grid_size parameter only accepts scalar valuesr/   r   r-   r&   r2   
ValueErrorr   )r   r   r   r   +test_set_operation_prec_nonscalar_grid_sizeL   s    r8   )r   r   r   c                 C   s   || | gt |d}|jdks J t|d ts2J tj| |d}tjt |d}|||g|}tt|t| s|J d S )Nr5   r"   r   )	r   r)   r(   r   r   Zset_precisionequals	normalizeall)r   r   r-   r+   bZpoint2expectedr   r   r   test_set_operation_prec_arrayU   s    r>   nzfunc, related_funcc                 C   sJ   |t d |  }t d }td| D ]}||t | }q"t||sFJ d S )Nr   r   reduce_test_dataranger   r9   )r?   r   related_funcr+   r=   ir   r   r   test_set_operation_reduce_1dimg   s
    rE   c                 C   s.   t dd}| |d d g}t ||s*J d S )Nr   )r   ZPointr9   )r   rC   r   r+   r   r   r   %test_set_operation_reduce_single_geomr   s    rF   c                 C   s|   t gd gd }| |d d}t|ts*J | |dd}|jdksDJ | |dd}|jdks^J | |dd}|jdksxJ d S )	Nr   r   axisr   r"   r   r   r   r(   r   r)   r   rC   datar+   r   r   r   test_set_operation_reduce_axisy   s    rN   c                 C   sr   | t jdtdtksJ t jdtd}| |tks8J | |dd tgd ksVJ | |dd g ksnJ d S )N)r   )Zdtype)r   r   r   rG   r   r   )npr	   objecttolist)r   rC   Zarr_empty_2Dr   r   r   test_set_operation_reduce_empty   s
    rR   none_positionr   c                 C   s@   t d d }||d  | |}|t d t d }t|| d S Nr   r   r   rA   insertr   r   rC   rS   	test_datar+   r=   r   r   r   "test_set_operation_reduce_one_none   s
    rY   c                 C   sL   t d d }||d  ||d  | |}|t d t d }t|| d S rT   rU   rW   r   r   r   "test_set_operation_reduce_two_none   s    rZ   c                 C   s   | t d gt ksJ d S N)r	   r   rC   r   r   r   (test_set_operation_reduce_some_none_len2   s    r]   c                 C   s   t |d g|  tg  d S r[   r   r   r?   r   rC   r   r   r   "test_set_operation_reduce_all_none   s    r`   c                 C   sT   |d g|  gd dd  ttgks(J |d gd g|  dd  ttgksPJ d S )Nr   r   rG   r   )rQ   r	   r_   r   r   r   &test_set_operation_reduce_all_none_arr   s    (ra   c                 C   s@   t jtdd | ttg| W d    n1 s20    Y  d S r.   r1   )r   rC   r-   r   r   r   ,test_set_operation_prec_reduce_not_supported   s    rb   c                 C   sD   t jtdd" | ttgdgd W d    n1 s60    Y  d S r4   r6   r\   r   r   r   2test_set_operation_prec_reduce_nonscalar_grid_size   s    rc   c                 C   s"   | t t gtjd}|d u sJ d S Nr5   )r   rO   nan)r   rC   r+   r   r   r   ,test_set_operation_prec_reduce_grid_size_nan   s    rf   c                 C   sR   |t d |  |d}t d }td| D ]}||t | |d}q&t||sNJ d S )Nr5   r   r   r@   )r?   r   rC   r-   r+   r=   rD   r   r   r   #test_set_operation_prec_reduce_1dim   s
    rg   c                 C   s   t gd gd }| |dd d}t|ts,J | |ddd}|jdksHJ | |ddd}|jdksdJ | |ddd}|jdksJ d S )	Nr   r   r   )r-   rH   r   r"   rI   rJ   rK   rL   r   r   r   #test_set_operation_prec_reduce_axis   s    rh   c                 C   sH   t d d }||d  | |dd}|t d t d dd}t|| d S Nr   r   r5   r   rU   rW   r   r   r   'test_set_operation_prec_reduce_one_none   s
    rj   c                 C   sT   t d d }||d  ||d  | |dd}|t d t d dd}t|| d S ri   rU   rW   r   r   r   'test_set_operation_prec_reduce_two_none   s    rk   c                 C   s    t |d g|  ddtg  d S )Nr   r5   r^   r_   r   r   r   'test_set_operation_prec_reduce_all_none  s    rl   )r      r   z
GEOS < 3.8c                 C   sz   t ddddt ddddt ddddg}t |d|  }|d }td| D ]}t ||| }qRt||dd dS )z
    This is tested seperately from other set operations as it differs in two ways:
      1. It expects only non-overlapping polygons
      2. It expects GEOS 3.8.0+
    r   r   r   r   NT)r:   )r   boxcoverage_union_allrB   coverage_unionr   )r?   rX   r+   r=   rD   r   r   r   test_coverage_union_reduce_1dim  s    	rq   c                  C   s   dd t dD } tj| d d}t|ts.J tj| dd}|jdksJJ tj| dd}|jdksfJ tj| d	d}|jdksJ d S )
Nc                    s"   g | ]  fd dt dD qS )c              	      s$   g | ]}t | |d   d  qS )r   )r   rn   )r   rD   jr   r   r   '  r   z>test_coverage_union_reduce_axis.<locals>.<listcomp>.<listcomp>r   )rB   )r   r   rr   r   r   '  r   z3test_coverage_union_reduce_axis.<locals>.<listcomp>r   rG   r   r"   r   rI   rJ   )rB   r   ro   r(   r   r)   )rM   r+   r   r   r   test_coverage_union_reduce_axis$  s    rt   c                  C   sT   t g d} tjtjdd$ t| t g d W d    n1 sF0    Y  d S )N)r   r   r   r   r   r   )r   r   ru   z6CoverageUnion cannot process incorrectly noded inputs.r/   )rv   )g?r   )r   r   )r   r   rv   )r   r&   r2   r   GEOSExceptionrp   r   r   r   r   &test_coverage_union_overlapping_inputs2  s    rz   zgeom_1, geom_2c                 C   s   g | ]}t |gqS r   ry   )r   Znon_polygonr   r   r   r   D  r   c                 C   s   g | ]}t D ]}||gqqS r   )non_polygon_types)r   Znon_polygon_1Znon_polygon_2r   r   r   r   F  s   c                 C   s@   t jtjdd t| | W d    n1 s20    Y  d S )Nz)Unhandled geometry type in CoverageUnion.r/   )r&   r2   r   rx   rp   )Zgeom_1Zgeom_2r   r   r   &test_coverage_union_non_polygon_inputs@  s    r|   zgeom,grid_size,expected皙?皙?ffffff@)	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   rw   r   )r   )r   r   )r   r   rw   r   d   c                 C   s"   t j| |d}t ||sJ d S rd   )r   	union_allr9   )r   r-   r=   r+   r   r   r   test_union_all_precT  s    >r   c                  C   sP   t ddddt ddddg} t j| dd}t j| dd}t ||sLJ d S )	Nr}   r   r   r~   r   r   r   r5   )r   rn   Zunary_unionr   r9   )Zgeomsr+   r=   r   r   r   test_uary_union_alias  s     r   )@numpyrO   r&   r   r   r   r   Zshapely.errorsr   Zshapely.testingr   commonr   r	   r
   r   r   r   Zall_single_typesr#   intersectionsymmetric_differenceunionZSET_OPERATIONSZintersection_allZsymmetric_difference_allr   ZREDUCE_SET_OPERATIONSZREDUCE_SET_OPERATIONS_PRECrn   rA   r{   r'   Zparametrizer,   Zskipifr$   r3   r8   r>   rB   rE   rF   rN   rR   rY   rZ   r]   r`   ra   rb   rc   rf   rg   rh   rj   rk   rl   rq   rt   rz   r|   r   r   r   r   r   r   <module>   s   	


	


	

	



<