o
    Jf*                     @   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   j/home/deployuser/azure_apps/autowriter/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   s   
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   "rX   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   rN   rO   rP   r0   MbP?densifygfffffG@皙?rQ   rS   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 )NrY   rZ   )r   rU   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 NrZ   )r   rU   r   r$   nanr*   r   r   r   r   test_hausdorff_densify_nan   s   rb   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,   rd   c                  C   rc   r)   r   rU   r   r	   r$   r*   r   r   r   r   test_hausdorff_distance_empty   r,   rf   c                  C   "   t jttdd} t| sJ d S N皙?rZ   re   r   r   r   r   %test_hausdorff_distance_densify_empty   s   rj   )r1      r   z
GEOS < 3.7)reasonzgeom1, geom2, expectedrN   2         gf{q@f{Q@c                 C   s&   t | |}|tj|ddksJ d S N-q=rQ   r   frechet_distancerV   rW   )geom1geom2r'   r    r   r   r   test_frechet_distance   s   &rw   zgeom1, geom2, densify, expectedrY   c                 C   s*   t j| ||d}|tj|ddksJ d S )NrZ   rr   rQ   rs   )ru   rv   r[   r'   r    r   r   r   test_frechet_distance_densify   s   rx   zgeom1, geom2)NNc                 C   s   t | |}t|sJ d S r)   )r   rt   r$   r*   )ru   rv   r    r   r   r   5test_frechet_distance_nan_for_invalid_geometry_inputs  s   ry   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   rN   rm   )r\   ri   r-   rZ   )rm   gz߶~I@rp   )r   rt   rT   r$   arrayr%   assert_array_almost_equalr&   r   r   r   test_frechet_densify_ndarray  s   r|   c                  C   r_   r`   )r   rt   r   r$   ra   r*   r   r   r   r   test_frechet_densify_nan"  s   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)matchrZ   )rV   raisesr   GEOSExceptionrt   r   rZ   r   r   r   #test_frechet_densify_invalid_values(  s   "r   c                  C   rg   rh   )r   rt   r   r	   r$   r*   r   r   r   r   #test_frechet_distance_densify_empty/     r   )r1      r   z
GEOS < 3.6c                  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_clearance5  r   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_nonexistent;  s   r   c                  C   rL   r)   )r   r   r$   r*   r   r   r   r   test_minimum_clearance_missingA  s   
r   )r1      r   z
GEOS < 3.8zgeometry, expected)r      )r   rO   )rO   r   )r   r   r   r   )r-   r   )r-   rO   )r.   r.   )rA   r.   r.   c                 C   s$   t | }|tj|ddksJ d S rq   )r   minimum_bounding_radiusrV   rW   )geometryr'   r    r   r   r   test_minimum_bounding_radiusG  s   
r   )<numpyr$   rV   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   rT   ra   r?   rD   rG   rH   rK   rM   rX   r]   r^   rb   rd   rf   rj   skipifr3   rw   rx   ry   r|   r}   r   r   r   r   r   r   r   r   r   r   <module>   sN   8









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

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

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