a
    J5d@                     @   s  d dl Zd dlZd dlZd dlmZ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mZmZmZmZ dd Zdd	 Zd
d Zdd Zdd Zejjejdk dddd Z dd Z!dd Z"dd Z#dd Z$ej%dddgd d! Z&d"d# Z'ej%d$g d%d&d' Z(d(d) Z)d*d+ Z*d,d- Z+d.d/ Z,d0d1 Z-d2d3 Z.ej%d$g d4d5d6 Z/d7d8 Z0d9d: Z1ej%dddgej%d;d<d=gd>d? Z2d@dA Z3dBdC Z4dDdE Z5dFdG Z6dHdI Z7dJdK Z8dLdM Z9dNdO Z:dPdQ Z;dRdS Z<dTdU Z=dVdW Z>dXdY Z?dZd[ Z@ej%d$g d4d\d] ZAd^d_ ZBej%d$g d4d`da ZCej%dbejDe	 fejEe fejFe
 fejGe fgdcdd ZHej%deejDefejEefejEefejFefejGefejGefejGefejGefejGefejGefejGefejGefgdfdg ZIej%deejDefejEefejFefejGefgdhdi ZJej%deejDefejDefejDefejEefejEefejEefejFefejFefejFefg	djdk ZKej%dldmdneg dofdmdpeg dqfgdrds ZLej%dld d ddgddgfdneg doeg dtgfd d ddgddgfdndpgeg doeg dugfgdvdw ZMej%dxejNejNejNejNgejNd ddgd ejNddgd d ejNdgd d dejNggdydz ZOd{d| ZPd}d~ ZQej%ddejRdgdd ZSej%deTddd ZUdS )    N)GeometryCollectionGeometryType
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPolygon)assert_geometries_equal   )	empty_polygongeometry_collectionline_stringlinear_ringmulti_line_stringmulti_pointmulti_polygonpointpolygonc                 C   s"   ||f||f| |f| |f||ffS N )x1y1Zx2y2r   r   W/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/tests/test_creation.pybox_tpl    s    r   c                  C   s8   t ddgddgg} t| t ddt ddg d S )Nr      shapelypointsr
   Pointactualr   r   r   test_points_from_coords$   s    r#   c                  C   s2   t dddg} t| t ddt ddg d S )Nr   r   r   r   r!   r   r   r   test_points_from_xy)   s    r$   c                  C   s8   t ddddg} t| t dddt dddg d S )Nr   r   r   r!   r   r   r   test_points_from_xyz.   s    r%   c                   C   sz   t jtdd tg d W d    n1 s20    Y  t jtdd tdg W d    n1 sl0    Y  d S )Nz!dimension should be 2 or 3, got 4match)r   r   r      z!dimension should be 2 or 3, got 1r   )pytestraises
ValueErrorr   r   r   r   r   r   test_points_invalid_ndim3   s    ,r,   )r(   
   r   zGEOS < 3.10)reasonc                  C   s"   t tjtj} t| t   d S r   )r   r   npnanr
   r    r!   r   r   r   test_points_nan_becomes_empty;   s    r1   c                  C   sH   t ddgddggddgddggg} t| tddgtddgg d S )Nr   r   r   r   r   r   r   r   r   r   linestringsr
   r   r!   r   r   r   test_linestrings_from_coordsA   s    &

r7   c                  C   s*   t ddgddg} t| tddg d S )Nr   r   r   r(   r   r   r   r(   r5   r!   r   r   r   test_linestrings_from_xyL   s    r:   c                  C   sF   ddg} ddgddgf}t | |}t|tddgtd	d
gg d S )Nr   r   r   r(         r8   r9   )r   r;   )r   r<   r5   )xyr"   r   r   r   "test_linestrings_from_xy_broadcastQ   s    

r?   c                  C   s,   t ddgddgd} t| tddg d S )Nr   r   r   r(   )r   r   r   )r   r(   r   r5   r!   r   r   r   test_linestrings_from_xyz^   s    r@   dimr   r(   c                 C   s   t jdd| }t j|dd}t|}t j|dd}t|}t|| t jt t |dddddd}t t |dddd}t|}t|| d S )	Nr-   r(   CorderFr   r   r   )r/   randomrandnasarrayr   r6   r
   swapaxes)rA   coordscoords1result1coords2result2coords3result3r   r   r   test_linestrings_bufferc   s    


"
rQ   c                   C   s8   t t td W d    n1 s*0    Y  d S Nr3   )r)   r*   r+   r   r6   r   r   r   r   %test_linestrings_invalid_shape_scalart   s    rS   shape)r   r   r   r   r   r   r   r   c                 C   s@   t tj  tt|  W d    n1 s20    Y  d S r   )r)   r*   r   GEOSExceptionr6   r/   ones)rT   r   r   r   test_linestrings_invalid_shapey   s    	rZ   c                  C   sj  d} t jddd}tjt| dd t| W d    n1 sF0    Y  t jddd}tjt| dd t| W d    n1 s0    Y  t t t ddd	d
d}t t t j	|dddd	d
d	}tjt| dd t| W d    n1 s0    Y  t d}tjt| d
d t| W d    n1 s\0    Y  d S )N8The ordinate \(last\) dimension should be 2 or 3, got {})r-   r   r;   rB   rC   r;   r&   rE   r   r   r   )r-   r   r   )
r/   rY   r)   r*   r+   formatr   r6   rI   rH   )msgrJ   r   r   r   test_linestrings_invalid_ndim   s    (("*
r^   c                  C   s*   t tdddd} t| tg d d S Nr   r   r   r   r3   r   r   r2   ra   r   linearringsr   r
   r   r!   r   r   r   test_linearrings   s    re   c                  C   s*   t g dg d} t| tg d d S )N)r   r   r   r   )r(   r;   r<   r(   )r   r(   )r   r;   )r   r<   rf   r   rd   r
   r   r!   r   r   r   test_linearrings_from_xy   s    rh   c                  C   s2   t tddddd d } t| tg d d S )Nr   r   r`   rc   r!   r   r   r   test_linearrings_unclosed   s    rj   c                  C   s$   t g d} t| tg d d S )N)r2   r2   r2   )r2   r2   r2   r2   rg   r!   r   r   r   *test_linearrings_unclosed_all_coords_equal   s    rk   c                   C   s8   t t td W d    n1 s*0    Y  d S rR   )r)   r*   r+   r   rd   r   r   r   r   %test_linearrings_invalid_shape_scalar   s    rl   )rU   rV   rW   )r   r   r   )r   r   r   r4   c                 C   s   t | }tt t| W d    n1 s40    Y  |d  d7  < tt t| W d    n1 sx0    Y  d S N.r   r   )r/   rY   r)   r*   r+   r   rd   rT   rJ   r   r   r   test_linearrings_invalid_shape   s    
(rp   c                  C   s  d} t jddd}tjt| dd t| W d    n1 sH0    Y  t 	||d d dgd d f f}tjt| dd t| W d    n1 s0    Y  t jddd}tjt| dd t
| W d    n1 s0    Y  d S )Nr[   r-   r(   r;   r&   r   r   )r/   rF   rG   r)   r*   r+   r\   r   rd   hstackr6   )r]   rK   rM   rO   r   r   r   test_linearrings_invalid_ndim   s    ("(rr   c                  C   sH   t dt j} ttj t|  W d    n1 s:0    Y  d S )N)r;   r   )r/   fullr0   r)   r*   r   rX   rd   rJ   r   r   r   test_linearrings_all_nan   s    ru   rD   rB   rE   c                 C   s   t jdd| }t j||d}t|}t ||d d dgd d f f}t j||d}t|}t|| t j|d |d}t|}t||d  d S )Nr-   r;   rC   r   )r/   rF   rG   rH   r   rd   rq   r
   )rA   rD   rK   rL   rM   rN   rO   rP   r   r   r   test_linearrings_buffer   s    
"


rv   c               	   C   s0   t t tdddd} t| tg d d S r_   )r   polygonsrd   r   r
   r	   r!   r   r   r   test_polygon_from_linearring   s    rx   c                   C   s*   t td t t tjd tgdt d S )N)Zholes)r
   r   rw   r   r   r   r   r   r   test_polygons_none   s    ry   c                  C   s*   t tdddd} t| tg d d S r_   )r   rw   r   r
   r	   r!   r   r   r   test_polygons  s    rz   c                	   C   sN   t t0 ttddddtdddd W d    n1 s@0    Y  d S )Nr   r-   r   r   )r)   r*   r+   r   rw   r   r   r   r   r    test_polygon_no_hole_list_raises  s    r{   c                   C   s>   t ttjf tt W d    n1 s00    Y  d S r   )r)   r*   	TypeErrorr   rX   rw   r   r   r   r   r   test_polygon_no_hole_wrong_type  s    r}   c                   C   sB   t ttjf tttg W d    n1 s40    Y  d S r   )r)   r*   r|   r   rX   rw   r   r   r   r   r   r   !test_polygon_with_hole_wrong_type  s    r~   c                   C   sB   t ttjf tttg W d    n1 s40    Y  d S r   )r)   r*   r|   r   rX   rw   r   r   r   r   r   r   test_polygon_wrong_hole_type  s    r   c                  C   s8   t tddddtddddg} t | dks4J d S )Nr   r-   r   r        X@r   rw   r   arear!   r   r   r   test_polygon_with_1_hole  s    "r   c               	   C   sD   t tddddtddddtddddg} t | dks@J d S Nr   r-   r   r   r(   r;        X@r   r!   r   r   r   test_polygon_with_2_holes!  s    &r   c                  C   sX   t t tddddt tddddd t tddddg} t | dksTJ d S r   )r   rw   rd   r   r   r!   r   r   r   test_polygon_with_none_hole(  s    r   c                  C   sN   t tddddtddddgtddddg} t |  ddgksJJ d S )Nr   r-   r<   r   r   r         8@r   rw   r   r   tolistr!   r   r   r   test_2_polygons_with_same_hole4  s    (r   c               	   C   sZ   t tddddtddddgtddddtddddg} t |  dd	gksVJ d S )
Nr   r-   r<   r   r   r(   r;   r   g      7@r   r!   r   r   r   !test_2_polygons_with_2_same_holes;  s
    r   c               	   C   s^   t tddddtddddgtddddgtddddgg} t |  ddgksZJ d S )	Nr   r-   r<   r   r(   r   g      X@r   r   r!   r   r   r   $test_2_polygons_with_different_holesC  s
    r   c                   C   s8   t t td W d    n1 s*0    Y  d S rR   )r)   r*   r+   r   rw   r   r   r   r   /test_polygons_not_enough_points_in_shell_scalarK  s    r   c                 C   s   t | }tt t| W d    n1 s40    Y  |d  d7  < tt t| W d    n1 sx0    Y  d S rm   r/   rY   r)   r*   r+   r   rw   ro   r   r   r   (test_polygons_not_enough_points_in_shellP  s    
(r   c                   C   s@   t t" ttdd W d    n1 s20    Y  d S )Nr   r;   r   r3   )r)   r*   r+   r   rw   r/   rY   r   r   r   r   /test_polygons_not_enough_points_in_holes_scalarf  s    r   c                 C   s   t | }tt" tt d| W d    n1 s<0    Y  |d  d7  < tt" tt d| W d    n1 s0    Y  d S )Nr   rn   r   r   ro   r   r   r   (test_polygons_not_enough_points_in_holesk  s    
0r   zfunc,expectedc                 C   s"   | t jd gtd}t|| d S )N)Zdtype)r/   arrayobjectr
   )funcexpectedr"   r   r   r    test_create_collection_only_none  s    
r   zfunc,sub_geomc                 C   s"   | ||g}t |dksJ d S Nr   r   Zget_num_geometriesr   sub_geomr"   r   r   r   test_create_collection  s    r   c                 C   s&   | |d d |g}t |dks"J d S r   r   r   r   r   r   !test_create_collection_skips_none  s    
r   c                 C   s8   t t | |g W d    n1 s*0    Y  d S r   )r)   r*   r|   )r   r   r   r   r   &test_create_collection_wrong_geom_type  s    r   zcoords,ccw,expected)r   r   r   r   Tr`   F)r2   rb   r3   ra   r2   c                 C   s   t j| d|i}t|| d S Nccwr   boxr
   rJ   r   r   r"   r   r   r   test_box  s    r   )r   r   r4   r8   r2   r   )r2   r8   r4   r   r2   c                 C   s   t j| d|i}t|| d S r   r   r   r   r   r   test_box_array  s    r   rJ   c                 C   s   t j|  d u sJ d S r   )r   r   rt   r   r   r   test_box_nan  s    r   c               
   C   s   t tddd tddddg} | d jdks6J | d jdksHJ t|  | d jdksdJ | d d u stJ | d jdksJ | d j}t|  | d j|ksJ d S Nr   r   r   )r/   r   r   r   r   _geom_preparedprepare)arroriginalr   r   r   test_prepare  s    $


r   c               
   C   s   t tddd tddddg} t|  | d jdks@J | d jdksRJ t|  | d jdksnJ | d d u s~J | d jdksJ t|  d S r   )r/   r   r   r   r   r   r   Zdestroy_prepared)r   r   r   r   test_destroy_prepared  s    $

r   	geom_typeri   c                 C   s$   t jd| d}t | s J d S N)r   )r   )r   empty
is_missingallr   r"   r   r   r   test_empty_missing  s    r      c                 C   sN   t jd| d}t |  s"J t | s4J t || k sJJ d S r   )r   r   r   r   Zis_emptyZget_type_idr   r   r   r   
test_empty  s    r   )Vnumpyr/   r)   r   r   r   r   r   r   r   r   r	   Zshapely.testingr
   commonr   r   r   r   r   r   r   r   r   r   r#   r$   r%   r,   markZskipifZgeos_versionr1   r7   r:   r?   r@   ZparametrizerQ   rS   rZ   r^   re   rh   rj   rk   rl   rp   rr   ru   rv   rx   ry   rz   r{   r}   r~   r   r   r   r   r   r   r   r   r   r   r   ZmultipointsZmultilinestringsZmultipolygonsZgeometrycollectionsr   r   r   r   r   r   r0   r   r   r   MISSINGr   ranger   r   r   r   r   <module>   s:  (
,









	

	





	





