
    _ h;                        d Z ddlZddlZddlmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z' G d d       Z(d! Z) G d" d#      Z*y)$zPolygons and Linear Rings    N)
LinearRing
LineStringPointPolygon)CoordinateSequence)TopologicalError)loadsc                  <    t               j                  d d  g k(  sJ y Nr   coords     /home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/shapely/tests/geometry/test_polygon.pytest_empty_linearring_coordsr      s    <q!R'''r   c                      g d} t        g d      }|j                  d d  | k(  sJ t        g d      }|j                  d d  | k(  sJ y )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                      g d} t        t        dd      t        dd      t        dd      g      }|j                  d d  | k(  sJ y )Nr   r   r   )r   r   r   r   s     r   test_linearring_from_pointsr      s@    FOuS#c3sCIJD;;q>_,,,r   c                      g d} t        |       }t        |      }t        |j                        dk(  sJ |j                  d d  | k(  sJ |j                  dk(  sJ y )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                      g d} t        | d d       }t        |      }t        |j                        dk(  sJ |j                  d d  | k(  sJ |j                  dk(  sJ y )Nr!   r#   r   r$   r'   s      r   (test_linearring_from_unclosed_linestringr,   +   s`    =FfSbk"DdDt{{q   ;;q>V###>>\)))r   c                      g d} t        |       }|j                  rJ t        j                  t              5  t        |       d d d        y # 1 sw Y   y xY w)N)r   r   r   )r   is_validpytestraisesr   r   r   r(   s     r   test_linearring_from_invalidr2   4   sH    1FfD}}	'	( 4  s   AAc                      ddg} t        |       }t        j                  t        d      5  t	        |       d d d        y # 1 sw Y   y xY w)Nr   r   zrequires at least 4 coordinates)match)r   r/   r0   
ValueErrorr   r1   s     r   )test_linearring_from_too_short_linestringr6   <   sD     *%FfD	z)J	K 4  s   A  A	c                  J    g d} t        |       }|j                  d d  | k(  sJ y )Nr   r   r   r   s     r   test_linearring_from_linearringr9   E   s'    =FfD;;q>V###r   c                  \    g d} d | D        }t        |      }|j                  d d  | k(  sJ y )Nr!   c              3       K   | ]  }|  y wr   r   .0coords     r   	<genexpr>z1test_linearring_from_generator.<locals>.<genexpr>M        
%U5
%   r   )r   genr   s      r   test_linearring_from_generatorrC   K   s0    =F
%f
%Cc?D;;q>V###r   c                  &   t               } | j                  sJ t        | j                  t              sJ | j                  d d  g k(  sJ t        g       } | j                  sJ t        | j                  t              sJ | j                  d d  g k(  sJ y r   )r   is_empty
isinstancer   r   r   s    r   test_linearring_from_emptyrH   R   s    <D===dkk#5666;;q>Rb>D===dkk#5666;;q>Rr   c                  t    g d} t        t        j                  |             }|j                  d d  g dk(  sJ y )Nr!   )r   nparrayr   r8   s     r   test_linearring_from_numpyrL   ^   s1    =Fbhhv&'D;;q>MMMMr   c                      ddl m}  t        g d      }t        j                  |j
                        }t        j                  g d      } | ||       y )Nr   )assert_array_equalr   r   )numpy.testingrN   r   rJ   asarrayr   )rN   r   raexpecteds       r   test_numpy_linearring_coordsrS   f   s;    0:;D	DKK	 BzzJKHr8$r   c                  t    t               } t        j                  | j                        j                  dk(  sJ y )N)r      )r   rJ   rP   r   shaperG   s    r   "test_numpy_empty_linearring_coordsrW   o   s*    <D::dkk"((F222r   c                  r    t        g d      } t        j                  dt              }| g|d d  |d   | k(  sJ y )Nr      r   )r   rJ   emptyobject)geomars     r   test_numpy_object_arrayr^   t   s8    78D	!V	BFBqEa5D==r   c                      g d} t        g d      }|j                  j                  d d  | k(  sJ t        |j                        dk(  sJ t        g d      }|j                  j                  d d  | k(  sJ t        |j                        dk(  sJ y )Nr   r   r   r   exteriorr   r%   	interiors)r   polygons     r   %test_polygon_from_coordinate_sequencerd   {   s    =F :;G""1%///w  !Q&&&:;G""1%///w  !Q&&&r   c                  $   g d} t        | g dg      }|j                  j                  d d  | k(  sJ t        |j                        dk(  sJ t        |j                  d   j                        dk(  sJ g d} g dg dg}t        | |      }|j                  j                  d d  | k(  sJ t        |j                        d	k(  sJ t        |j                  d   j                        dk(  sJ t        |j                  d   j                        d
k(  sJ y )Nr         ?rh   rh         ?rj   rj   rj   rh   rY   r      )r   r   )r   
   )ro   ro   )ro   r   rn   )rY   rY   )rU   rY   )rU   rU   )rY   rU   rp   )   rr   )rr   r#   )r#   rm   )rm   r#   )rm   rr   rq   rU      r`   )r   rc   holess      r   0test_polygon_from_coordinate_sequence_with_holesru      s   =F fSTUG""1%///w  !Q&&&w  #**+q000 :F08E fe$G""1%///w  !Q&&&w  #**+q000w  #**+q000r   c                  2   g d} t        |       }t        |      }|j                  j                  d d  | k(  sJ t	        |j
                        dk(  sJ t        g d      }t        g d      t        g d      t        g d      g}t        ||      }|j                  j                  d d  |j                  d d  k(  sJ t	        |j
                        dk(  sJ t        d      D ]3  }|j
                  |   j                  d d  ||   j                  d d  k(  r3J  y )Nr!   r   r   )     Q@g      ^@)g     a@r   r         N@      T@)r|   r|   )rx   r{   rz         >@      $@)g      I@r   )g      D@r   r~   )     V@ro   )g     [@r   )g      Y@r   )r   r   rr   )r   r   ra   r   r%   rb   range)r   r   rc   shellrt   is         r   test_polygon_from_linearringr      s   =FfDdmG""1%///w  !Q&&& LMEKLKLKLE
 eU#G""1%a888w  !Q&&&1X D  #**1-q1CCCCDr   c                      g d} t        |       }t        |      }|j                  j                  d d  | k(  sJ t        | d d       }t        |      }|j                  j                  d d  | k(  sJ y )Nr!   r+   )r   r   ra   r   )r   r(   rc   s      r   test_polygon_from_linestringr      ss    =FfDdmG""1%/// fSbk"DdmG""1%///r   c                      t        t        dd      t        dd      t        dd      g      } g d}| j                  j                  d d  |k(  sJ y )Nr   r   r   )r   r   ra   r   )rc   r   s     r   test_polygon_from_pointsr      sI    uS#c3sCIJGFO""1%888r   c                  
   g d} t        | g dg      }t        |      }t        |j                  j                        dk(  sJ t        |j                        dk(  sJ t        |j                  d   j                        dk(  sJ y )Nr   r   r   r"   rf   rm   rY   r   )r   r%   ra   r   rb   )r   rc   copys      r   test_polygon_from_polygonr      sy    =FfSTUG 7Dt}}##$)))t~~!###t~~a ''(A---r   c                      t        j                  t              5  t        ddgddgg       d d d        y # 1 sw Y   y xY w)NrY   rU   rr   )r/   r0   r5   r   r   r   r   test_polygon_from_invalidr      s8    	z	" "!Q!Q !" " "s   5>c                      t               } | j                  sJ | j                  j                  d d  g k(  sJ t        g       } | j                  sJ | j                  j                  d d  g k(  sJ y r   )r   rE   ra   r   )rc   s    r   test_polygon_from_emptyr      sn    iG""1%+++bkG""1%+++r   c                      t        j                  d      } t        |       }t        |j                  j
                        dk(  sJ |j                  j
                  d d  g dk(  sJ t        |j                        dk(  sJ y )Nr   r   r   r"   r   rm   r   )rJ   rK   r   r%   ra   r   rb   )arc   s     r   test_polygon_from_numpyr      s|    
MNAajGw&&'1,,,""1% *    w  !Q&&&r   c                  p    g d} d | D        }t        |      }|j                  j                  d d  | k(  sJ y )Nr!   c              3       K   | ]  }|  y wr   r   r<   s     r   r?   z.test_polygon_from_generator.<locals>.<genexpr>   r@   rA   )r   ra   r   )r   rB   rc   s      r   test_polygon_from_generatorr      s9    =F
%f
%CclG""1%///r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestPolygonc                     d}t        |      }t        |j                        dk(  sJ |j                  d   |j                  d   k(  sJ |j                  d   |j                  d   k(  sJ |j                  du sJ y )Nr   rm   r   r#   r+   T)r   r%   r   is_ring)selfr   r   s      r   test_linearringzTestPolygon.test_linearring   sy     B&!4;;1$$${{1~Q///{{1~R000||t###r   c                 ~   d}t        |      }t        |j                  j                        dk(  sJ t	        |j                  t
              sJ |j                  }t        |j                        dk(  sJ |j                  d   |j                  d   k(  sJ |j                  d   dk(  sJ |j                  du sJ t        |j                        dk(  sJ |j                  }d }d }t        |      }|j                  }t        |j                        dk(  sJ |j                  d   |j                  d   k(  sJ |j                  d   dk(  sJ |j                  du sJ d }t        |dg      }t        |j                  j                        dk(  sJ t        |j                  d   j                        dk(  sJ t        j                  t              5  |j                  d    d d d        t        j                  t              5  |j                   d d d        |j                  d	d
dk(  sJ y # 1 sw Y   LxY w# 1 sw Y   *xY w)Nr   rm   r   r#   r   Trf   rY   r   )r   )rg   ri   rk   rl   rg   )typecoordinates)r   r%   ra   r   rF   r   r   rb   wkbload_wkbr/   r0   
IndexErrorNotImplementedError__geo_interface__)r   r   rc   r   datas        r   test_polygonzTestPolygon.test_polygon  s0   A &/7##**+q000 '**J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	 ((-
 
 	
 
	! 	!	 	s   H'=H3'H03H<c                 \    t               }|j                  dk(  sJ |j                  dk(  sJ y )NzLINEARRING EMPTYr   )r   wktlength)r   r_nulls     r   test_linearring_emptyz!TestPolygon.test_linearring_empty4  s.    zz////}}###r   c                     d}t        |      }|j                  dk(  sJ |j                  }|d   dk(  sJ |j                  }|j                  dk(  sJ |j                  }|d   dk(  sJ y )N)r   r   r   r   r   r   r   r   r   r   r   r   rr   r   )r   r   r   r   r   r   )r   _ndimr   ra   )r   r   rc   gies        r   test_dimensionszTestPolygon.test_dimensions:  s     V&/}}!!!&&-  %
 
 	
 
 ww!||  -  %
 
 	
 
r   c                    t        g d      }t        |j                  j                        g dk(  sJ t        t	        dd      j                  dd      j                  j                        }t        |t              sJ t        g dg dg      }|j                  dk(  sJ 	 t        |j                  d	   j                        g d
k(  sJ t        t        |j                  d	   j                  d      j                  j                              }t        |      dk(  sJ t        |j                  d      j                  j                        }t        |t              sJ y )Nr   r         r   r   r   )r   r   r   r   r   r   r   rY   )	quad_segs)      пrh   r         ?      r   r   rh   r   r   )r   r   r   r   r   rU   )r   listboundaryr   r   bufferra   rF   arearb   nextiterr%   )r   pecxys       r   test_attribute_chainsz!TestPolygon.test_attribute_chainsW  s;    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                     t        dd      }t        g d      }t        g d      }t               }t               }||k7  sJ ||k(  sJ ||k7  sJ ||k(  sJ |J y )Nr   r   )r   r   )r   point1polygon1polygon2polygon_empty1polygon_empty2s         r   test_empty_equalityzTestPolygon.test_empty_equality  sw     q!MNMN  !!!///>)))8###)))r   c                 z    d\  }}}}||f||f||f||fg}t        |      t        j                  ||||      k(  sJ y )N)iLi   Z   )r   from_bounds)r   xminyminxmaxymaxr   s         r   test_from_boundszTestPolygon.test_from_bounds  sQ    !3dD$,ttTlT4LIv'"5"5dD$"MMMMr   c                 J    t               }|j                  t               k(  sJ y r   )r   ra   r   )r   r   s     r   test_empty_polygon_exteriorz'TestPolygon.test_empty_polygon_exterior  s    IzzZ\)))r   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r      s-    $0
d$
:&$P* N
*r   r   c                     t        g d      } t        j                  t              5  g d| _        d d d        t        j                  t
              5  d| j                  d<   d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)Nr   )r   )       @r   )r   r   r   r   )r   r/   r0   AttributeErrorr   	TypeErrorrG   s    r   test_linearring_immutabler     sj    FGD	~	& ;:; 
y	! $#A$ $; ;$ $s   
A+A7+A47B c                       e Zd Zd Zd Zd Zy)TestLinearRingGetItemc                    t        g d      }t        g d      t        g d      t        g d      g}t        ||      }t        dd      D ]%  }|j                  |   j	                  ||         r%J  t        j                  t              5  |j                  d    d d d        t        j                  t              5  |j                  d    d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)Nrw   ry   r}   r   rr   )r   r   r   rb   equalsr/   r0   r   )r   r   rt   gr   s        r   test_index_linearringz+TestLinearRingGetItem.test_index_linearring  s    PQOPOPOP

 E5!r1 	3A;;q>((q222	3]]:& 	KKN	]]:& 	KKO	 		 		 	s   C>C#C #C,c                    t               }t        j                  t              5  |j                  d    d d d        t        j                  t
              5  |j                  d    d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)Nr   r   )r   r/   r0   r   rb   r   )r   r   s     r   test_index_linearring_miscz0TestLinearRingGetItem.test_index_linearring_misc  sg    I]]:& 	KKN	]]9% 	KK	 		 		 	s   A.A:.A7:Bc                    t        g d      }t        g d      t        g d      t        g d      g}t        ||      }t        |j                  dd  |dd        D cg c]  \  }}|j	                  |       }}}t        |      sJ t        |j                  d d |d d       D cg c]  \  }}|j	                  |       }}}t        |      sJ t        |j                  d d d   |d d d         D cg c]  \  }}|j	                  |       }}}t        |      sJ t        |j                  d d d   |d d d         D cg c]  \  }}|j	                  |       }}}t        |      sJ t        |j                  d d |d d       D cg c]  \  }}|j	                  |       }}}t        |      sJ |j                  dd  |dd  cxk(  rg k(  sJ  J y c c}}w c c}}w c c}}w c c}}w c c}}w )	Nrw   ry   r}   r   rY   r+   rU   rr   )r   r   ziprb   r   all)r   r   rt   r   r   bts          r   test_slice_linearringz+TestLinearRingGetItem.test_slice_linearring  s   PQOPOPOP

 E5!'*1;;qr?E!"I'FGVaQXXa[GG1vv'*1;;s+;U3BZ'HIVaQXXa[II1vv'*1;;tt+<eDbDk'JKVaQXXa[KK1vv'*1;;ss+;U3Q3Z'HIVaQXXa[II1vv'*1;;r?E"1I'FGVaQXXa[GG1vv{{12%)1r11111 HIKIGs   G)G%9G+	G1G7N)r   r   r   r   r   r   r   r   r   r   r     s    2r   r   )+__doc__numpyrJ   r/   shapelyr   r   r   r   shapely.coordsr   shapely.errorsr   shapely.wkbr	   r   r   r   r   r)   r,   r2   r6   r9   rC   rH   rL   rS   rW   r^   rd   ru   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   