
    Og$B                        d dl Zd dlZd dlZd dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZ eD  cg c]  }  ej$                  |       dk(  r|  c} Zej(                  ej*                  ej,                  ej.                  fZej2                  ej*                  fej4                  ej,                  fej6                  ej.                  ffZej6                  ej.                  ffZ ej<                  d d dd       ej<                  dddd       ej<                  d	d	d
d
       ej<                  dddd      gZeD cg c]  } ej@                  |      s|eefvr| c}Z!ejD                  jG                  de      ejD                  jG                  de      d               Z$ejD                  jK                  ejL                  dk\  d      ejD                  jG                  de      ejD                  jG                  dd dg      d                      Z'ejD                  jK                  ejL                  dk  d      ejD                  jG                  de      d               Z(ejD                  jK                  ejL                  dk  d      ejD                  jG                  de      ejD                  jG                  de      ejD                  jG                  dg d      d                             Z)ejD                  jG                  d e*dd            ejD                  jG                  de      d               Z+ejD                  jG                  de      d        Z,ejD                  jG                  de      d        Z-ejD                  jG                  de      d        Z.ejD                  jG                  d e*d             ejD                  jG                  de      d!               Z/ejD                  jG                  d e*d             ejD                  jG                  de      d"               Z0ejD                  jG                  de      d#        Z1ejD                  jG                  d e*dd             ejD                  jG                  de      d$               Z2ejD                  jG                  d e*dd             ejD                  jG                  de      d%               Z3ejD                  jK                  ejL                  dk\  d      ejD                  jG                  de      ejD                  jG                  dd dg      d&                      Z4ejD                  jK                  ejL                  dk  d      ejD                  jG                  de      d'               Z5ejD                  jK                  ejL                  dk  d      ejD                  jG                  de      d(               Z6ejD                  jK                  ejL                  dk  d      ejD                  jG                  d e*dd            ejD                  jG                  de      ejD                  jG                  dd dg      d)                             Z7ejD                  jK                  ejL                  dk  d      ejD                  jG                  de      d*               Z8ejD                  jK                  ejL                  dk  d      ejD                  jG                  d e*d             ejD                  jG                  de      d+                      Z9ejD                  jK                  ejL                  dk  d      ejD                  jG                  d e*d             ejD                  jG                  de      d,                      Z:ejD                  jK                  ejL                  dk  d      ejD                  jG                  d e*dd             ejD                  jG                  de      d-                      Z;ejD                  jK                  ejL                  d.k  d/      ejD                  jG                  d e*dd	            d0               Z<ejD                  jK                  ejL                  d.k  d/      d1        Z=ejD                  jK                  ejL                  d.k  d/      d2        Z>ejD                  jK                  ejL                  d.k  d/      ejD                  jG                  d3e!D cg c]  }e|g c}e!D cg c]  }e!D ]  }||g  c}}z         d4               Z?ejD                  jK                  ejL                  dk  d      ejD                  jG                  d5 ej<                  d6d6dd       ej<                  d d7d8d      gd  ed9      f ej<                  d6d6dd       ej<                  d d7d8d      gd6 ed9      f ej<                  d6d6dd       ej<                  d d7d8d      gd eg d:      f ej<                  d6d6dd       ej<                  d d7d8d      gd eg d;      f ej<                  d6d6dd       ej<                  d d7d8d      gd< e       fg      d=               Z@ejD                  jK                  ejL                  dk  d      d>        ZAyc c} w c c}w c c}w c c}}w )?    N)GeometryGeometryCollectionPolygon)UnsupportedGEOSVersionError)assert_geometries_equal)	all_typesemptyignore_invalidmulti_polygonpointpolygon            	   
   afuncc                 n   |t         j                  u rO| j                  dk(  r@t        j                  |       dk(  r(t         j                  dk(  rt        j                  d        || t              }t        |t              sJ  || | gt              }|j                  dk(  sJ t        |d   t              sJ y )Nr   r   )   r   r   z(GEOS 3.9.5 crashes with mixed collectionr   r   )shapely
difference	geom_typeget_num_geometriesgeos_versionpytestxfailr   
isinstancer   shape)r   r   actuals      f/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/shapely/tests/test_set_operations.pytest_set_operation_arrayr$   5   s     	"""KK//&&q)Q.  I-?@!U^Ffh'''1a&% F<<4fQi***    )r   r   r   zGEOS >= 3.9)reason	grid_size   c                     t        j                  t        d      5   | t        t        |       d d d        y # 1 sw Y   y xY wNz*grid_size parameter requires GEOS >= 3.9.0matchr   raisesr   r   )r   r'   s     r#   &test_set_operations_prec_not_supportedr/   G   s9     
#+W
 & 	UE9%& & &s	   8Az
GEOS < 3.9c                     t        j                  t        d      5   | t        t        dg       d d d        y # 1 sw Y   y xY wNz.grid_size parameter only accepts scalar valuesr+   r(   r'   r   r.   
ValueErrorr   )r   s    r#   +test_set_operation_prec_nonscalar_grid_sizer5   Q   s;     
J
 * 	UEaS)* * *s	   :A)r   r(   r   c                     || | gt         |      }|j                  dk(  sJ t        |d   t              sJ t	        j
                  | |      }t	        j
                  t         |      } |||g|      }t	        j                  t	        j                  |      t	        j                  |            j                         sJ y )Nr2   r   r   )	r   r!   r    r   r   set_precisionequals	normalizeall)r   r   r'   r"   bpoint2expecteds          r#   test_set_operation_prec_arrayr>   Z   s    
 1a&%95F<<4fQi*** 	a95A""5I>FQFF#H>>'++F3W5F5Fx5PQUUWWWr%   nzfunc, related_funcc                      |t         d |        }t         d   }t        d|       D ]  } ||t         |         } t        j                  ||      sJ y )Nr   r(   reduce_test_dataranger   r8   )r?   r   related_funcr"   r=   is         r#   test_set_operation_reduce_1dimrF   l   s[     "2A&'F"H1a[ ?*:1*=>?>>&(+++r%   c                 v    t        j                  dd      } | |d d g      }t        j                  ||      sJ y )Nr(   )r   Pointr8   )r   rD   geomr"   s       r#   %test_set_operation_reduce_single_geomrJ   w   s7    ==AD4t$%F>>&$'''r%   c                     t         gdz  gdz  } | |d       }t        |t              sJ  | |d      }|j                  dk(  sJ  | |d      }|j                  dk(  sJ  | |d      }|j                  dk(  sJ y )	Nr   r   axisr   r   r(   r   r   r    r   r!   r   rD   datar"   s       r#   test_set_operation_reduce_axisrS   ~   s    GaK=1D$T"Ffh'''$QF<<4$QF<<4$R F<<4r%   c                 4    | t        j                  dt                    t        k(  sJ t        j                  dt              } | |      t        k(  sJ  | |d      j                         t        gdz  k(  sJ  | |d      j                         g k(  sJ y )N)r   )dtype)r   r   r   rL   r   r(   )npr	   objecttolist)r   rD   arr_empty_2Ds      r#   test_set_operation_reduce_emptyrZ      s    V,-66688F&1L&&&1%,,.5'A+===1%,,."444r%   none_positionr   c                     t         d d }|j                  |d         | |      } |t         d   t         d         }t        ||       y Nr   r   r(   rB   insertr   r   rD   r[   	test_datar"   r=   s         r#   "test_set_operation_reduce_one_nonerb      sK     !!$I]D))_F,Q/1A!1DEHFH-r%   c                     t         d d }|j                  |d        |j                  |d         | |      } |t         d   t         d         }t        ||       y r]   r^   r`   s         r#   "test_set_operation_reduce_two_nonerd      s[     !!$I]D)]D))_F,Q/1A!1DEHFH-r%   c                 2     | t         d g      t         k(  sJ y N)r	   r   rD   s     r#   (test_set_operation_reduce_some_none_len2rh      s     %'''r%   c                 B    t         |d g| z        t        g              y rf   r   r   r?   r   rD   s      r#   "test_set_operation_reduce_all_nonerl      s     D$!,.@.DEr%   c                      |d g| z  gdz  d      j                         t        t        gk(  sJ  |d gdz  g| z  d      j                         t        t        gk(  sJ y )Nr   r(   rL   r   )rX   r	   rk   s      r#   &test_set_operation_reduce_all_none_arrrn      sb     $!q q)002uenDDD$!q q)002uenDDDr%   c                     t        j                  t        d      5   | t        t        g|       d d d        y # 1 sw Y   y xY wr*   r-   )r   rD   r'   s      r#   ,test_set_operation_prec_reduce_not_supportedrp      s;     
#+W
 ( 	eU^Y'( ( (s	   9Ac                     t        j                  t        d      5   | t        t        gdg       d d d        y # 1 sw Y   y xY wr1   r3   rg   s     r#   2test_set_operation_prec_reduce_nonscalar_grid_sizerr      s=     
J
 , 	eU^s+, , ,s	   ;Ac                 P     | t         t         gt        j                        }|J y Nr2   )r   rV   nan)r   rD   r"   s      r#   ,test_set_operation_prec_reduce_grid_size_nanrv      s"     5%.BFF3F>>r%   c                      |t         d |  |      }t         d   }t        d|       D ]  } ||t         |   |      } t        j                  ||      sJ y )Nr2   r   r(   rA   )r?   r   rD   r'   r"   r=   rE   s          r#   #test_set_operation_prec_reduce_1dimrx      sc    
 "2A&)<F"H1a[ T*:1*=ST >>&(+++r%   c                    t         gdz  gdz  } | |dd       }t        |t              sJ  | |dd      }|j                  dk(  sJ  | |dd      }|j                  dk(  sJ  | |dd      }|j                  dk(  sJ y )	Nr   r   r(   )r'   rM   r   r   rN   rO   rP   rQ   s       r#   #test_set_operation_prec_reduce_axisrz      s     GaK=1D$!$/Ffh'''$!!,F<<4$!!,F<<4$!"-F<<4r%   c                     t         d d }|j                  |d         | |d      } |t         d   t         d   d      }t        ||       y Nr   r(   r2   r   r^   r`   s         r#   'test_set_operation_prec_reduce_one_noner}      sQ     !!$I]D))q)F,Q/1A!1DPQRHFH-r%   c                     t         d d }|j                  |d        |j                  |d         | |d      } |t         d   t         d   d      }t        ||       y r|   r^   r`   s         r#   'test_set_operation_prec_reduce_two_noner     sa     !!$I]D)]D))q)F,Q/1A!1DPQRHFH-r%   c                 F    t         |d g| z  d      t        g              y )Nr(   r2   rj   rk   s      r#   'test_set_operation_prec_reduce_all_noner     s!     D$!q9;Mb;QRr%   )r      r   z
GEOS < 3.8c                 <   t        j                  dddd      t        j                  dddd      t        j                  dddd      g}t        j                  |d|        }|d   }t        d|       D ]  }t        j                  |||         } t        ||d       y)z
    This is tested separately from other set operations as it differs in two ways:
      1. It expects only non-overlapping polygons
      2. It expects GEOS 3.8.0+
    r   r(   r   r   NTr9   )r   boxcoverage_union_allrC   coverage_unionr   )r?   ra   r"   r=   rE   s        r#   test_coverage_union_reduce_1dimr     s     	Aq!QAq!QAq!QI
 ''	"16F|H1a[ B))(IaLABFH=r%   c                     t        d      D  cg c]7  } t        d      D cg c]   }t        j                  || |dz   | dz         " c}9 }} }t        j                  |d       }t	        |t
              sJ t        j                  |d      }|j                  dk(  sJ t        j                  |d      }|j                  dk(  sJ t        j                  |d      }|j                  dk(  sJ y c c}w c c}} w )	Nr   r   r(   rL   r   r   rN   rO   )rC   r   r   r   r    r   r!   )jrE   rR   r"   s       r#   test_coverage_union_reduce_axisr   )  s     JOqRAeAh?W[[Aq1ua!e,?RDR''48Ffh'''''15F<<4''15F<<4''26F<<4 @Rs   C5%C0C50C5c                  v   t        g d      } t        g d      }t        j                  dk\  r<t        j                  | |      }t        j                  | |g      }t        ||d       y t        j                  t        j                  d      5  t        j                  | |       d d d        y # 1 sw Y   y xY w)N)r(   r(   r(   r   r   r   )r   r(   r   )r   )g?r(   )r   r(   )r   r   r   r      r   Tr   z6CoverageUnion cannot process incorrectly noded inputs.r+   )	r   r   r   r   multipolygonsr   r   r.   GEOSException)r   otherresultr=   s       r#   &test_coverage_union_overlapping_inputsr   7  s    >?G>?Ez)''7(('5)9:DA ]]!!J
 	3 ""7E2		3 	3 	3s   B//B8zgeom_1, geom_2c                 D   t         j                  dk\  rfd |       } |      }t        |      dk(  r;||k(  r6t               5  t        j                  | |      }d d d        |       k(  sGJ t        j                  t         j                  d      5  t        j                  | |       d d d        y y t        j                  t         j                  d      5  t        j                  | |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   c                     t        | d      r4| j                  s(t               }| j                  D ]  } | |       z  } |S | j                  j                  d      j                  dd      hS )NgeomsMulti
LinearRing
LineString)hasattris_emptysetr   r   lstripreplace)rI   gtseffective_geom_typess     r#   r   zDtest_coverage_union_non_polygon_inputs.<locals>.effective_geom_typesY  sg    tW%dmme JJ 6D/55C6
NN))'2::<VWWr%   r(   z Overlay input is mixed-dimensionr+   z)Unhandled geometry type in CoverageUnion.)r   r   lenr
   r   r   r.   r   )geom_1geom_2geom_types_1geom_types_2r   r   s        @r#   &test_coverage_union_non_polygon_inputsr   J  s    z)	X ,F3+F3|!ll&B! @ //?@  #7#????%%-O 7 &&vv67 7 @ ]]!!)T
 	3 ""662	3 	3@ @
7 7	3 	3s$   C>D
D>D
DDzgeom,grid_size,expected皙?皙?ffffff@)	r   r   r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r   )r   r   r   )r   r   )r   r   )r   r   r   r   )r   )r   r   )r   r   r   r   d   c                 b    t        j                  | |      }t        j                  ||      sJ y rt   )r   	union_allr8   )rI   r'   r=   r"   s       r#   test_union_all_precr   u  s+    | ty9F>>&(+++r%   c                      t        j                  dddd      t        j                  dddd      g} t        j                  | d      }t        j                  | d      }t        j                  ||      sJ y )	Nr   r   r   r   r   r   r(   r2   )r   r   unary_unionr   r8   )r   r"   r=   s      r#   test_uary_union_aliasr     sb    [[c1a('++ac2*FGE  !4F  !4H>>&(+++r%   )BnumpyrV   r   r   r   r   r   shapely.errorsr   shapely.testingr   shapely.tests.commonr   r	   r
   r   r   r   get_type_idall_single_typesr   intersectionsymmetric_differenceunionSET_OPERATIONSintersection_allsymmetric_difference_allr   REDUCE_SET_OPERATIONSREDUCE_SET_OPERATIONS_PRECr   rB   r   non_polygon_typesmarkparametrizer$   skipifr   r/   r5   r>   rC   rF   rJ   rS   rZ   rb   rd   rh   rl   rn   rp   rr   rv   rx   rz   r}   r   r   r   r   r   r   r   r   )grI   non_polygonnon_polygon_1non_polygon_2s   00000r#   <module>r      s?      9 9 6 3   )L!0C0C0CA0F!0KAL    MM	 w334%%w'C'CD&   '00'--@B  GKK1aGKK1aGKK1aGKK1b"	  GT"tG]3K'K 	  i(0+ 1 )+  G((I5mL0q!f-& . 1 M& G((94\J0* 1 K* G((94\J./0i0X 1 1 0 KX eAqk*-/DE, F +, -/DE( F( -/DE	  F	  -/DE5 F5 %(3-/DE. F 4. %(3-/DE. F 4. -/DE( F( eAqk*-/DEF F +F eAqk*-/DEE F +E
 G((I5mL-/IJq!f-( . K M( G((94\J-/IJ, K K, G((94\J-/IJ K K
 G((94\JeAqk*-/IJq!f-, . K + K, G((94\J-/IJ	  K K	  G((94\J%(3-/IJ. K 4 K. G((94\J%(3-/IJ. K 4 K. G((94\JeAqk*-/IJS K + KS G((94\JeAqk*> + K>& G((94\J
  K
  G((94\J3 K3$ G((94\J/@Ag{A /.  
&&
3
 K3> G((94\J W[[c1a(+'++ac2*FG
	
& W[[c1a(+'++ac2*FG
	
& W[[c1a(+'++ac2*FGNO	
 W[[c1a(+'++ac2*FGAB	
 W[[c1a(+'++ac2*FGI	
g8;x,y; Kz,
 G((94\J, K,M M8@	 Bs   kk=!k!'k&9k+