
    jj|                        S SK r S SKrS SKrS SKJr  S SKJrJ	r	J
r
JrJr  S SKrS SKJrJrJrJr  S SKJrJr  S SKrS SKJrJr   S SKJr  \ R:                  R=                  \ R:                  R?                  \ R:                  RA                  \!5      5      S
S5      r"\RF                  S 5       r$\RF                  " / SQS9S 5       r%\RF                  " / SQS9S 5       r&\RF                  " SS/S9S 5       r'S r(\RR                  RU                  SSS/5      S 5       r+\RR                  RY                  S5      S 5       r-S r.\RR                  RU                  SSS/5      S 5       r/S r0S r1S r2\RR                  Rg                  \(       + S S!9S" 5       r4\RR                  Rg                  \(       + S S!9S# 5       r5S$ r6S% r7S& r8\RR                  RU                  S'/ S(Q5      S) 5       r9S* r:S+ r;S, r<S- r=S. r>S/ r?\RR                  RU                  S0SS/5      S1 5       r@S2 rAS3 rBS4 rCS5 rD " S6 S75      rEg! \ a     " S S	\5      r GNf = f)8    N
make_valid)GeometryCollection
LineStringPointPolygonbox)GeoDataFrame	GeoSeriesoverlay	read_file)
HAS_PYPROJPANDAS_INFER_STR)assert_geodataframe_equalassert_geoseries_equal)DriverErrorc                       \ rS rSrSrg)r       N)__name__
__module____qualname____firstlineno____static_attributes__r       _/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/tests/test_overlay.pyr   r      s    r   r   datar   c                     [        [        / SQ5      [        / SQ5      /5      n[        [        / SQ5      [        / SQ5      /5      n[        SS/US.5      n[        SS/US.5      nX44$ )	Nr   r      r   r"   r"   r   r"   )r#      r"   r&   r&   r"   r&      r+      r+   r-   r-   r+   r-   r.      r-   r2   r2   r-   r2   r+   r"   col1geometry)col2r7   )r   r   r
   )requests1s2df1df2s        r   dfsr>      su    	4545	

B 
4545	

B AB7
8C
AB7
8C8Or   )zdefault-index	int-indexstring-index)paramsc                     Uu  p#U R                   S:X  a  SS/Ul        SS/Ul        U R                   S:X  a	  SS/Ul        X#4$ )Nr?   r+   r"   r   r@   row1row2)paramindex)r9   r>   r<   r=   s       r   	dfs_indexrG   .   sJ    HC}}#F	F	}}&V$	8Or   )unionintersection
differencesymmetric_differenceidentityc                     U R                   $ NrE   r9   s    r   howrQ   9   s     ==r   TFc                     U R                   $ rN   rO   rP   s    r   keep_geom_typerS   @   s    ==r   c                    U u  p#[        X#US9nS nUS:X  a(  U" S5      nU" S5      n[        R                  " Xg/SSS9nOU" U5      nUS	:X  a!  UR                  S
S/5      R	                  SS9nOUS:X  a  UR	                  SS9n[        XHSS9  US:X  a,  [        X2US9nUR	                  SS9nU" S5      n[        XHSS9  gg)z
Basic overlay test with small dummy example dataframes (from docs).
Results obtained using QGIS 2.16 (Vector -> Geoprocessing Tools ->
Intersection / Union / ...), saved to GeoJSON
rQ   c           	         [        [        R                  R                  [        SSU  S35      5      nS UR
                  R                  l        UR                  UR                  S:H      H  nX   R                  S5      X'   M     U$ )Npolyszdf1_df2-.geojsonint32int64)r   ospathjoinDATAr7   arraycrscolumnsdtypesastype)nameexpectedcols      r   _readtest_overlay.<locals>._readP   sr    RWW\\$8D69RST&*###HOOw$>?C$M009HM @r   rL   rI   rJ   TF)ignore_indexsortrH   r6   r8   drop)check_column_typezdifference-inverseN)r   pdconcatsort_valuesreset_indexr   )	rG   rQ   r<   r=   resultrg   expected_intersectionexpected_differencere   s	            r   test_overlayru   E   s     HCS3'F j %n 5#L199"8tRW
 : g~##VV$45AAtAL		###.f%H ls+###.-.!&eL	 r   rS   c                 N   [        / SQ5      n[        S5      n[        R                  " SSS/0X/S9n[        R                  " SSS	/0X"/S9nUR                  X@S
9n[	        U5      S:X  d   eU (       a2  UR
                  R                  S/5      R                  5       (       d   eg g )N)r    r*   r+   r"   r*   r    )r    r+   r   r*   )r   r+   r    Ar+   r"   r7   Br2      rS   r   )r   	geopandasr
   r   len	geom_typeisinall)rS   invalid_polygonsquarer<   r=   df1_df2s         r   test_overlay_invalid_inputr   p   s    FGO=>F

 
 #1v/9R
SC

 
 #1v&9I
JCkk#k=G w<1  %%yk2668888 r   z)ignore:GeoSeries crs mismatch:UserWarningc           	         [        U5      n[        [        R                  R                  [        SS5      5      n[        X#U S9n/ SQnU S:X  a  US S nU S:X  a/  [        [        R                  R                  [        SS5      5      nO2[        [        R                  R                  [        SS	U  S
35      5      nU S:X  a#  UR                  SS/5      nUR                  SSS9  XfR                     nUR                  SSS9  U S:X  aV  XfR                  R                  5          R                  5       nUS   R                  nUS;   a  US   R                  U5      US'   UR                  U5      R                  SS9nUR                  U5      R                  SS9nU S;   a\  UR                  S   S:X  d   e[!        UR                  5      [!        UR                  5      :X  d   eUR#                  UR                  S9n0 n[$        R&                  R(                  " UR*                  R,                  UR*                  R,                  40 UD6  [$        R&                  R.                  " UR*                  R0                  UR*                  R0                  40 UD6  U S:X  a  S UR2                  S'   S UR2                  S'   U S:X  a  S UR2                  S'   S UR2                  S'   US   R5                  [6        R8                  5      US'   [;        UUSSSSS9  g )N	nybb_qgiszpolydf2.shprU   )BoroCodeBoroName
Shape_Leng
Shape_Areavalue1value2rJ   rL   zqgis-union.shpzqgis-z.shprH         T)inplacerl   r   )rY   rZ   rk   )rH   rL   r7   ra   rK   )	   r7   )r   r7   r   F)	normalize	check_crsrm   check_less_precise)r   r[   r\   r]   r^   r   rl   rq   is_validr   notnullcopydtyperc   rp   ra   r   reindexrn   testingassert_series_equalr7   areaassert_frame_equalboundslocfillnanpnanr   )	rQ   nybb_filenamepolydfpolydf2rr   colsre   boro_code_dtypekwargss	            r   test_overlay_nybbr      s   }%F$ T;FGGV#.FSD
lCRy jRWW\\$=MNORWW\\$uSE=NOP
 g~=="b*T5))*HD1
j--5578==? ,2200#+J#7#>#>#OHZ  ##D)5545@H %11t1<F
## ~~b!Z///6>>"c(*:*:&;;;;(8(89$ FJJ""h//448> JJ!! 1 1 8 8<B $$&*]#$(

=!
g~'+^$%)

>" $J/66rvv>HZr   c           	         [        [        R                  R                  [        SS5      5      n[        [        R                  R                  [        SS5      5      n[        XU S9nU S:X  a  [        R                  " 5       e[        [        R                  R                  [        SSU  S35      5      nU S:X  a  UR                  S	S
 nUR                  SS9nU S:X  a   UR                  SS/5      R                  SS9n[        UUSSSS9  g	)a  
Overlay test with overlapping geometries in both dataframes.
Test files are created with::

    import geopandas
    from geopandas import GeoSeries, GeoDataFrame
    from shapely.geometry import Point, Polygon, LineString

    s1 = GeoSeries([Point(0, 0), Point(1.5, 0)]).buffer(1, resolution=2)
    s2 = GeoSeries([Point(1, 1), Point(2, 2)]).buffer(1, resolution=2)

    df1 = GeoDataFrame({'geometry': s1, 'col1':[1,2]})
    df2 = GeoDataFrame({'geometry': s2, 'col2':[1, 2]})

    ax = df1.plot(alpha=0.5)
    df2.plot(alpha=0.5, ax=ax, color='C1')

    df1.to_file('geopandas/geopandas/tests/data/df1_overlap.geojson',
                driver='GeoJSON')
    df2.to_file('geopandas/geopandas/tests/data/df2_overlap.geojson',
                driver='GeoJSON')

and then overlay results are obtained from using  QGIS 2.16
(Vector -> Geoprocessing Tools -> Intersection / Union / ...),
saved to GeoJSON.
overlapzdf1_overlap.geojsonzdf2_overlap.geojsonrU   rL   zdf1_df2_overlap-rX   rH   Nr   Trk   r6   r8   F)r   rm   r   )r   r[   r\   r]   r^   r   pytestskipilocrq   rp   r   )rQ   r<   r=   rr   re   s        r   test_overlay_overlapr      s    6 BGGLLy2GH
IC
BGGLLy2GH
ICS3'F
jkkm
T9(8X&FGH g~=="% T*F
g~##VV$45AAtALr   other_geometryc                    U u  p4UR                  5       nUR                  SS0S9nUR                  S5      nU(       a  UR                  R                  US'   UR                  R
                  S:X  d   e[        X4US9n[        XTUS9nUR                  R
                  S:X  d   eUS:X  ay  UR                  R
                  S:X  d   eU(       a4  SUR                  ;   d   e[        US   US   SS9  UR                  S/SS	9nUR                  SS0S9nUR                  S5      nU(       a  US
:X  a  UR                  UR                  S9n[        Xg5        UR                  5       nUR                  SS0S9nUR                  S5      nU(       a  UR                  R                  US'   UR                  R
                  S:X  d   e[        X4US9n[        X8US9n[        Xg5        g )Nr7   polygonsr   rU   rJ   F)check_series_typer+   axisrI   geom)r   renameset_geometrycentroidr7   rd   r   ra   r   rl   r   r   )	r>   rQ   r   r<   r=   df3res1res2df4s	            r    test_geometry_not_named_geometryr   +  s    HC
((*C
**j*5*
6C


:
&C,,//J<<
***3%D3%D<<
***
l}}!!Z///---"Z #j/U 99j\92D{{J
#;{<  , #/||DLL|1d)
((*C
**j&1*
2C


6
"C,,//J<<&&&3%D3%Dd)r   c                     U u  p[         R                  " [        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)NspandexrU   )r   raises
ValueErrorr   r>   r<   r=   s      r   test_bad_howr   Y  s+    HC	z	"i( 
#	"	"s	   3
Ac                     US:X  a  [         R                  " S5        U u  p#UR                  SS0S9n[        X$US9nSUR                  ;   a  SUR                  ;   d   eg )	NrJ   z)Difference uses columns from one df only.r8   r6   r   rU   col1_1col1_2)r   r   r   r   ra   )r>   rQ   r<   r=   df2rress         r   test_duplicate_column_namer   _  s_    
l?@HC::vv.:/D
#
%C#(ckk*ABB*Ar   c                     U u  p[         R                  " [        5         [        XR                  SS9  S S S 5        g ! , (       d  f       g = fNrH   rU   )r   r   NotImplementedErrorr   r7   r   s      r   test_geoseries_warningr   h  s0    HC	*	+\\w/ 
,	+	+s	   =
Azpyproj not available)reasonc                     U u  p#[        X#US9nUR                  b   eSnXRl        XSl        [        X#US9nUR                  U:X  d   eg )NrU   z	epsg:4326)r   r`   )r>   rQ   r<   r=   rr   r`   s         r   test_preserve_crsr   o  sR    HCS3'F::
CGGS3'F::r   c                     U u  p#SUl         SUl         [        R                  " [        SS9   [	        X#US9  S S S 5        g ! , (       d  f       g = f)N  i  zCRS mismatch between the CRSmatchrU   )r`   r   warnsUserWarningr   )r>   rQ   r<   r=   s       r   test_crs_mismatchr   {  s=    HCCGCG	k)G	Hc" 
I	H	Hs   A  
Ac                     U u  p[        [        / SQ5      [        / SQ5      /5      n[        USS/S.5      n[        / / SQS9n[        X5      n[	        XeSS	9  g )
N))r   r   )r   r   r   )r   r   )r   )r   )r   r   )r   r   r+   r"   r7   col3)r6   r   r7   r   Fcheck_dtyper   r   r
   r   r   )r>   r<   r=   polys3r   re   rr   s          r   test_empty_intersectionr     s`    HC<=<=	
F FQF;
<CB(DEHSFfEBr   c                    U u  p[        [        / SQ5      [        / SQ5      [        / SQ5      /5      n[        U/ SQS.5      n[        / SQ5      n[        / SQ5      n[        SSU/S	S
U/// SQS9n[        XBSS9n[	        X5        g )Nr)   )r   r+   r*   r/   )r   r-   r0   r+   r"   r-   r   )r*   r/   r.   r,   r*   )r.   r4   r3   r1   r.   r+   r-   r"   )r   r8   r7   r   Tr}   r   )	r>   r<   r=   r   r   i1i2re   rr   s	            r   test_correct_indexr     s    HC456745	
F FI>
?C	9	:B	9	:B
QaBZ *FH Sd3Ff/r   c                     U u  p[        [        / SQ5      [        / SQ5      [        / SQ5      /5      n[        SU05      n[        R                  " [
        SS9   [        X$S S9  S S S 5        g ! , (       d  f       g = f)Nr)   r   r0   r7    `keep_geom_type=True` in overlayr   r}   )r   r   r
   r   r   r   r   )r>   r<   r=   r   r   s        r   test_warn_on_keep_geom_typer     sj    HC456745	
F 
F+
,C	k)K	L. 
M	L	Ls   A..
A<
geom_types)rW   	poly_line
poly_point	line_poly
point_polyc                 `   [        [        / SQ5      [        / SQ5      /5      n[        SS/US.5      n[        [        / SQ5      [        / SQ5      [        / SQ5      /5      n[        U/ SQS.5      n[        [        / S	Q5      [        S
S/5      /5      n[        SS/US.5      n[        [	        S5      [	        S5      /5      n	[        SS/U	S.5      n
US:X  a  [        XFXS9nOCUS:X  a  [        XHXS9nO2US:X  a  [        XJXS9nO!US:X  a  [        XXS9nOUS:X  a
  [        XXS9n [        [        R                  R                  [        SU SU  SU S35      5      n[        UR                  WR                  :H  5      (       d   S5       e[        [        UR                  5      S1-
  5      nUR                  USS9R!                  SS9nUR                  USS9R!                  SS9nS HP  nXR                  ;   d  M  X   R#                  5       R                  5       (       d  M;  X   R%                  S 5      X'   MR     ['        UUSS!SS!S!S"9  g#! [(         a    WR*                  (       d   e g#[,         a    WR*                  (       d   e g#[.         a    WR*                  (       d   e g#f = f)$aJ  
Test of mixed geometry types on input and output. Expected results initially
generated using following snippet.

    polys1 = gpd.GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),
                            Polygon([(3, 3), (5, 3), (5, 5), (3, 5)])])
    df1 = gpd.GeoDataFrame({'col1': [1, 2], 'geometry': polys1})

    polys2 = gpd.GeoSeries([Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]),
                            Polygon([(-1, 1), (1, 1), (1, 3), (-1, 3)]),
                            Polygon([(3, 3), (5, 3), (5, 5), (3, 5)])])
    df2 = gpd.GeoDataFrame({'geometry': polys2, 'col2': [1, 2, 3]})

    lines1 = gpd.GeoSeries([LineString([(2, 0), (2, 4), (6, 4)]),
                            LineString([(0, 3), (6, 3)])])
    df3 = gpd.GeoDataFrame({'col3': [1, 2], 'geometry': lines1})
    points1 = gpd.GeoSeries([Point((2, 2)),
                             Point((3, 3))])
    df4 = gpd.GeoDataFrame({'col4': [1, 2], 'geometry': points1})

    params=["union", "intersection", "difference", "symmetric_difference",
            "identity"]
    stricts = [True, False]

    for p in params:
        for s in stricts:
            exp = gpd.overlay(df1, df2, how=p, keep_geom_type=s)
            if not exp.empty:
                exp.to_file('polys_{p}_{s}.geojson'.format(p=p, s=s),
                            driver='GeoJSON')

    for p in params:
        for s in stricts:
            exp = gpd.overlay(df1, df3, how=p, keep_geom_type=s)
            if not exp.empty:
                exp.to_file('poly_line_{p}_{s}.geojson'.format(p=p, s=s),
                            driver='GeoJSON')
    for p in params:
        for s in stricts:
            exp = gpd.overlay(df1, df4, how=p, keep_geom_type=s)
            if not exp.empty:
                exp.to_file('poly_point_{p}_{s}.geojson'.format(p=p, s=s),
                            driver='GeoJSON')
r)   r0   r+   r"   r5   r   r   )r7   r8   )r!   r(   r|   r&   )r   r-   )r|   r-   )r   r7   r#   r.   )col4r7   rW   )rQ   rS   r   r   r   r   strict_rX   zColumn name mismatchr7   r   r   Trk   )r6   r   r   float64F)r   rm   r   r   r   N)r   r   r
   r   r   r   r   r[   r\   r]   r^   r   ra   listsetrp   rq   isnarc   r   r   emptyOSErrorRuntimeError)rQ   rS   r   polys1r<   polys2r=   lines1r   points1r   rr   re   r   rf   s                  r   test_overlay_strictr    s   ` 4545	
F AF;
<C456745	
F FI>
?C	,	-z66:J/KLF AF;
<Cvf67G
AG<
=CWsJ	{	"sJ	|	#sJ	{	"sJ	|	#sJ(GGLL,auAn%5X>
 8##v~~566N8NN6C':,67''1'5AAtAL##Dq#1==4=H ,C&&&8=+=+=+?+C+C+E+E ( 4 4Y ? , 	"##	
  ||| ||| |||s+   *CI #I ((I J-0J-J-,J-c                  L   [        [        / SQ5      [        / SQ5      /5      n [        SS/U S.5      n[        [        / SQ5      [        / SQ5      /5      n[        SS/US.5      n[        R
                  " [        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr)   r0   r+   r"   r5   Tr}   )r   r   r
   r   r   r   r   r   )r  r<   mixeddfmixeds       r   test_mixed_geom_errorr
  2  s    4545	
F AF;
<C4578	
E QF>?G	*	+T2 
,	+	+s   B
B#c            	      \   [        [        [        / SQ5      [        / SQ5      /5      5      n [	        S/U S.5      n[        [        / SQ5      [        / SQ5      /5      n[	        SS/US.5      n[
        R                  " [        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr)   r0   r"   r5   r+   Tr}   )	r   r   r   r   r
   r   r   	TypeErrorr   )gcoldfcolr  r<   s       r   test_keep_geom_type_errorr  E  s    89;<	
D 1#489E4545	
F AF;
<C	y	!40 
"	!	!s   	B
B+c                     [        [        R                  R                  [        SS5      5      n [        [        R                  R                  [        SS5      5      n[
        R                  " [        SS9   [        XS S9nS S S 5        [        W5      S:X  d   eUR                  S:H  R                  5       (       d   e[        XS	S9n[        U5      S:X  d   eUR                  S:H  R                  5       (       d   e[        XS
S9n[        U5      S:X  d   eUR                  S:H  R                  5       (       d   eg ! , (       d  f       N= f)Nr   zdf1.geojsonzdf2.geojsonr   r   r}   r+   r   TFr   )r   r[   r\   r]   r^   r   r   r   r   r   r   r   )r<   r=   rI   s      r   'test_keep_geom_type_geometry_collectionr  Z  s    BGGLL{MB
CC
BGGLL{MB
CC	k)K	Ls= 
M|!!!""i/4466663D9L|!!!""i/4466663E:L|!!!""&::??AAAA 
M	Ls   6D==
Ec                  j   [        SSSS5      [        SSSS5      R                  [        SSSS5      5      /n [        SSSS5      [        SSSS5      R                  [        SSSS5      5      /n[        SS/U S.5      n[        SS/US.5      n[        X#S	S
9n[        SS/SS/[        SSSS5      [        SSSS5      /S.5      n[	        XE5        [        X#SS
9n[        / SQ/ SQ[        SSSS5      [        SS5      [        [        SSSS5      [        SS/5      /5      /S.5      n[	        XE5        g )Nr   r+   r-   r2   r&   r"   leftr7   rightr7   Tr}   r  r  r7   F)r   r+   r+   )r   r   r+   r,   )r-   r"   )r	   rH   r
   r   r   r   r   r   r  r  r<   r=   result1	expected1s         r   (test_keep_geom_type_geometry_collection2r  n  sN   Aq!QAq!Qc!Q1o.F 	Aq!QAq!Qc!Q1o.F AF;
<C
!QV<
=Cct4GFVQ1a#aAq/:	
I g1cu5GAq!Qa"C1aOZ@P5Q#RS	

I g1r   c                     [        SSSS5      [        SSSS5      /n [        / SQ5      [        SSSS5      /n[        SS/U S	.5      n[        SS/US
.5      n[        X#SS9n[        S/S/[        SSSS5      /S.5      n[	        XE5        [        X#SS9n[        SS/SS/[        [        SS/5      [        SS5      /5      [        SSSS5      /S.5      n[	        Xg5        g )Nr   r+   r-   
      )rx   )r-   r   r.   r/   rw   r#   )r"   r+   r*         r  r  Tr}   r  Frw   r/   )r	   r   r
   r   r   r   r   r   )r  r  r<   r=   r  r  result2	expected2s           r   ,test_keep_geom_type_geomcoll_different_typesr#    s
   !Q1os2r2r23FPQBBF AF;
<C
!QV<
=Cct4GCSRR,-	
I g1cu5GFV"J/?$@%1+#NOBB#	
	I g1r   c            	      N   [        SSSS5      [        SSSS5      /n [        SSSS5      [        SSSS5      R                  [        SSSS5      5      /n[        SS/U S.5      n[        SS/US.5      n[        X2SS	S
9n[        S/[        SSSS5      /S.5      n[	        XE5        g )Nr   r+   r"   r-          @r  r  TrJ   )rS   rQ   )r	   rH   r
   r   r   r  s         r   2test_keep_geom_type_geometry_collection_differencer&    s     	Aq!QAq!QF 	Aq!QAq!Qc!Q+>?@F AF;
<C
!QV<
=CctFGSQ1a)	
I g1r   should_make_validc                 0   [        / SQ5      nUR                  (       a   e[        U5      nUR                  (       d   e[        S/[	        [        SSSS5      /5      S.5      n[        SS/[	        X/5      S.5      nU (       aU  [        X4U S9nUR                  S	   R                  U5      (       d   eUR                  S
   R                  U5      (       d   eg [        R                  " [        SS9   [        X4U S9  S S S 5        g ! , (       d  f       g = f)N)r*   )r   r   )r   r+   )r+   r   r*   regionr   r  r5   invalidvalidr   )r   r7   )r+   r7   z1 invalid input geometriesr   )r   r   r   r
   r   r	   r   atequalsr   r   r   )r'  bowtiefixed_bowtier<   	df_bowtiedf_overlay_bowties         r   test_overlap_make_validr2    s    =>Ff%L    

	3q!RQSCTBU8VW
XCW%9f=S3TUI #C?PQ ##M299,GGGG ##M299,GGGG]]:-IJC/@A KJJs   3D
Dc                     [         R                  " U 5      nUR                  5       nUR                  S5      Ul        [         R
                  " X5      n[        / SQUR                  S9n[        X4SS9  g )Ni -1)	
BoroCode_1
BoroName_1Shape_Leng_1Shape_Area_1
BoroCode_2
BoroName_2Shape_Leng_2Shape_Area_2r7   )ra   r`   Fr   )	r~   r   r   	translater7   r   r
   r`   r   )r   nybbnybb2rr   re   s        r   0test_empty_overlay_return_non_duplicated_columnsr?    sa    }-DIIKE__X.ENt+F

 HHH fEBr   c           
      |   [        / SQ5      n[        / SQ5      n[        S/S/U/S.5      n[        S/S/U/S.5      n[        X4U S9nU S:X  a_  [        [        R                  " / S	S
9[        R                  " / S	S
9[        R                  " / S	S
9[        R                  " / S	S
9/ S.5      nGOU S:X  aS  [        S[        R
                  /S[        R
                  /[        R
                  S/[        R
                  S/X/S.5      nOU S:X  a3  [        S/S/[        R
                  /[        R
                  /U/S.5      nOqU S:X  aS  [        S[        R
                  /S[        R
                  /[        R
                  S/[        R
                  S/X/S.5      nOU S:X  a  [        S/S/U/S.5      n[        UW5        g )Nr   r0   r+   )idr6   r7   r"   )rA  r8   r7   rU   rI   rZ   )r   )id_1r6   id_2r8   r7   rH   rL   rK   rJ   )r   r
   r   r   r_   r   r   )rQ   p1p2r<   r=   rr   re   s          r   test_non_overlappingrF    s   	1	2B	1	2B
qcA3RDA
BC
qcA3RDA
BCS3'F
n73737373
 
BFFBFFH
 

	D
 
&	&BFFBFFH
 
	cD
 fh/r   c            	      Z   [        [        S5       V s/ s H  n [        X 5      R                  S5      PM     sn 5      n[	        S/ SQ0US9n[	        S/ SQ0UR                  S5      S9n[	        / S	QS
9n[        (       a  UR                  SSS.5      n[        X#SS9n[        XTSS9  g s  sn f )Nr-   g?foo)abcrz   bar)135r+   )rH  rL  r7   r   str)rH  rL  rI   rU   F)check_index_type)
r   ranger   bufferr
   r<  r   rc   r   r   )xgsgdf1gdf2re   rr   s         r   test_no_intersectionrX  9  s    	U1X>XE!K&&s+X>	?B02>D02<<?KD$>?H??5#?@T^4FfG ?s   $B(c                      [        S[        SS/SS/SS/SS/SS//5      /0SS9n [        S/ 0SS9nU R                  USS9n[        X 5        [        / SS9nU R                  USS9n[        X 5        g )	Nr7   g        r%  r   )r`   rH   rU   )r7   r`   )r
   r   r   r   )rV  rW  r   s      r   test_zero_lenrZ  F  s    #sc3Z#sc3Z#sTU	

 D R(d3D
,,t,
)Cc(.D
,,t,
)Cc(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)TestOverlayWikiExampleiZ  c           	      t   [        SS/0[        SSSS5      /S9U l        [        SS/0[        SSS	S5      /S9U l        [        S/S/S
.[        SSSS5      /S9U l        [        SS[
        R                  /S[
        R                  S/S
.[        SSSS5      [        / SQ5      [        / SQ5      /S9U l        [        SS/0[        / SQ5      /S9U l	        [        SS/0[        / SQ5      /S9U l
        [        S[
        R                  /[
        R                  S/S
.[        / SQ5      [        / SQ5      /S9U l        [        SS/S[
        R                  /S
.[        SSSS5      [        / SQ5      /S9U l        [        SS/S[
        R                  /S
.[        SSSS5      [        / SQ5      /S9U l        g )NrA  rI  r   r"   r|   )r   r7   rJ  r&   r  )rB  rC  )r%   r$   )r   r|   )r|   r|   r   r'   r%   )r  r   )r&   r   r%   )r|   r"   r   )r  r&   r^  )r
   r	   layer_alayer_brI   r   r   r   rH   a_difference_bb_difference_arK   a_identity_bb_identity_a)selfs    r   setup_method#TestOverlayWikiExample.setup_method[  s   #$#aAq/ARS#$#aBPQBRAST(%#/3q!Q?:K
 "RVV,sBFFC6HIAq!QPQST

 +PQ
 +ST
 %1-"&&#?PQST%
! )*sBFFm<Aq!QPQ
 )*sBFFm<Aq!QST
r   c                 l    [        U R                  U R                  SS9n[        XR                  5        g )NrI   rU   )r   r_  r`  r   rI   re  	df_results     r   test_intersection(TestOverlayWikiExample.test_intersection  s&    DLL$,,NK	!)->->?r   c                 l    [        U R                  U R                  SS9n[        XR                  5        g r   )r   r_  r`  r   rH   ri  s     r   
test_union!TestOverlayWikiExample.test_union  s$    DLL$,,GD	!)ZZ8r   c                 l    [        U R                  U R                  SS9n[        XR                  5        g NrJ   rU   )r   r_  r`  r   ra  ri  s     r   test_a_difference_b*TestOverlayWikiExample.test_a_difference_b  &    DLL$,,LI	!)-@-@Ar   c                 l    [        U R                  U R                  SS9n[        XR                  5        g rq  )r   r`  r_  r   rb  ri  s     r   test_b_difference_a*TestOverlayWikiExample.test_b_difference_a  rt  r   c                 l    [        U R                  U R                  SS9n[        XR                  5        g )NrK   rU   )r   r_  r`  r   rK   ri  s     r   test_symmetric_difference0TestOverlayWikiExample.test_symmetric_difference  s'    DLL$,,<RS	!)-F-FGr   c                 l    [        U R                  U R                  SS9n[        XR                  5        g NrL   rU   )r   r_  r`  r   rc  ri  s     r   test_a_identity_b(TestOverlayWikiExample.test_a_identity_b  &    DLL$,,JG	!)->->?r   c                 l    [        U R                  U R                  SS9n[        XR                  5        g r|  )r   r`  r_  r   rd  ri  s     r   test_b_identity_a(TestOverlayWikiExample.test_b_identity_a  r  r   )	ra  rc  rb  rd  rI   r_  r`  rK   rH   N)r   r   r   r   rf  rk  rn  rr  rv  ry  r}  r  r   r   r   r   r\  r\  Z  s1    6
p@9BBH@@r   r\  )Fr[   numpyr   pandasrn   shapelyr   shapely.geometryr   r   r   r   r	   r~   r
   r   r   r   geopandas._compatr   r   r   geopandas.testingr   r   fiona.errorsr   ImportError	Exceptionr\   r]   abspathdirname__file__r^   fixturer>   rG   rQ   rS   ru   markparametrizer   filterwarningsr   r   r   r   r   r   skipifr   r   r   r   r   r  r
  r  r  r  r#  r&  r2  r?  rF  rX  rZ  r\  r   r   r   <module>r     s   	    P P  A A :  O( 
ww||BGGOOBGGOOH$=>	R  $ EF G V e}% &(MV )D%=99 :9 GHn Inb6r )E4=9** :**Z)C0 
N+AB C 
N+AB# C#C0(/ Qwwt3&1*B(#2L2@2: ,tUm<B =B(C080v
H)(S@ S@Q  i s   H1 1II