o
    h&                     @   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d9e 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d>fe d d gd:d gge d d gd;d;gd:d ggd?fgd@dA Z/ejdBe d d gd:d gge d d gd;d;gd:d ggdCd;fgdDdE Z0ejdFedfdefdGeefeefeefgdHdI Z1dJdK Z2dLdM Z3ejdNg dOdPdQ Z4dRdS Z5dTdU Z6dVdW Z7dXdY Z8ejdZeg d[d\fed]d^gd\fe	d_d`gdfe
dadad fe d fgdbdc Z9dS )d    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   Y/var/www/html/scripts/venv/lib/python3.10/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_missing1      r+   c                  C   s`   t dd} tg d}ttjdk  t| |}W d    n1 s#w   Y  |dks.J d S )N      )r   r   r/   )r-   r-         r   g      ?)r   r   r   r   geos_versionr#   abr    r   r   r   test_distance_duplicated6   s   
r7   zgeom,expected)r.   r1   r.   r1   )r   r   r-   r.   r-   )r   r   r   r-   )r   r   r-   r   )r   r   皙@r8   )1   4   r.   c                 C      t t| | d S r)   )r   r   boundsr   r'   r   r   r   test_bounds@   s   r?   z
geom,shape   Nr@   )r.   rA   )r.   r.   rA   )r.   r-   r.   rA   c                 C   s   t | j|ks
J d S r)   )r   r=   shape)r   rC   r   r   r   test_bounds_dimensionsR      rD   )r   r   r.   r1   c                 C   r<   r)   )r   r   total_boundsr>   r   r   r   test_total_bounds`   s   rG   c                 C   s   t | jdks
J d S rB   )r   rF   rC   r   r   r   r   test_total_bounds_dimensionsw   rE   rH   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   rK   c                  C      t d } t| sJ d S r)   )r   rJ   r$   r*   r   r   r   r   test_length_missing      
rM   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 s7w   Y  |tjdddksGJ d S )	Nr   d   
   P   r0   g"}U\6@gHz>absr   linestringsr   r3   hausdorff_distancepytestapproxr4   r   r   r   test_hausdorff_distance   s   "rY   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 s9w   Y  |tjdd	d
ksIJ d S )Nr   rO   rP   rQ   r0   MbP?densifygfffffG@皙?rR   rT   r4   r   r   r   test_hausdorff_distance_densify   s   "r^   c                  C   s<   t td } t| sJ t jtd dd} t| sJ d S )NrZ   r[   )r   rV   r   r$   r*   r   r   r   r   test_hausdorff_distance_missing   s   r_   c                  C   $   t jtttjd} t| sJ d S Nr[   )r   rV   r   r$   nanr*   r   r   r   r   test_hausdorff_densify_nan      rc   c                  C      t tt} t| sJ d S r)   )r   r#   r   r	   r$   r*   r   r   r   r   test_distance_empty   r,   rf   c                  C   re   r)   r   rV   r   r	   r$   r*   r   r   r   r   test_hausdorff_distance_empty   r,   rh   c                  C   "   t jttdd} t| sJ d S N皙?r[   rg   r   r   r   r   %test_hausdorff_distance_densify_empty      rl   zgeom1, geom2, expectedrO   2         gf{q@f{Q@c                 C   s&   t | |}|tj|ddksJ d S N-q=rR   r   frechet_distancerW   rX   )geom1geom2r'   r    r   r   r   test_frechet_distance   s   %rx   zgeom1, geom2, densify, expectedrZ   c                 C   s*   t j| ||d}|tj|ddksJ d S )Nr[   rs   rR   rt   )rv   rw   r\   r'   r    r   r   r   test_frechet_distance_densify   s   ry   zgeom1, geom2)NNc                 C   s   t | |}t|sJ d S r)   )r   ru   r$   r*   )rv   rw   r    r   r   r   5test_frechet_distance_nan_for_invalid_geometry_inputs  s   rz   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   rO   rn   )r]   rk   r-   r[   )rn   gz߶~I@rq   )r   ru   rU   r$   arrayr%   assert_array_almost_equalr&   r   r   r   test_frechet_densify_ndarray  s   r}   c                  C   r`   ra   )r   ru   r   r$   rb   r*   r   r   r   r   test_frechet_densify_nan  rd   r~   r\   )r   r:   r.   c                 C   sF   t jtjdd tjtt| d W d    d S 1 sw   Y  d S )NzFraction is not in range)matchr[   )rW   raisesr   GEOSExceptionru   r   r[   r   r   r   #test_frechet_densify_invalid_values#  s   "r   c                  C   ri   rj   )r   ru   r   r	   r$   r*   r   r   r   r   #test_frechet_distance_densify_empty)  rm   r   c                  C   s"   t tttg} t| g d d S )N)rI   rI   r]   )r   minimum_clearancer   r   r   r   r   r   r   r   test_minimum_clearance.  rm   r   c                  C   s$   t ttg} t|  sJ d S r)   )r   r   r   r	   r$   isinfallr   r   r   r   "test_minimum_clearance_nonexistent3  s   r   c                  C   rL   r)   )r   r   r$   r*   r   r   r   r   test_minimum_clearance_missing8  rN   r   zgeometry, expected)r      )r   rP   )rP   r   )r   r   r   r   )r-   r   )r-   rP   )r.   r.   )rA   r.   r.   c                 C   s$   t | }|tj|ddksJ d S rr   )r   minimum_bounding_radiusrW   rX   )geometryr'   r    r   r   r   test_minimum_bounding_radius=  s   
r   ):numpyr$   rW   numpy.testingr   r   r   r   r   r   r   r   shapely.tests.commonr	   r
   r   r   r   r   r   r   r   r   r   r   markparametrizer   r!   r(   r+   r7   rU   rb   r?   rD   rG   rH   rK   rM   rY   r^   r_   rc   rf   rh   rl   rx   ry   rz   r}   r~   r   r   r   r   r   r   r   r   r   r   <module>   s8   8









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

&&&&&&
$






