
    \i                         S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJrJ	r	J
r
Jr  S SKJr   " S S\ R                  5      rg)    N)geos_version)TopologicalError)GeometryCollection
LineString
MultiPointPointPolygon)loadsc                   2    \ rS rSrS rS rS rS rS rSr	g)	OperationsTestCase   c                    [        SS5      nUR                  S:X  d   eUR                  S:X  d   eUR                  [        SS5      5      [        R
                  " S5      :X  d   e[        UR                  [         5      (       d   eUR                  [        SS5      5      R                  (       d   e[        UR                  S5      [        5      (       d   e[        UR                  SSS9[        5      (       d   e[        S5      n[        S	5      nUR                  SS
S9nUR                  US5      (       d   e[        S5      n[        S5      nUR                  SSS9nUR                  US5      (       d   e[        UR                  [         5      (       d   e[        UR!                  [        SS5      5      [         5      (       d   e[        UR#                  [        SS5      5      [$        5      (       d   e[        UR&                  [(        5      (       d   e[        UR+                  [        SS5      5      [$        5      (       d   e[        UR-                  5       [         5      (       d   e[        UR/                  5       [         5      (       d   eUR-                  5       UR/                  5       :X  d   e[        UR0                  [         5      (       d   eg )Ng        g      g;f?g      $@    )	quad_segszRPOLYGON ((120 120, 140 199, 160 200, 180 199, 220 120, 122 122, 121 121, 120 120))z@POLYGON ((120 120, 140 199, 160 200, 180 199, 220 120, 120 120))F)preserve_topologygMbP?ziPOLYGON ((80 200, 240 200, 240 60, 80 60, 80 200),(120 120, 220 120, 180 199, 160 200, 140 199, 120 120))T   )r   arealengthdistancepytestapprox
isinstanceenvelopeintersectionis_emptybufferr	   r
   simplifyequals_exactconvex_hull
differencesymmetric_differencer   boundaryr   unionrepresentative_pointpoint_on_surfacecentroid)selfpointpexpectedss        g/var/www/html/kml_chatgpt/mouzaenv/lib/python3.13/site-packages/shapely/tests/legacy/test_operations.pytest_operations"OperationsTestCase.test_operations   s~   c3 zzS   ||s"""~~eD$/0FMMBT4UUUU
 %..%0000 !!%B-09999 %,,t,g6666%,,tr,:GDDDD 
 N
 JJtuJ5~~h....F
 F
 JJttJ4~~h.... %++U3333 %**5Q<8%@@@@%44U2q\BJOOOO %..*<==== %++eBl3Z@@@@%446>>>>%002E::::))+u/E/E/GGGG%..%0000    c                    [        SS5      R                  [        SS5      5      S:X  d   e[        S5      nUR                  (       a   e[        S:  aE  [
        R                  " [        [        R                  45         UR                  U5        S S S 5        g UR                  U5      S:X  d   eg ! , (       d  f       g = f)Nr   r   	FF0FFF0F2zUPOLYGON ((40 100, 80 100, 80 60, 40 60, 40 100), (60 60, 80 60, 80 40, 60 40, 60 60)))      r   	2FFF1FFF2)
r   relater
   is_validr   r   raisesr   shapelyGEOSException)r(   invalid_polygons     r-   test_relateOperationsTestCase.test_relateK   s    Q{!!%B-0K???  3
 #++++*$ 0'2G2GHI&&7 JI #))/:kIII JIs   >B11
B?c                     [        SS5      n[        / SQ5      nUR                  U5      nX1R                  [        SS5      5      :X  d   eg )Nr   ))   r   )r?      )r3   r@   r3   r@   )r   r   hausdorff_distancer   )r(   r)   liner   s       r-   test_hausdorff_distance*OperationsTestCase.test_hausdorff_distance[   sC    a23++D1>>%1+6666r0   c                    [        SS/5      n[        SS5      nUR                  SSS9nX2:X  d   e[        S5      nUR                  (       d   eUR                  SSS9nUR                  (       d   e[        S	5      n[
        R                  " [        S
S9   UR                  SSS9  S S S 5        g ! , (       d  f       g = f)N)r   r   )r   r?   r   g      ?g      ?T)
normalizedzLINESTRING EMPTYzPOLYGON EMPTYzincorrect geometry type)match)r   r   interpolater
   r   r   r8   	TypeError)r(   	test_lineknown_pointinterpolated_point
empty_linepolygons         r-   test_interpolate#OperationsTestCase.test_interpolateb   s    /0	Asm&22342H!000 -.
""""'33CD3I!**** (]]9,EF5 GFFs   B00
B>c                     [        SS5      nUR                  5       nX!:X  d   e[        S5      nUR                  5       n[        S5      nX$:X  d   eg )Nr   z(MULTILINESTRING ((1 1, 0 0), (1 1, 1 2))z(MULTILINESTRING ((1 1, 1 2), (0 0, 1 1)))r   	normalizer
   )r(   r)   resultrB   r+   s        r-   test_normalize!OperationsTestCase.test_normalizet   sQ    a"?@!CD!!!r0    N)
__name__
__module____qualname____firstlineno__r.   r<   rC   rO   rT   __static_attributes__rV   r0   r-   r   r      s    <1|J 76$"r0   r   )unittestr   r9   r   shapely.errorsr   shapely.geometryr   r   r   r   r	   shapely.wktr
   TestCaser   rV   r0   r-   <module>ra      s1         + W W p"** p"r0   