
    (&h0                         d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZ  G d de j                  Z G d d	e j                  ZdS )
    N)pi)affinity)Point)loadsc                   &    e Zd Zd Zd Zd Zd ZdS )AffineTestCasec                    t          d          }t          j        t                    5  t	          j        |d            d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        |g d           d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        d g d           d d d            d S # 1 swxY w Y   d S )NLINESTRING(2.4 4.1, 2.4 3, 3 3))	                        	   )r   r   r   r   r   r   )load_wktpytestraises	TypeErrorr   affine_transform
ValueErrorAttributeError)selfgs     ]/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/tests/legacy/test_affinity.pytest_affine_paramsz!AffineTestCase.test_affine_params   s   677]9%% 	/ 	/%a...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ]:&& 	F 	F%a)D)D)DEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F ]>** 	@ 	@%d,>,>,>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s5   AAA/BBB7CC #C c                 b  	
 d	d
t          d          }t          j        |	          j        sJ d	
fd	}t          d          }t          d          } |||           t          d          }t          d          } |||           t          d	          }t          d
          } |||            |t          d                      |t          d                      |t          d                      |t          d                      |t          d                     d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   zMULTIPOLYGON EMPTYc                    | j         rJ t          j        |           }|j         rJ |                     |          sJ |>|j         sJ t          j        |          }|j         sJ |                    |          sJ d S d S N)has_zr   r   equals)g2g3a2a3matrix2dmatrix3ds       r   	test_geomz8AffineTestCase.test_affine_geom_types.<locals>.test_geom"   s    x*2x88Bx99R==   ~x.r8<<xyy}}$$$	 ~ %$    zPOINT(12.3 45.6)zPOINT(12.3 45.6 7.89)z#LINESTRING(0.9 3.4, 0.7 2, 2.5 2.7)z/LINESTRING(0.9 3.4 3.3, 0.7 2 2.3, 2.5 2.7 5.5)z,LINEARRING(0.9 3.4, 0.7 2, 2.5 2.7, 0.9 3.4)z<LINEARRING(0.9 3.4 3.3, 0.7 2 2.3, 2.5 2.7 5.5, 0.9 3.4 3.3)zwPOLYGON((0.9 2.3, 0.5 1.1, 2.4 0.8, 0.9 2.3), (1.1 1.7, 0.9 1.3, 1.4 1.2, 1.1 1.7), (1.6 1.3, 1.7 1, 1.9 1.1, 1.6 1.3))z<MULTIPOINT ((-300 300), (700 300), (-800 -1100), (200 -300))zFMULTILINESTRING((0 0, -0.7 -0.7, 0.6 -1), (-0.5 0.5, 0.7 0.6, 0 -0.6))zjMULTIPOLYGON(((900 4300, -1100 -400, 900 -800, 900 4300)), ((1200 4300, 2300 4400, 1900 1000, 1200 4300)))zkGEOMETRYCOLLECTION(POINT(20 70), POLYGON((60 70, 13 35, 60 -30, 60 70)), LINESTRING(60 70, 50 100, 80 100))r!   )r   r   r   is_empty)r   empty2dr*   pt2dpt3dls2dls3dlr2dlr3dr(   r)   s            @@r   test_affine_geom_typesz%AffineTestCase.test_affine_geom_types   s   %7 /00((;;DDDD		% 		% 		% 		% 		% 		% 		% *++/00	$=>>IJJ	$FGGVWW	$	6 	
 	
 	
 		STT	
 	
 	
 		X 	
 	
 	

 		B 	
 	
 	
 		6 	
 	
 	
 	
 	
r+   c                 "   t          d          }t          d          }d}t          j        ||          }|                    |d          sJ |j        rJ d}t          j        ||          }|                    |d          sJ |j        rJ d S )Nr
   )LINESTRING(-0.2 14.35, -0.2 11.6, 1 11.6)r   r   r         @ffffff@ư>)r   r   r   r   r8   r   r   r   
   r9   r:   d   )r   r   r   equals_exactr"   )r   r   
expected2dr(   r&   r)   r'   s          r   test_affine_2dzAffineTestCase.test_affine_2dS   s    677IJJ
*&q(33z4000008?&q(33z4000008r+   c                 $   t          d          }t          d          }d}d}t          j        ||          }t          j        ||          }t          j        ||          }t          j        ||          }|j        rJ |j        rJ |j        sJ |j        sJ t          d          }	t          d          }
t          d          }|                    |	d          sJ |                    |	d          sJ t          |j        |j                  D ]1\  }}t          ||          D ]\  }}|                     ||           2t          |j        |
j                  D ]1\  }}t          ||          D ]\  }}|                     ||           2d S )	Nr
   z1LINESTRING(2.4 4.1 100.2, 2.4 3 132.8, 3 3 128.6)r7   )r   r   r   r   r8   r   r   r   gׁ?r9   r:   r=   r6   zGLINESTRING(-0.2 14.35 130.54096, -0.2 11.6 140.47744, 1 11.6 139.19728)z;LINESTRING(-0.2 14.35 100.2, -0.2 11.6 132.8, 1 11.6 128.6)r;   )r   r   r   r"   r>   zipcoordsassertAlmostEqual)r   r$   r%   r(   r)   a22a23a32a33r?   
expected3d
expected32aeapeps                   r   test_affine_3dzAffineTestCase.test_affine_3da   s   788IJJ*C'H55'H55'H55'H5599yy IJJ
U
 

 I
 

 
D11111
D11111
J$566 	/ 	/DAqa)) / /B&&r2..../
J$566 	/ 	/DAqa)) / /B&&r2..../	/ 	/r+   N)__name__
__module____qualname__r   r4   r@   rO    r+   r   r   r      sT        
@ 
@ 
@8
 8
 8
t  !/ !/ !/ !/ !/r+   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TransformOpsTestCasec                 "   t          d          }t          j        |d          }t          d          }|                    |          sJ t          j        |dd          }|                    |          sJ t          j        |t           dz  d          }t          d	          }|                    |          sJ t          j        |dd
          }t          d          }|                    |          sJ t          j        |d|j        d                   }t          d          }|                    |          sJ t          j        |dt          dd                    }t          d          }|                    |          sJ d S )N%LINESTRING(240 400, 240 300, 300 300)Z   %LINESTRING(220 320, 320 320, 320 380)center)geomangleoriginr   Tuse_radiansz%LINESTRING(320 380, 220 380, 220 320)centroidr]   z+LINESTRING(182.5 320, 282.5 320, 282.5 380)r   z%LINESTRING(140 300, 240 300, 240 360)r   z(LINESTRING(-400 240, -300 240, -300 300))r   r   rotater#   r   rC   r   )r   lsrlselss       r   test_rotatez TransformOpsTestCase.test_rotate   su   =>>ob"%%>??zz#o2RAAAzz#ob2#'t<<<>??zz# ob"Z888DEEzz#ob"RYq\:::>??zz#ob"U1a[[999ABBzz#r+   c                     t          j        t          d          d          }t          d          }|                    |          sJ d S )NLINESTRING EMPTYrX   )r   rb   r   r#   )r   rd   re   s      r   test_rotate_emptyz&TransformOpsTestCase.test_rotate_empty   sF    oh'9::B??)**zz#r+   c                    t          d          }t          d          }t          j        d          }t          j        ||          }|                                dk    sJ |                    |          sJ t          j        t          dz            }t          j        ||d          }|                                t          dz  k    sJ |                    |          sJ d S )NrW   rY   g     V@r   Tr^   )r   nparrayr   rb   itemr#   r   )r   rc   re   thetard   s        r   test_rotate_angle_arrayz,TransformOpsTestCase.test_rotate_angle_array   s    =>>>??ob%((zz||t####zz#a  ob%T:::zz||rAv%%%%zz#r+   c                    t          d          }t          j        |          }|                    |          sJ t          j        |ddd          }t          d          }|                    |          sJ t	          |j        |j                  D ]1\  }}t	          ||          D ]\  }}|                     ||           2t          j        |dddd          }|                    |          sJ t          j        |dddd	          }t          d
          }|                    |          sJ t          j        |ddd|j        d         	          }t          d          }|                    |          sJ t          j        |dddt          ddd          	          }t          d          }|                    |          sJ t	          |j        |j                  D ]#\  }}t	          ||          D ]\  }}||k    sJ $d S )N.LINESTRING(240 400 10, 240 300 30, 300 300 20)r   r   g      ?z-LINESTRING(210 500 5, 210 200 15, 330 200 10)rZ   )r[   xfactyfactzfactr]   r`   ra   z4LINESTRING(228.75 537.5, 228.75 237.5, 348.75 237.5)r   z%LINESTRING(240 600, 240 300, 360 300)r=      i  z1LINESTRING(380 800 505, 380 500 515, 500 500 510))r   r   scaler#   rB   rC   assertEqualr   )r   rc   slsre   rK   brM   bps           r   
test_scalezTransformOpsTestCase.test_scale   s"   FGGnR  zz"~~nRAs++FGGzz#
CJ// 	) 	)DAqa)) ) )B  R(((() n"AQc(SSSzz# nRAs:>>>MNNzz#nRAs29Q<@@@>??zz#nRAs5c43H3HIIIJKKzz#
CJ// 	  	 DAqa))    BRxxxxx 	  	 r+   c                     t          j        t          d                    }t          d          }|                    |          sJ d S Nrh   )r   rv   r   r#   r   rx   re   s      r   test_scale_emptyz%TransformOpsTestCase.test_scale_empty   sD    nX&899::)**zz#r+   c           	         t          d          }t          j        |          }|                    |          sJ t          j        |dd          }t          d          }|                    |d          sJ t          j        |t
          dz  t
           dz  d	          }|                    |d          sJ t          j        |ddd
d          }|                    |d          sJ t          j        |ddd          }t          d          }|                    |d          sJ t          j        |dd|j        d                   }t          d          }|                    |d          sJ t          j        |ddt          dd                    }t          d          }|                    |d          sJ d S )Nrq      i~LINESTRING (253.39745962155615 417.3205080756888, 226.60254037844385 317.3205080756888, 286.60254037844385 282.67949192431126)r;      r   Tr^   rZ   F)r[   xsysr]   r_   r`   ra   zLINESTRING(258.42150697963973 406.49519052838332, 231.6265877365273980 306.4951905283833185, 291.6265877365274264 271.8541743770057337)r   zGLINESTRING(266.7949192431123038 400, 240 300, 300 265.3589838486224153)r   zLINESTRING(347.179676972449101 261.435935394489832, 320.3847577293367976 161.4359353944898317, 380.3847577293367976 126.7949192431122754))r   r   skewr#   r>   r   rC   r   )r   rc   rx   re   s       r   	test_skewzTransformOpsTestCase.test_skew   s   FGGmBzz"~~mBC((5
 

 T*****mBR"qdCCCT*****ms8QVWWWT***** mBC
;;;9
 

 T*****mBC	!===U
 
 T*****mBCa<<<9
 

 T*******r+   c                     t          j        t          d                    }t          d          }|                    |          sJ d S r}   )r   r   r   r#   r~   s      r   test_skew_emptyz$TransformOpsTestCase.test_skew_empty  sD    mH%78899)**zz#r+   c                 :   t          d          }t          d          }t          j        ddg          }t          j        ||d         |d                   }|d         dk    sJ |d         dk    sJ |                    |d	          sJ t          j        t          d
z  t           dz  g          }t          j        ||d         |d         d          }|d         t          d
z  k    sJ |d         t           dz  k    sJ |                    |d	          sJ d S )Nrq   r   g      .@g      >)r   .)r   .r   r   r;   r   r   Tr^   )r   rk   rl   r   r   r>   r   )r   rc   re   xs_ysrx   s        r   test_skew_xs_ys_arrayz*TransformOpsTestCase.test_skew_xs_ys_array  s.   FGG5
 
 $''mBfuV}==Qx4Qx5    T*****"r'B37+,,mBfuV}$OOOQx27""""QxB37""""T*******r+   c                    t          d          }t          j        |          }|                    |          sJ t          j        |ddd          }t          d          }|                    |          sJ t	          |j        |j                  D ]#\  }}t	          ||          D ]\  }}||k    sJ $t          j        |ddd          }|                    |          sJ d S )Nrq   r=   i  iz-LINESTRING(340 800 0, 340 700 20, 400 700 10))r[   xoffyoffzoff)r   r   	translater#   rB   rC   )r   rc   tlsre   rK   ry   rM   rz   s           r   test_translatez#TransformOpsTestCase.test_translate  s    FGG $$zz"~~ S#s33FGGzz#
CJ// 	  	 DAqa))    BRxxxxx   bs3GGGzz#r+   c                     t          j        t          d                    }t          d          }|                     |                    |                     |                    |          sJ d S r}   )r   r   r   
assertTruer#   )r   r   re   s      r   test_translate_emptyz)TransformOpsTestCase.test_translate_empty0  sa     *<!=!=>>)**

3(((zz#r+   N)rP   rQ   rR   rf   ri   ro   r{   r   r   r   r   r   r   rS   r+   r   rU   rU      s          6  
          D  
)+ )+ )+V  
+ + +(  "    r+   rU   )unittestmathr   numpyrk   r   shapelyr   shapely.geometryr   shapely.wktr   r   TestCaser   rU   rS   r+   r   <module>r      s                      " " " " " " ) ) ) ) ) )v/ v/ v/ v/ v/X& v/ v/ v/ro o o o o8, o o o o or+   