
    \i;                        S r SSKrSSKrSSKJrJrJrJr  SSK	J
r
  SSKJr  SSKJr  S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r' " S S 5      r(S! r) " S" S#5      r*g)$zPolygons and Linear Rings    N)
LinearRing
LineStringPointPolygon)CoordinateSequence)TopologicalError)loadsc                  >    [        5       R                  S S  / :X  d   eg Nr   coords     f/var/www/html/kml_chatgpt/mouzaenv/lib/python3.13/site-packages/shapely/tests/geometry/test_polygon.pytest_empty_linearring_coordsr      s    <q!R'''r   c                      / SQn [        / SQ5      nUR                  S S  U :X  d   e[        / SQ5      nUR                  S S  U :X  d   eg )N        r   r         ?r   r   r   r   r   r   r   expected_coordsrings     r   (test_linearring_from_coordinate_sequencer      sI    FO:;D;;q>_,,,:;D;;q>_,,,r   c                      / SQn [        [        SS5      [        SS5      [        SS5      /5      nUR                  S S  U :X  d   eg )Nr   r   r   )r   r   r   r   s     r   test_linearring_from_pointsr      s@    FOuS#c3sCIJD;;q>_,,,r   c                      / SQn [        U 5      n[        U5      n[        UR                  5      S:X  d   eUR                  S S  U :X  d   eUR                  S:X  d   eg )Nr   r   r   r   r      r   r   r   lenr   	geom_typer   liner   s      r   &test_linearring_from_closed_linestringr)   "   sZ    =FfDdDt{{q   ;;q>V###>>\)))r   c                      / SQn [        U S S 5      n[        U5      n[        UR                  5      S:X  d   eUR                  S S  U :X  d   eUR                  S:X  d   eg )Nr!   r#   r   r$   r'   s      r   (test_linearring_from_unclosed_linestringr,   +   s`    =FfSbk"DdDt{{q   ;;q>V###>>\)))r   c                      / SQn [        U 5      nUR                  (       a   e[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)N)r   r   r   )r   is_validpytestraisesr   r   r   r(   s     r   test_linearring_from_invalidr2   4   s?    1FfD}}	'	(4 
)	(	(s   A
A c                      SS/n [        U 5      n[        R                  " [        SS9   [	        U5        S S S 5        g ! , (       d  f       g = f)Nr   r   zrequires at least 4 coordinates)match)r   r/   r0   
ValueErrorr   r1   s     r   )test_linearring_from_too_short_linestringr6   <   s<     *%FfD	z)J	K4 
L	K	Ks	   >
Ac                  L    / SQn [        U 5      nUR                  S S  U :X  d   eg )Nr   r   r   r   s     r   test_linearring_from_linearringr9   E   s'    =FfD;;q>V###r   c                  ^    / SQn S U  5       n[        U5      nUR                  S S  U :X  d   eg )Nr!   c              3   $   #    U  H  ov   M     g 7fr   r   .0coords     r   	<genexpr>1test_linearring_from_generator.<locals>.<genexpr>M        
%fU5f   r   )r   genr   s      r   test_linearring_from_generatorrD   K   s0    =F
%f
%Cc?D;;q>V###r   c                  R   [        5       n U R                  (       d   e[        U R                  [        5      (       d   eU R                  S S  / :X  d   e[        / 5      n U R                  (       d   e[        U R                  [        5      (       d   eU R                  S S  / :X  d   eg r   )r   is_empty
isinstancer   r   r   s    r   test_linearring_from_emptyrI   R   s    <D===dkk#56666;;q>Rb>D===dkk#56666;;q>Rr   c                  x    / SQn [        [        R                  " U 5      5      nUR                  S S  / SQ:X  d   eg )Nr!   )r   nparrayr   r8   s     r   test_linearring_from_numpyrM   ^   s1    =Fbhhv&'D;;q>MMMMr   c                      SSK Jn   [        / SQ5      n[        R                  " UR
                  5      n[        R                  " / SQ5      nU " X#5        g )Nr   )assert_array_equalr   r   )numpy.testingrO   r   rK   asarrayr   )rO   r   raexpecteds       r   test_numpy_linearring_coordsrT   f   s9    0:;D	DKK	 BzzJKHr$r   c                  x    [        5       n [        R                  " U R                  5      R                  S:X  d   eg )N)r      )r   rK   rQ   r   shaperH   s    r   "test_numpy_empty_linearring_coordsrX   o   s*    <D::dkk"((F222r   c                  v    [        / SQ5      n [        R                  " S[        5      nU /US S & US   U :X  d   eg )Nr      r   )r   rK   emptyobject)geomars     r   test_numpy_object_arrayr_   t   s8    78D	!V	BFBqEa5D==r   c                  (   / SQn [        / SQ5      nUR                  R                  S S  U :X  d   e[        UR                  5      S:X  d   e[        / SQ5      nUR                  R                  S S  U :X  d   e[        UR                  5      S:X  d   eg )Nr   r   r   r   exteriorr   r%   	interiors)r   polygons     r   %test_polygon_from_coordinate_sequencere   {   s    =F :;G""1%///w  !Q&&&:;G""1%///w  !Q&&&r   c                  0   / SQn [        U / SQ/5      nUR                  R                  S S  U :X  d   e[        UR                  5      S:X  d   e[        UR                  S   R                  5      S:X  d   e/ SQn / SQ/ SQ/n[        X5      nUR                  R                  S S  U :X  d   e[        UR                  5      S	:X  d   e[        UR                  S   R                  5      S:X  d   e[        UR                  S   R                  5      S
:X  d   eg )Nr         ?ri   ri         ?rk   rk   rk   ri   rZ   r      )r   r   )r   
   )rp   rp   )rp   r   ro   )rZ   rZ   )rV   rZ   )rV   rV   )rZ   rV   rq   )   rs   )rs   r#   )r#   rn   )rn   r#   )rn   rs   rr   rV      ra   )r   rd   holess      r   0test_polygon_from_coordinate_sequence_with_holesrv      s   =F fSTUG""1%///w  !Q&&&w  #**+q000 :F08E f$G""1%///w  !Q&&&w  #**+q000w  #**+q000r   c                  <   / SQn [        U 5      n[        U5      nUR                  R                  S S  U :X  d   e[	        UR
                  5      S:X  d   e[        / SQ5      n[        / SQ5      [        / SQ5      [        / SQ5      /n[        X45      nUR                  R                  S S  UR                  S S  :X  d   e[	        UR
                  5      S:X  d   e[        S5       H4  nUR
                  U   R                  S S  XE   R                  S S  :X  a  M4   e   g )Nr!   r   r   )     Q@g      ^@)g     a@r   r         N@      T@)r}   r}   )ry   r|   r{         >@      $@)g      I@r   )g      D@r   r   )     V@rp   )g     [@r   )g      Y@r   )r   r   rs   )r   r   rb   r   r%   rc   range)r   r   rd   shellru   is         r   test_polygon_from_linearringr      s
   =FfDdmG""1%///w  !Q&&& LMEKLKLKLE
 e#G""1%a888w  !Q&&&1X  #**1-1CCCC r   c                      / SQn [        U 5      n[        U5      nUR                  R                  S S  U :X  d   e[        U S S 5      n[        U5      nUR                  R                  S S  U :X  d   eg )Nr!   r+   )r   r   rb   r   )r   r(   rd   s      r   test_polygon_from_linestringr      ss    =FfDdmG""1%/// fSbk"DdmG""1%///r   c                      [        [        SS5      [        SS5      [        SS5      /5      n / SQnU R                  R                  S S  U:X  d   eg )Nr   r   r   )r   r   rb   r   )rd   r   s     r   test_polygon_from_pointsr      sI    uS#c3sCIJGFO""1%888r   c                     / SQn [        U / SQ/5      n[        U5      n[        UR                  R                  5      S:X  d   e[        UR                  5      S:X  d   e[        UR                  S   R                  5      S:X  d   eg )Nr   r   r   r"   rg   rn   rZ   r   )r   r%   rb   r   rc   )r   rd   copys      r   test_polygon_from_polygonr      sy    =FfSTUG 7Dt}}##$)))t~~!###t~~a ''(A---r   c                      [         R                  " [        5         [        SS/SS//5        S S S 5        g ! , (       d  f       g = f)NrZ   rV   rs   )r/   r0   r5   r   r   r   r   test_polygon_from_invalidr      s/    	z	"!Q!Q ! 
#	"	"s	   6
Ac                      [        5       n U R                  (       d   eU R                  R                  S S  / :X  d   e[        / 5      n U R                  (       d   eU R                  R                  S S  / :X  d   eg r   )r   rF   rb   r   )rd   s    r   test_polygon_from_emptyr      sn    iG""1%+++bkG""1%+++r   c                     [         R                  " S5      n [        U 5      n[        UR                  R
                  5      S:X  d   eUR                  R
                  S S  / SQ:X  d   e[        UR                  5      S:X  d   eg )Nr   r   r   r"   r   rn   r   )rK   rL   r   r%   rb   r   rc   )ard   s     r   test_polygon_from_numpyr      s|    
MNAajGw&&'1,,,""1% *    w  !Q&&&r   c                  r    / SQn S U  5       n[        U5      nUR                  R                  S S  U :X  d   eg )Nr!   c              3   $   #    U  H  ov   M     g 7fr   r   r<   s     r   r?   .test_polygon_from_generator.<locals>.<genexpr>   rA   rB   )r   rb   r   )r   rC   rd   s      r   test_polygon_from_generatorr      s9    =F
%f
%CclG""1%///r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestPolygon   c                     Sn[        U5      n[        UR                  5      S:X  d   eUR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  SL d   eg )Nr   rn   r   r#   r+   T)r   r%   r   is_ring)selfr   r   s      r   test_linearringTestPolygon.test_linearring   sy     B&!4;;1$$${{1~Q///{{1~R000||t###r   c                    Sn[        U5      n[        UR                  R                  5      S:X  d   e[	        UR                  [
        5      (       d   eUR                  n[        UR                  5      S:X  d   eUR                  S   UR                  S   :X  d   eUR                  S   S:X  d   eUR                  SL d   e[        UR                  5      S:X  d   eUR                  nS nS n[        U5      nUR                  n[        UR                  5      S:X  d   eUR                  S   UR                  S   :X  d   eUR                  S   S:X  d   eUR                  SL d   eS n[        US/5      n[        UR                  R                  5      S:X  d   e[        UR                  S   R                  5      S:X  d   e[        R                  " [        5         UR                  S     S S S 5        [        R                  " [        5         UR                    S S S 5        UR                  S	S
S.:X  d   eg ! , (       d  f       NS= f! , (       d  f       N5= f)Nr   rn   r   r#   r   Trg   rZ   r   )r   )rh   rj   rl   rm   rh   )typecoordinates)r   r%   rb   r   rG   r   r   rc   wkbload_wkbr/   r0   
IndexErrorNotImplementedError__geo_interface__)r   r   rd   r   datas        r   test_polygonTestPolygon.test_polygon  s%   A &/7##**+q000 '**J77774;;1$$${{1~Q///{{1~+++||t###7$$%*** {{4.4;;1$$${{1~Q///{{1~+++||t### IJ
 7##**+q0007$$Q'../1444]]:&a  ' ]]./NN 0 ((-
 
 	
 
 '& 0/s   H;I;
I	
Ic                 `    [        5       nUR                  S:X  d   eUR                  S:X  d   eg )NzLINEARRING EMPTYr   )r   wktlength)r   r_nulls     r   test_linearring_empty!TestPolygon.test_linearring_empty4  s.    zz////}}###r   c                     Sn[        U5      nUR                  S:X  d   eUR                  nUS   S:X  d   eUR                  nUR                  S:X  d   eUR                  nUS   S:X  d   eg )N)r   r   r   r   r   r   r   r   r   r   r   r   rs   r   )r   r   r   r   r   r   )r   _ndimr   rb   )r   r   rd   gies        r   test_dimensionsTestPolygon.test_dimensions:  s     V&/}}!!!&&-  %
 
 	
 
 ww!||  -  %
 
 	
 
r   c                    [        / SQ5      n[        UR                  R                  5      / SQ:X  d   e[        [	        SS5      R                  SSS9R                  R                  5      n[        U[        5      (       d   e[        / SQ/ SQ/5      nUR                  S:X  d   e [        UR                  S	   R                  5      / S
Q:X  d   e[        [        UR                  S	   R                  S5      R                  R                  5      5      n[        U5      S:X  d   e[        UR                  S5      R                  R                  5      n[        U[        5      (       d   eg )Nr   r         r   r   r   )r   r   r   r   r   r   r   rZ   )	quad_segs)      пri   r         ?      r   r   ri   r   r   )r   r   r   r   r   rV   )r   listboundaryr   r   bufferrb   rG   arearc   nextiterr%   )r   pecxys       r   test_attribute_chains!TestPolygon.test_attribute_chainsW  sA    FGAJJ%%& +
 
 	
 
 %S/(((:CCJJK"d#### >IJ
 vv~~	 AKKN))* /
 
 	
 
 $q{{1~,,Q/88??@A2w!|| !((1+&&--."d####r   c                     [        SS5      n[        / SQ5      n[        / SQ5      n[        5       n[        5       nX:w  d   eXE:X  d   eX$:w  d   eX#:X  d   eUc   eg )Nr   r   )r   r   )r   point1polygon1polygon2polygon_empty1polygon_empty2s         r   test_empty_equalityTestPolygon.test_empty_equality  so     q!MNMN  !!!///)))###)))r   c                 n    Su  pp4X4X4X44X24/n[        U5      [         R                  " XX45      :X  d   eg )N)iLi   Z   )r   from_bounds)r   xminyminxmaxymaxr   s         r   test_from_boundsTestPolygon.test_from_bounds  sA    !3D,tlTLIv'"5"5d$"MMMMr   c                 L    [        5       nUR                  [        5       :X  d   eg r   )r   rb   r   )r   r   s     r   test_empty_polygon_exterior'TestPolygon.test_empty_polygon_exterior  s    IzzZ\)))r   r   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      s-    $0
d$
:&$P* N
*r   r   c                     [        / SQ5      n [        R                  " [        5         / SQU l        S S S 5        [        R                  " [
        5         SU R                  S'   S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr   )r   )       @r   )r   r   r   r   )r   r/   r0   AttributeErrorr   	TypeErrorrH   s    r   test_linearring_immutabler     sZ    FGD	~	&: 
' 
y	!#A 
"	! 
'	& 
"	!s   
A-A>-
A;>
Bc                   &    \ rS rSrS rS rS rSrg)TestLinearRingGetItemi  c                     [        / SQ5      n[        / SQ5      [        / SQ5      [        / SQ5      /n[        X5      n[        SS5       H*  nUR                  U   R	                  X$   5      (       a  M*   e   [
        R                  " [        5         UR                  S     S S S 5        [
        R                  " [        5         UR                  S     S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nrx   rz   r~   r   rs   )r   r   r   rc   equalsr/   r0   r   )r   r   ru   gr   s        r   test_index_linearring+TestLinearRingGetItem.test_index_linearring  s    PQOPOPOP

 E!r1A;;q>((2222 ]]:&KKN ']]:&KKO '& '&&&s   CC/
C,/
C=c                 $   [        5       n[        R                  " [        5         UR                  S     S S S 5        [        R                  " [
        5         UR                  S     S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr   r   )r   r/   r0   r   rc   r   )r   r   s     r   test_index_linearring_misc0TestLinearRingGetItem.test_index_linearring_misc  sU    I]]:&KKN ']]9%KK &% '&%%s   A0B0
A>
Bc                 B   [        / SQ5      n[        / SQ5      [        / SQ5      [        / SQ5      /n[        X5      n[        UR                  SS  USS  5       VVs/ s H  u  pEUR	                  U5      PM     nnn[        U5      (       d   e[        UR                  S S US S 5       VVs/ s H  u  pEUR	                  U5      PM     nnn[        U5      (       d   e[        UR                  S S S2   US S S2   5       VVs/ s H  u  pEUR	                  U5      PM     nnn[        U5      (       d   e[        UR                  S S S2   US S S2   5       VVs/ s H  u  pEUR	                  U5      PM     nnn[        U5      (       d   e[        UR                  S S US S 5       VVs/ s H  u  pEUR	                  U5      PM     nnn[        U5      (       d   eUR                  SS  USS  s=:X  a  / :X  d   e   eg s  snnf s  snnf s  snnf s  snnf s  snnf )	Nrx   rz   r~   r   rZ   r+   rV   rs   )r   r   ziprc   r   all)r   r   ru   r   r   bts          r   test_slice_linearring+TestLinearRingGetItem.test_slice_linearring  s   PQOPOPOP

 E!'*1;;qr?E!"I'FG'FVaQXXa['FG1vvv'*1;;s+;U3BZ'HI'HVaQXXa['HI1vvv'*1;;tt+<eDbDk'JK'JVaQXXa['JK1vvv'*1;;ss+;U3Q3Z'HI'HVaQXXa['HI1vvv'*1;;r?E"1I'FG'FVaQXXa['FG1vvv{{12%)1r11111 HIKIGs   H/H	HH.Hr   N)r   r   r   r   r   r  r  r   r   r   r   r   r     s    2r   r   )+__doc__numpyrK   r/   shapelyr   r   r   r   shapely.coordsr   shapely.errorsr   shapely.wkbr	   r   r   r   r   r)   r,   r2   r6   r9   rD   rI   rM   rT   rX   r_   re   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r     s       : : - + )(--**$$	 N%3

'1,D,	09.",'0_* _*D$)2 )2r   