a
    J5d	*                     @   s  d dl Zd dlZd dlmZmZ d dl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mZmZmZmZmZmZmZmZ ejdeeeeeegdd Zd	d
 Zdd Zdd Zdd Zejdeg dfeegg dg dgfe d d gd dggg dfe d d gdd ggg dfeg dfeg dfeg dfeej!ej!ej!ej!gfdej!ej!ej!ej!gfg	dd Z"ejdedfdeegdfeegeeggdfeeggeegggdfgd d! Z#ejdeg dfe d d gd dggg dfe d d gdd ggg dfeg dfeg dfeg dfeej!ej!ej!ej!gfdej!ej!ej!ej!gfeedgej!ej!ej!ej!gfedgg dfeegg dfeedgg dfeedegg d"fgd#d$ Z$ejdedeegeegeeggeeggeegggg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j/ej0d9k d:d;ejd<e d d gd=d gge d d gd=d ggd fe d d gd>d?gd=d gd@d?gd?d gge d d?gd?d@gd d=gd?d>gd d ggd?fe d d gd>d?gd=d gd@d?gd?d gge d?d gd@d?gd=d gd>d?gd d ggd?fe d d gd>d?gd=d gd@d?gd?d gge d d gd?d>gd d=gd?d@gd d?ggdAfe d d gd=d gge d d gd>d>gd=d ggdBfgdCdD Z1ejj/ej0d9k d:d;ejdEe d d gd=d gge d d gd>d>gd=d ggdFd>fgdGdH Z2ejj/ej0d9k d:d;ejdIedfdefdJeefeefeefgdKdL Z3ejj/ej0d9k d:d;dMdN Z4ejj/ej0d9k d:d;dOdP Z5ejj/ej0d9k d:d;ejdQg dRdSdT Z6ejj/ej0d9k d:d;dUdV Z7ejj/ej0dWk dXd;dYdZ Z8ejj/ej0dWk dXd;d[d\ Z9ejj/ej0dWk dXd;d]d^ Z:ejj/ej0d_k d`d;ejdaeg dbdcfedddegdcfe	dfdggdfe
dhdhd fe d fgdidj Z;dS )k    N)assert_allcloseassert_array_equal)GeometryCollection
LineString
MultiPointPointPolygon   )emptygeometry_collectionignore_invalidline_stringlinear_ringmulti_line_stringmulti_pointmulti_polygonpointpoint_polygon_testdatapolygonpolygon_with_holegeomc                 C   s   t | dksJ d S )N        )shapelyarear    r   Z/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/tests/test_measurement.pytest_area_non_polygon   s    r   c                  C   s(   t tttg} |  g dks$J d S )N)      @g      X@g)\(?)r   r   r   r   r   tolistactualr   r   r   	test_area'   s    r"   c                  C   s$   t jt } g d}tj| | d S )N)g;f@;f?r   r   r   r#   )r   distancer   nptestingr   r!   expectedr   r   r   test_distance,   s    
r)   c                  C   s   t td } t| sJ d S N)r   r$   r   r%   isnanr    r   r   r   test_distance_missing2   s    r,   c                  C   s`   t dd} tg d}ttjdk  t| |}W d    n1 sF0    Y  |dks\J d S )Nr	      )r   r   r.   )r	   r	         r   g      ?)r   r   r   r   geos_versionr$   abr!   r   r   r   test_distance_duplicated7   s
    
*r6   zgeom,expected)r-   r0   r-   r0   )r   r   r	   r-   )r   r   r   r	   )r   r   r	   r   )r   r   皙@r7   )1   4   r-   c                 C   s   t t| | d S r*   )r   r   boundsr   r(   r   r   r   test_boundsA   s    r=   z
geom,shape   Nr>   )r-   r?   )r-   r-   r?   )r-   r	   r-   r?   c                 C   s   t | j|ksJ d S r*   )r   r;   shape)r   rA   r   r   r   test_bounds_dimensionsS   s    rB   )r   r   r-   r0   c                 C   s   t t| | d S r*   )r   r   total_boundsr<   r   r   r   test_total_boundsa   s    rD   c                 C   s   t | jdksJ d S r@   )r   rC   rA   r   r   r   r   test_total_bounds_dimensionsx   s    rE   c               	   C   s0   t tttttttg} | 	 g dks,J d S )N)r          @r   g       @g      H@r   g@)
r   lengthr   r   r   r   r   r   r   r   r    r   r   r   test_length   s    rH   c                  C   s   t d } t| sJ d S r*   )r   rG   r%   r+   r    r   r   r   test_length_missing   s    
rI   c                  C   s   t ddgddgddgddgg} t ddgddgddgg}tt jdk  t | |}W d    n1 sn0    Y  |tjdddksJ d S )	Nr   d   
   P   r/   g"}U\6@gHz>absr   linestringsr   r2   hausdorff_distancepytestapproxr3   r   r   r   test_hausdorff_distance   s
    "*rT   c                  C   s   t ddgddgddgddgg} t ddgddgddgg}tt jdk   t j| |dd}W d    n1 sr0    Y  |tjdd	d
ksJ d S )Nr   rJ   rK   rL   r/   MbP?densifygfffffG@皙?rM   rO   r3   r   r   r   test_hausdorff_distance_densify   s
    ".rY   c                  C   s<   t td } t| sJ t jtd dd} t| s8J d S )NrU   rV   )r   rQ   r   r%   r+   r    r   r   r   test_hausdorff_distance_missing   s    rZ   c                  C   s$   t jtttjd} t| s J d S NrV   )r   rQ   r   r%   nanr+   r    r   r   r   test_hausdorff_densify_nan   s    r]   c                  C   s   t tt} t| sJ d S r*   )r   r$   r   r
   r%   r+   r    r   r   r   test_distance_empty   s    r^   c                  C   s   t tt} t| sJ d S r*   r   rQ   r   r
   r%   r+   r    r   r   r   test_hausdorff_distance_empty   s    r`   c                  C   s"   t jttdd} t| sJ d S N皙?rV   r_   r    r   r   r   %test_hausdorff_distance_densify_empty   s    rc   )r0      r   z
GEOS < 3.7)reasonzgeom1, geom2, expectedrJ   2         gf{q@f{Q@c                 C   s&   t | |}|tj|ddks"J d S N-q=rM   r   frechet_distancerR   rS   )geom1geom2r(   r!   r   r   r   test_frechet_distance   s    &rp   zgeom1, geom2, densify, expectedrU   c                 C   s*   t j| ||d}|tj|ddks&J d S )NrV   rk   rM   rl   )rn   ro   rW   r(   r!   r   r   r   test_frechet_distance_densify   s    rq   zgeom1, geom2)NNc                 C   s   t | |}t|sJ d S r*   )r   rm   r%   r+   )rn   ro   r!   r   r   r   5test_frechet_distance_nan_for_invalid_geometry_inputs  s    rr   c                  C   s^   t jt ddgddggt ddgddgddggg dd} tg d}tj| | d S )Nr   rJ   rf   )rX   rb   r	   rV   )rf   gz߶~I@ri   )r   rm   rP   r%   arrayr&   Zassert_array_almost_equalr'   r   r   r   test_frechet_densify_ndarray  s    rt   c                  C   s$   t jtttjd} t| s J d S r[   )r   rm   r   r%   r\   r+   r    r   r   r   test_frechet_densify_nan#  s    ru   rW   )r   r9   r-   c                 C   sD   t jtjdd  tjtt| d W d    n1 s60    Y  d S )NzFraction is not in range)matchrV   )rR   Zraisesr   ZGEOSExceptionrm   r   rV   r   r   r   #test_frechet_densify_invalid_values)  s    rw   c                  C   s"   t jttdd} t| sJ d S ra   )r   rm   r   r
   r%   r+   r    r   r   r   #test_frechet_distance_densify_empty0  s    rx   )r0      r   z
GEOS < 3.6c                  C   s"   t tttg} t| g d d S )N)rF   rF   rX   )r   minimum_clearancer   r   r   r   r    r   r   r   test_minimum_clearance6  s    r{   c                  C   s$   t ttg} t|  s J d S r*   )r   rz   r   r
   r%   isinfallr    r   r   r   "test_minimum_clearance_nonexistent<  s    r~   c                  C   s   t d } t| sJ d S r*   )r   rz   r%   r+   r    r   r   r   test_minimum_clearance_missingB  s    
r   )r0      r   z
GEOS < 3.8zgeometry, expected)r      )r   rK   )rK   r   )r   r   r   r   )r	   r   )r	   rK   )r-   r-   )r?   r-   r-   c                 C   s$   t | }|tj|ddks J d S rj   )r   Zminimum_bounding_radiusrR   rS   )Zgeometryr(   r!   r   r   r   test_minimum_bounding_radiusH  s    
r   )<numpyr%   rR   Znumpy.testingr   r   r   r   r   r   r   r   commonr
   r   r   r   r   r   r   r   r   r   r   r   markZparametrizer   r"   r)   r,   r6   rP   r\   r=   rB   rD   rE   rH   rI   rT   rY   rZ   r]   r^   r`   rc   Zskipifr2   rp   rq   rr   rt   ru   rw   rx   r{   r~   r   r   r   r   r   r   <module>   sL  8
















&&&&&&$









