
    Og*                        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j2                  j5                  deeeeeeg      d        Zd Zd Zd	 Zd
 Zej2                  j5                  deg dfeegg dg dgf ej@                  d d gd dgg      g df ej@                  d d gdd gg      g dfeg dfeg dfeg dfeejB                  ejB                  ejB                  ejB                  gfdejB                  ejB                  ejB                  ejB                  gfg	      d        Z"ej2                  j5                  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        Z#ej2                  j5                  deg df ej@                  d d gd dgg      g df ej@                  d d gdd gg      g dfeg dfeg dfeg dfeejB                  ejB                  ejB                  ejB                  gfdejB                  ejB                  ejB                  ejB                  gfeedgejB                  ejB                  ejB                  ejB                  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        Z$ej2                  j5                  dedeegeegeeggeeggeegggg      d        Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.ej2                  j_                  ej`                  d'k  d()      ej2                  j5                  d* ej@                  d d gd+d gg       ej@                  d d gd+d gg      d f ej@                  d d gd,d-gd+d gd.d-gd-d gg       ej@                  d d-gd-d.gd d+gd-d,gd d gg      d-f ej@                  d d gd,d-gd+d gd.d-gd-d gg       ej@                  d-d gd.d-gd+d gd,d-gd d gg      d-f ej@                  d d gd,d-gd+d gd.d-gd-d gg       ej@                  d d gd-d,gd d+gd-d.gd d-gg      d/f ej@                  d d gd+d gg       ej@                  d d gd,d,gd+d gg      d0fg      d1               Z1ej2                  j_                  ej`                  d'k  d()      ej2                  j5                  d2 ej@                  d d gd+d gg       ej@                  d d gd,d,gd+d gg      d3d,fg      d4               Z2ej2                  j_                  ej`                  d'k  d()      ej2                  j5                  d5edfdefd6eefeefeefg      d7               Z3ej2                  j_                  ej`                  d'k  d()      d8        Z4ej2                  j_                  ej`                  d'k  d()      d9        Z5ej2                  j_                  ej`                  d'k  d()      ej2                  j5                  d:g d;      d<               Z6ej2                  j_                  ej`                  d'k  d()      d=        Z7ej2                  j_                  ej`                  d>k  d?)      d@        Z8ej2                  j_                  ej`                  d>k  d?)      dA        Z9ej2                  j_                  ej`                  d>k  d?)      dB        Z:ej2                  j_                  ej`                  dCk  dD)      ej2                  j5                  dE eg dF      dGf edHdIg      dGf e	dJdKg      df e
dLdL      d f e       d fg      dM               Z;y)N    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                 8    t        j                  |       dk(  sJ y )N        )shapelyarear   s    c/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/shapely/tests/test_measurement.pytest_area_non_polygonr      s     <<$$$    c                  z    t        j                  t        t        t        g      } | j                         g dk(  sJ y )N)      @g      X@g)\(?)r   r   r   r   r   tolistactuals    r   	test_arear$   &   s-    \\7$5}EFF==?////r   c                  x    t        j                  t         } g d}t        j                  j                  | |       y )N)g;f@;f?r   r   r   r&   )r   distancer   nptestingr   r#   expecteds     r   test_distancer,   +   s,    56F4HJJvx0r   c                  f    t        j                  t        d       } t        j                  |       sJ y N)r   r'   r   r(   isnanr"   s    r   test_distance_missingr0   1   s&    eT*F88Fr   c                      t        dd      } t        g d      }t        t        j                  dk        5  t        j
                  | |      }d d d        dk(  sJ y # 1 sw Y   xY w)N      )r   r   r4   )r2   r2         r   g      ?)r   r   r   r   geos_versionr'   abr#   s      r   test_distance_duplicatedr<   6   sb    aA+,A	,,z9	: ( !!!Q'( S==	( (s   AA&zgeom,expected)r3   r6   r3   r6   )r   r   r2   r3   r2   )r   r   r   r2   )r   r   r2   r   )r   r   皙@r=   )1   4   r3   c                 B    t        t        j                  |       |       y r.   )r   r   boundsr   r+   s     r   test_boundsrD   @   s     w~~d+X6r   z
geom,shape   NrE   )r3   rF   )r3   r3   rF   )r3   r2   r3   rF   c                 L    t        j                  |       j                  |k(  sJ y r.   )r   rB   shape)r   rI   s     r   test_bounds_dimensionsrJ   R   s!     >>$%%...r   )r   r   r3   r6   c                 B    t        t        j                  |       |       y r.   )r   r   total_boundsrC   s     r   test_total_boundsrM   `   s    ( w++D18<r   c                 L    t        j                  |       j                  dk(  sJ y rG   )r   rL   rI   r   s    r   test_total_bounds_dimensionsrO   w   s#     %++t333r   c            	          t        j                  t        t        t        t
        t        t        t        g      } | j                         g dk(  sJ y )N)r          @r    g       @g      H@r   g@)
r   lengthr   r   r   r   r   r   r   r!   r"   s    r   test_lengthrS      sA    ^^	

F ==?BBBBr   c                  \    t        j                  d       } t        j                  |       sJ y r.   )r   rR   r(   r/   r"   s    r   test_length_missingrU      s"    ^^D!F88Fr   c                  H   t        j                  ddgddgddgddgg      } t        j                  ddgddgddgg      }t        t         j                  dk        5  t        j                  | |      }d d d        t        j                  dd      k(  sJ y # 1 sw Y   &xY w)	Nr   d   
   P   r5   g"}U\6@gHz>absr   linestringsr   r8   hausdorff_distancepytestapproxr9   s      r   test_hausdorff_distancera      s    aVc1XCy2s)DEAaX2wR9:A	,,z9	: 2 ++Aq12 V]]<T::::	2 2s   BB!c                  L   t        j                  ddgddgddgddgg      } t        j                  ddgddgddgg      }t        t         j                  dk        5  t        j                  | |d      }d d d        t        j                  dd	
      k(  sJ y # 1 sw Y   &xY w)Nr   rW   rX   rY   r5   MbP?densifygfffffG@皙?rZ   r\   r9   s      r   test_hausdorff_distance_densifyrg      s    aVc1XCy2s)DEAaX2wR9:A	,,z9	: A ++Aq%@A V]]4S1111	A As   BB#c                      t        j                  t        d       } t        j                  |       sJ t        j                  t        d d      } t        j                  |       sJ y )Nrc   rd   )r   r^   r   r(   r/   r"   s    r   test_hausdorff_distance_missingri      sL    ''t4F88F''tUCF88Fr   c                      t        j                  t        t        t        j                        } t        j
                  |       sJ y Nrd   )r   r^   r   r(   nanr/   r"   s    r   test_hausdorff_densify_nanrm      s,    ''ubffEF88Fr   c                  n    t        j                  t        t              } t	        j
                  |       sJ y r.   )r   r'   r   r
   r(   r/   r"   s    r   test_distance_emptyro      s&    eU+F88Fr   c                  n    t        j                  t        t              } t	        j
                  |       sJ y r.   r   r^   r   r
   r(   r/   r"   s    r   test_hausdorff_distance_emptyrr      s&    ''u5F88Fr   c                  r    t        j                  t        t        d      } t	        j
                  |       sJ y N皙?rd   rq   r"   s    r   %test_hausdorff_distance_densify_emptyrv      s(    ''ucBF88Fr   )r6      r   z
GEOS < 3.7)reasonzgeom1, geom2, expectedrW   2         gf{q@f{Q@c                 h    t        j                  | |      }|t        j                  |d      k(  sJ y N-q=rZ   r   frechet_distancer_   r`   )geom1geom2r+   r#   s       r   test_frechet_distancer      s0    L %%eU3FV]]87777r   zgeom1, geom2, densify, expectedrc   c                 l    t        j                  | ||      }|t        j                  |d      k(  sJ y )Nrd   r   rZ   r   )r   r   re   r+   r#   s        r   test_frechet_distance_densifyr      s1     %%eUGDFV]]87777r   zgeom1, geom2)NNc                 ^    t        j                  | |      }t        j                  |      sJ y r.   )r   r   r(   r/   )r   r   r#   s      r   5test_frechet_distance_nan_for_invalid_geometry_inputsr     s(     %%eU3F88Fr   c            	         t        j                  t        j                  ddgddgg      t        j                  ddgddgddgg      g d      } t        j                  g d      }t        j
                  j                  | |       y )Nr   rW   ry   )rf   ru   r2   rd   )ry   gz߶~I@r|   )r   r   r]   r(   arrayr)   assert_array_almost_equalr*   s     r   test_frechet_densify_ndarrayr     sv    %%aVc1X./aVb"XQx89F
 xx;<HJJ((:r   c                      t        j                  t        t        t        j                        } t        j
                  |       sJ y rk   )r   r   r   r(   rl   r/   r"   s    r   test_frechet_densify_nanr   "  s,    %%k;OF88Fr   re   )r   r?   r3   c                     t        j                  t        j                  d      5  t        j                  t
        t
        |        d d d        y # 1 sw Y   y xY w)NzFraction is not in range)matchrd   )r_   raisesr   GEOSExceptionr   r   rd   s    r   #test_frechet_densify_invalid_valuesr   (  sD     
w,,4N	O L  k7KL L Ls   !AAc                  r    t        j                  t        t        d      } t	        j
                  |       sJ y rt   )r   r   r   r
   r(   r/   r"   s    r   #test_frechet_distance_densify_emptyr   /  s(    %%k5#FF88Fr   )r6      r   z
GEOS < 3.6c                  h    t        j                  t        t        t        g      } t        | g d       y )N)rQ   rQ   rf   )r   minimum_clearancer   r   r   r   r"   s    r   test_minimum_clearancer   5  s$    &&1BM'RSFFO,r   c                      t        j                  t        t        g      } t	        j
                  |       j                         sJ y r.   )r   r   r   r
   r(   isinfallr"   s    r   "test_minimum_clearance_nonexistentr   ;  s1    &&u~6F88F!!!r   c                  \    t        j                  d       } t        j                  |       sJ y r.   )r   r   r(   r/   r"   s    r   test_minimum_clearance_missingr   A  s$    &&t,F88Fr   )r6      r   z
GEOS < 3.8zgeometry, expected)r      )r   rX   )rX   r   )r   r   r   r   )r2   r   )r2   rX   )r3   r3   )rF   r3   r3   c                 f    t        j                  |       }|t        j                  |d      k(  sJ y r~   )r   minimum_bounding_radiusr_   r`   )geometryr+   r#   s      r   test_minimum_bounding_radiusr   G  s-    6 ,,X6FV]]87777r   )<numpyr(   r_   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,   r0   r<   r]   rl   rD   rJ   rM   rO   rS   rU   ra   rg   ri   rm   ro   rr   rv   skipifr8   r   r   r   r   r   r   r   r   r   r   r    r   r   <module>r      s	     =  N N     

%
%0
1
 	
	l;<			q!fq!f-	.=			q!fq!f-	.=	l#	()	o.	01	/0
77 	
	v&+
% 0	19=;
 GU#3"4	5|D	/	/ 				q!fq!f-	.=			q!fq!f-	.=	l#	()	o.	01	/0
	?@
%
&
	|,
k	*L9&='&= 
	
	/0+
	7E"2!34	4	4C
;2



 G((94\J  G!Q#q 23G!Q#q 23	
  G!Q"cS!HsCj3PQ( STG!SC:3x#rQPQF ST	
  G!Q"cS!HsCj3PQ( STG#qC:Qx"cQPQF ST	
  G!Q"cS!HsCj3PQ( STG!Q#rQHsCj1c( ST	
  G!Q#q 23G!Q"bC8 <=	
7 #H8I# KJ8
 G((94\J%  G!Q#q 23G!Q"bC8 <=		
8 K8
 G((94\J	d	{	e		

 K
 G((94\J; K; G((94\J K
 G((94\JJ/L 0 KL
 G((94\J K
 G((94\J- K-
 G((94\J" K"
 G((94\J K
 G((94\J >?	

 ()	

 '(	

 !QK	

  	
#283 K48r   