
    h|                        d dl Z d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ d dlZd dlmZmZmZmZ d dlmZmZ d dlZd dlmZmZ 	 d dlmZ e j:                  j=                  e j:                  j?                  e j:                  jA                  e!            d
d      Z"ejF                  d        Z$ ejF                  g d      d        Z% ejF                  g d      d        Z& ejF                  ddg      d        Z'd Z(ejR                  jU                  dddg      d        Z+ejR                  jY                  d      d        Z-d Z.ejR                  jU                  dddg      d        Z/d Z0d Z1d Z2ejR                  jg                  e d !      d"        Z4ejR                  jg                  e d !      d#        Z5d$ Z6d% Z7d& Z8ejR                  jU                  d'g d(      d)        Z9d* Z:d+ Z;d, Z<d- Z=d. Z>d/ Z?ejR                  jU                  d0ddg      d1        Z@d2 ZAd3 ZBd4 ZCd5 ZD G d6 d7      ZEy# e$ r  G d d	e      ZY w xY w)8    N
make_valid)GeometryCollection
LineStringPointPolygonbox)GeoDataFrame	GeoSeriesoverlay	read_file)
HAS_PYPROJPANDAS_GE_30)assert_geodataframe_equalassert_geoseries_equal)DriverErrorc                       e Zd Zy)r   N)__name__
__module____qualname__     O/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/test_overlay.pyr   r      s    r   r   datar   c                     t        t        g d      t        g d      g      }t        t        g d      t        g d      g      }t        ddg|d      }t        ddg|d      }||fS )	N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   col1geometry)col2r4   )r   r   r
   )requests1s2df1df2s        r   dfsr;      sw    	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                     |\  }}| j                   dk(  rddg|_        ddg|_        | j                   dk(  r	ddg|_        ||fS )Nr<   r(   r   r   r=   row1row2)paramindex)r6   r;   r9   r:   s       r   	dfs_indexrD   .   sN    HC}}#F	F	}}&V$	8Or   )unionintersection
differencesymmetric_differenceidentityc                     | j                   S NrB   r6   s    r   howrN   9   s     ==r   TFc                     | j                   S rK   rL   rM   s    r   keep_geom_typerP   @   s    ==r   c                    | \  }}t        |||      }d }|dk(  r+ |d      } |d      }t        j                  ||gdd      }n ||      }|d	k(  r$|j                  d
dg      j	                  d      }n|dk(  r|j	                  d      }t        ||d       |dk(  r7t        |||      }|j	                  d      } |d      }t        ||d       yy)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
    rN   c           	         t        t        j                  j                  t        dd|  d            }d |j
                  j                  _        |j                  |j                  dk(     D ]  }||   j                  d      ||<    |S )Npolyszdf1_df2-.geojsonint32int64)r   ospathjoinDATAr4   arraycrscolumnsdtypesastype)nameexpectedcols      r   _readztest_overlay.<locals>._readP   sz    RWW\\$8D69RST&*###HOOw$>? 	:C$SM009HSM	:r   rI   rF   rG   TF)ignore_indexsortrE   r3   r5   drop)check_column_typezdifference-inverseN)r   pdconcatsort_valuesreset_indexr   )	rD   rN   r9   r:   resultrd   expected_intersectionexpected_differencerb   s	            r   test_overlayrq   E   s    HCS#3'F j %n 5#L199"$78tRW
 : g~##VV$45AAtAL		###.fh%H lcs+###.-.!&(eL	 r   rP   c                 L   t        g d      }t        d      }t        j                  dddgi||g      }t        j                  ddd	gi||g      }|j                  || 
      }t	        |      dk(  sJ | r-|j
                  j                  dg      j                         sJ y y )N)r   r'   r(   r   r'   r   )r   r(   r   r'   )r   r(   r   Ar(   r   r4   Br/      rP   r   )r   	geopandasr
   r   len	geom_typeisinall)rP   invalid_polygonsquarer9   r:   df1_df2s         r   test_overlay_invalid_inputr   p   s    FGO=>F

 
 #1v/69R
SC

 
 #1v&&9I
JCkk#nk=G w<1  %%yk266888 r   z)ignore:GeoSeries crs mismatch:UserWarningc           	      .   t        |      }t        t        j                  j                  t        dd            }t        |||       }g d}| dk(  r|d d }| dk(  r/t        t        j                  j                  t        dd            }n2t        t        j                  j                  t        dd	|  d
            }| dk(  r&|j                  ddg      }|j                  dd       ||j                     }|j                  dd       | dk(  rU||j                  j                            j                         }|d   j                  }|dv r|d   j                  |      |d<   |j                  |      j                  d      }|j                  |      j                  d      }| dv r]|j                  d   dk(  sJ t!        |j                        t!        |j                        k(  sJ |j#                  |j                        }i }t%        j&                  j(                  |j*                  j,                  |j*                  j,                  fi | t%        j&                  j.                  |j*                  j0                  |j*                  j0                  fi | | dk(  rd |j2                  d<   d |j2                  d<   | dk(  rd |j2                  d<   d |j2                  d<   |d   j5                  t6        j8                        |d<   t;        ||dddd       y )N	nybb_qgiszpolydf2.shprR   )BoroCodeBoroName
Shape_Leng
Shape_Areavalue1value2rG   rI   zqgis-union.shpzqgis-z.shprE         T)inplacerh   r   )rV   rW   rg   )rE   rI   r4   r^   rH   )	   r4   )r   r4   r   F)	normalize	check_crsri   check_less_precise)r   rX   rY   rZ   r[   r   rh   rm   is_validr   notnullcopydtyper`   rl   r^   r{   reindexrj   testingassert_series_equalr4   areaassert_frame_equalboundslocfillnanpnanr   )	rN   nybb_filenamepolydfpolydf2rn   colsrb   boro_code_dtypekwargss	            r   test_overlay_nybbr      s   }%F$ T;FGGVW#.FSD
lCRy jRWW\\$=MNORWW\\$uSE=NOP
 g~=="b*T5))*HD1
jH--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           	      *   t        t        j                  j                  t        dd            }t        t        j                  j                  t        dd            }t        |||       }| dk(  rt        j                         t        t        j                  j                  t        dd|  d            }| dk(  r|j                  d	d
 }|j                  d      }| dk(  r#|j                  ddg      j                  d      }t        ||ddd       y	)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.geojsonrR   rI   zdf1_df2_overlap-rU   rE   Nr   Trg   r3   r5   F)r   ri   r   )r   rX   rY   rZ   r[   r   pytestskipilocrm   rl   r   )rN   r9   r:   rn   rb   s        r   test_overlay_overlapr      s    6 BGGLLy2GH
IC
BGGLLy2GH
ICS#3'F
jkkm
T9(8X&FGH g~=="% T*F
g~##VV$45AAtALr   other_geometryc                    | \  }}|j                         }|j                  ddi      }|j                  d      }|r|j                  j                  |d<   |j                  j
                  dk(  sJ t        |||      }t        |||      }|j                  j
                  dk(  sJ |dk(  rz|j                  j
                  dk(  sJ |r8d|j                  v sJ t        |d   |d   d       |j                  dgd	      }|j                  ddi      }|j                  d      }|r!|d
k(  r|j                  |j                        }t        ||       |j                         }|j                  ddi      }|j                  d      }|r|j                  j                  |d<   |j                  j
                  dk(  sJ t        |||      }t        |||      }t        ||       y )Nr4   polygonsr   rR   rG   F)check_series_typer(   axisrF   geom)r   renameset_geometrycentroidr4   ra   r   r^   r   rh   r   r   )	r;   rN   r   r9   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dD)
((*C
**j&1*
2C


6
"C,,//J<<&&&3%D3%DdD)r   c                     | \  }}t        j                  t              5  t        ||d       d d d        y # 1 sw Y   y xY w)NspandexrR   )r   raises
ValueErrorr   r;   r9   r:   s      r   test_bad_howr   Y  s8    HC	z	" )Si() ) )s	   7A c                     |dk(  rt        j                  d       | \  }}|j                  ddi      }t        |||      }d|j                  v rd|j                  v sJ y )	NrG   z)Difference uses columns from one df only.r5   r3   r   rR   col1_1col1_2)r   r   r   r   r^   )r;   rN   r9   r:   df2rress         r   test_duplicate_column_namer   _  sc    
l?@HC::vv.:/D
#t
%C#(ckk*ABB*Ar   c                     | \  }}t        j                  t              5  t        ||j                  d       d d d        y # 1 sw Y   y xY wNrE   rR   )r   r   NotImplementedErrorr   r4   r   s      r   test_geoseries_warningr   h  s=    HC	*	+ 0S\\w/0 0 0s   AA
zpyproj not available)reasonc                     | \  }}t        |||      }|j                  J d}||_        ||_        t        |||      }|j                  |k(  sJ y )NrR   z	epsg:4326)r   r]   )r;   rN   r9   r:   rn   r]   s         r   test_preserve_crsr   o  s\    HCS#3'F::
CCGCGS#3'F::r   c                     | \  }}d|_         d|_         t        j                  t        d      5  t	        |||       d d d        y # 1 sw Y   y xY w)N  i  zCRS mismatch between the CRSmatchrR   )r]   r   warnsUserWarningr   )r;   rN   r9   r:   s       r   test_crs_mismatchr   {  sI    HCCGCG	k)G	H #Sc"# # #s   AAc                     | \  }}t        t        g d      t        g d      g      }t        |ddgd      }t        g g d      }t        ||      }t	        ||d	       y )
N))r   r   )r   r   r   )r   r   )r   )r   )r   r   )r   r   r(   r   r4   col3)r3   r   r4   r   Fcheck_dtyper   r   r
   r   r   )r;   r9   r:   polys3r   rb   rn   s          r   test_empty_intersectionr     sf    HC<=<=	
F FQF;
<CB(DEHS#FfhEBr   c                 "   | \  }}t        t        g d      t        g d      t        g d      g      }t        |g dd      }t        g d      }t        g d      }t        dd|gd	d
|ggg d      }t        ||d      }t	        ||       y )Nr&   )r   r(   r'   r,   )r   r*   r-   r(   r   r*   r   )r'   r,   r+   r)   r'   )r+   r1   r0   r.   r+   r(   r*   r   )r   r5   r4   r   Try   r   )	r;   r9   r:   r   r   i1i2rb   rn   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 S#d3Ffh/r   c                    | \  }}t        t        g d      t        g d      t        g d      g      }t        d|i      }t        j                  t
        d      5  t        ||d        d d d        y # 1 sw Y   y xY w)Nr&   r   r-   r4    `keep_geom_type=True` in overlayr   ry   )r   r   r
   r   r   r   r   )r;   r9   r:   r   r   s        r   test_warn_on_keep_geom_typer     sv    HC456745	
F 
F+
,C	k)K	L /S./ / /s   A55A>
geom_types)rT   	poly_line
poly_point	line_poly
point_polyc                 j   t        t        g d      t        g d      g      }t        ddg|d      }t        t        g d      t        g d      t        g d      g      }t        |g dd      }t        t        g d	      t        d
dg      g      }t        ddg|d      }t        t	        d      t	        d      g      }	t        ddg|	d      }
|dk(  rt        ||| |      }nS|dk(  rt        ||| |      }n>|dk(  rt        ||
| |      }n)|dk(  rt        ||| |      }n|dk(  rt        |
|| |      }	 t        t        j                  j                  t        d| d|  d| d            }t        |j                  j                  k(        sJ d       t        t        |j                        dhz
        }|j                  |d      j!                  d      }|j                  |d      j!                  d      }dD ]J  }||j                  v s||   j#                         j                         s4||   j%                  d       ||<   L t'        ||dd!dd!d!"       y## t(        $ r j*                  sJ Y y#t,        $ r j*                  sJ Y y#t.        $ r j*                  sJ Y y#w xY w)$a  
    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&   r-   r(   r   r2   r   r   )r4   r5   )r   r%   rx   r#   )r   r*   )rx   r*   )r   r4   r    r+   )col4r4   rT   )rN   rP   r   r   r   r   strict_rU   zColumn name mismatchr4   r   r   Trg   )r3   r   r   float64F)r   ri   r   r   r   N)r   r   r
   r   r   r   r   rX   rY   rZ   r[   r~   r^   listsetrl   rm   isnar`   r   r   emptyOSErrorRuntimeError)rN   rP   r   polys1r9   polys2r:   lines1r   points1r   rn   rb   r   rc   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cs>J	{	"cs>J	|	#cs>J	{	"cs>J	|	#cs>J(GGLL,auAn%5X>
 8##v~~56N8NN6C':,67''1'5AAtAL##Dq#1==4=H , 	@Ch&&&8C=+=+=+?+C+C+E ( 4 4Y ?	@ 	"##	
  ||| ||| |||s+   >CI( !I( <+I( (J2J2J21J2c                  H   t        t        g d      t        g d      g      } t        ddg| d      }t        t        g d      t        g d      g      }t        ddg|d      }t	        j
                  t              5  t        ||d       d d d        y # 1 sw Y   y xY w)Nr&   r-   r(   r   r2   Try   )r   r   r
   r   r   r   r   r   )r   r9   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	*	+ 3WT23 3 3s    BB!c            	      X   t        t        t        g d      t        g d      g            } t	        dg| d      }t        t        g d      t        g d      g      }t	        ddg|d      }t        j                  t              5  t        ||d       d d d        y # 1 sw Y   y xY w)Nr&   r-   r   r2   r(   Try   )	r   r   r   r   r
   r   r   	TypeErrorr   )gcoldfcolr   r9   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	! 1s401 1 1s   B  B)c                     t        t        j                  j                  t        dd            } t        t        j                  j                  t        dd            }t        j                  t        d      5  t        | |d       }d d d        t              dk(  sJ |j                  dk(  j                         sJ t        | |d	      }t        |      dk(  sJ |j                  dk(  j                         sJ t        | |d
      }t        |      dk(  sJ |j                  dk(  j                         sJ y # 1 sw Y   xY w)Nr|   zdf1.geojsonzdf2.geojsonr   r   ry   r(   r   TFr   )r   rX   rY   rZ   r[   r   r   r   r   r{   r|   r~   )r9   r:   rF   s      r   'test_keep_geom_type_geometry_collectionr  Z  s    BGGLL{MB
CC
BGGLL{MB
CC	k)K	L >sC=>|!!!""i/446663D9L|!!!""i/446663E:L|!!!""&::??AAA> >s   8D99Ec                  ~   t        dddd      t        dddd      j                  t        dddd            g} t        dddd      t        dddd      j                  t        dddd            g}t        ddg| d      }t        ddg|d      }t        ||d	
      }t        ddgddgt        dddd      t        dddd      gd      }t	        ||       t        ||d
      }t        g dg dt        dddd      t        dd      t        t        dddd      t        ddg      g      gd      }t	        ||       y )Nr   r(   r*   r/   r#   r   leftr4   rightr4   Try   r  r  r4   F)r   r(   r(   )r   r   r(   r)   )r*   r   )r	   rE   r
   r   r   r   r   r   r   r   r9   r:   result1	expected1s         r   (test_keep_geom_type_geometry_collection2r  n  sV   Aq!QAq!Qc!Q1o.F 	Aq!QAq!Qc!Q1o.F AF;
<C
!QV<
=Cc3t4GFVQ1a#aAq/:	
I gy1c3u5GAq!Qa"C1aOZ@P5Q#RS	

I gy1r   c                     t        dddd      t        dddd      g} t        g d      t        dddd      g}t        ddg| d	      }t        ddg|d
      }t        ||d      }t        dgdgt        dddd      gd      }t	        ||       t        ||d      }t        ddgddgt        t        ddg      t        dd      g      t        dddd      gd      }t	        ||       y )Nr   r(   r*   
      )rt   )r*   r   r+   r,   rs   r    )r   r(   r'         r  r  Try   r  Frs   r,   )r	   r   r
   r   r   r   r   r   )r   r   r9   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c3t4GCSRR,-	
I gy1c3u5GFV"J/?$@%1+#NOBB#	
	I gy1r   c            	      X   t        dddd      t        dddd      g} t        dddd      t        dddd      j                  t        dddd            g}t        ddg| d      }t        ddg|d      }t        ||dd	
      }t        dgt        dddd      gd      }t	        ||       y )Nr   r(   r   r*          @r  r  TrG   )rP   rN   )r	   rE   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c3tFGSQ1a)	
I gy1r   should_make_validc                 
   t        g d      }|j                  rJ t        |      }|j                  sJ t        dgt	        t        dddd      g      d      }t        ddgt	        ||g      d      }| rOt        |||       }|j                  d	   j                  |      sJ |j                  d
   j                  |      sJ y t        j                  t        d      5  t        |||        d d d        y # 1 sw Y   y xY w)N)r'   )r   r   )r   r(   )r(   r   r'   regionr   r  r2   invalidvalidr   )r   r4   )r(   r4   z1 invalid input geometriesr   )r   r   r   r
   r   r	   r   atequalsr   r   r   )r#  bowtiefixed_bowtier9   	df_bowtiedf_overlay_bowties         r   test_overlap_make_validr.    s   =>Ff%L    

	3q!RQSCTBU8VW
XCW%9fl=S3TUI #C?PQ ##M299,GGG ##M299,GGG]]:-IJ 	BC/@A	B 	B 	Bs   !C99Dc                     t        j                  |       }|j                         }|j                  d      |_        t        j
                  ||      }t        g d|j                        }t        ||d       y )Ni -1)	
BoroCode_1
BoroName_1Shape_Leng_1Shape_Area_1
BoroCode_2
BoroName_2Shape_Leng_2Shape_Area_2r4   )r^   r]   Fr   )	rz   r   r   	translater4   r   r
   r]   r   )r   nybbnybb2rn   rb   s        r   0test_empty_overlay_return_non_duplicated_columnsr;    se    }-DIIKE__X.ENtU+F

 HHH fhEBr   c           	         t        g d      }t        g d      }t        dgdg|gd      }t        dgdg|gd      }t        |||       }| dk(  rgt        t        j                  g d	
      t        j                  g d	
      t        j                  g d	
      t        j                  g d	
      g d      }n| dk(  rTt        dt        j
                  gdt        j
                  gt        j
                  dgt        j
                  dg||gd      }n| dk(  r3t        dgdgt        j
                  gt        j
                  g|gd      }np| dk(  rTt        dt        j
                  gdt        j
                  gt        j
                  dgt        j
                  dg||gd      }n| dk(  rt        dgdg|gd      }t        |       y )Nr   r-   r(   )idr3   r4   r   )r=  r5   r4   rR   rF   rW   )r   )id_1r3   id_2r5   r4   rE   rI   rH   rG   )r   r
   r   r   r\   r   r   )rN   p1p2r9   r:   rn   rb   s          r   test_non_overlappingrB    s   	1	2B	1	2B
qcA3RDA
BC
qcA3RDA
BCS#3'F
n73737373
 
BFFBFFH
 

	D
 
&	&BFFBFFH
 
	cD
 fh/r   c            	         t        t        d      D  cg c]  } t        | |       j                  d       c}       }t	        dg di|      }t	        dg di|j                  d            }t	        g d	
      }t        r8t        j                  j                  j                  r|j                  ddd      }t        ||d      }t        ||d       y c c} w )Nr*   g?foo)abcrv   bar)135r(   )rD  rH  r4   r   str)rD  rH  rF   rR   F)check_index_type)r   ranger   bufferr
   r8  r   rj   optionsfutureinfer_stringr`   r   r   )xgsgdf1gdf2rb   rn   s         r   test_no_intersectionrW  9  s    	U1X>E!QK&&s+>	?B02>D02<<?KD$>?H

))66??5#?@T4^4FfhG ?s   "Cc                     t        dt        ddgddgddgddgddgg      gid      } t        dg id      }| j                  |d      }t        ||        t        g d      }| j                  |d      }t        ||        y )	Nr4   g        r!  r   )r]   rE   rR   )r4   r]   )r
   r   r   r   )rU  rV  r   s      r   test_zero_lenrY  F  s    #sc3Z#sc3Z#sTU	

 D R(d3D
,,t,
)Cc4(.D
,,t,
)Cc4(r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestOverlayWikiExamplec           	         t        ddgit        dddd      g      | _        t        ddgit        ddd	d      g      | _        t        dgdgd
t        dddd      g      | _        t        ddt
        j                  gdt
        j                  dgd
t        dddd      t        g d      t        g d      g      | _        t        ddgit        g d      g      | _	        t        ddgit        g d      g      | _
        t        dt
        j                  gt
        j                  dgd
t        g d      t        g d      g      | _        t        ddgdt
        j                  gd
t        dddd      t        g d      g      | _        t        ddgdt
        j                  gd
t        dddd      t        g d      g      | _        y )Nr=  rE  r   r   rx   )r   r4   rF  r#   r  )r>  r?  )r"   r!   )r   rx   )rx   rx   r   r$   r"   )r  r   )r#   r   r"   )rx   r   r   )r  r#   r]  )r
   r	   layer_alayer_brF   r   r   r   rE   a_difference_bb_difference_arH   a_identity_bb_identity_a)selfs    r   setup_methodz#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                 t    t        | j                  | j                  d      }t        || j                         y )NrF   rR   )r   r^  r_  r   rF   rd  	df_results     r   test_intersectionz(TestOverlayWikiExample.test_intersection  s(    DLL$,,NK	!)T->->?r   c                 t    t        | j                  | j                  d      }t        || j                         y r   )r   r^  r_  r   rE   rg  s     r   
test_unionz!TestOverlayWikiExample.test_union  s&    DLL$,,GD	!)TZZ8r   c                 t    t        | j                  | j                  d      }t        || j                         y NrG   rR   )r   r^  r_  r   r`  rg  s     r   test_a_difference_bz*TestOverlayWikiExample.test_a_difference_b  (    DLL$,,LI	!)T-@-@Ar   c                 t    t        | j                  | j                  d      }t        || j                         y rm  )r   r_  r^  r   ra  rg  s     r   test_b_difference_az*TestOverlayWikiExample.test_b_difference_a  ro  r   c                 t    t        | j                  | j                  d      }t        || j                         y )NrH   rR   )r   r^  r_  r   rH   rg  s     r   test_symmetric_differencez0TestOverlayWikiExample.test_symmetric_difference  s)    DLL$,,<RS	!)T-F-FGr   c                 t    t        | j                  | j                  d      }t        || j                         y NrI   rR   )r   r^  r_  r   rb  rg  s     r   test_a_identity_bz(TestOverlayWikiExample.test_a_identity_b  (    DLL$,,JG	!)T->->?r   c                 t    t        | j                  | j                  d      }t        || j                         y ru  )r   r_  r^  r   rc  rg  s     r   test_b_identity_az(TestOverlayWikiExample.test_b_identity_a  rw  r   N)r   r   r   re  ri  rk  rn  rq  rs  rv  ry  r   r   r   r[  r[  Z  s1    6
p@9BBH@@r   r[  )FrX   numpyr   pandasrj   shapelyr   shapely.geometryr   r   r   r   r	   rz   r
   r   r   r   geopandas._compatr   r   r   geopandas.testingr   r   fiona.errorsr   ImportError	ExceptionrY   rZ   abspathdirname__file__r[   fixturer;   rD   rN   rP   rq   markparametrizer   filterwarningsr   r   r   r   r   r   skipifr   r   r   r   r   r  r  r  r  r  r  r"  r.  r;  rB  rW  rY  r[  r   r   r   <module>r     s   	    P P  A A 6  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   H8 8II