
    rbi|                        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 n# e$ r  G d d	e          ZY nw xY we j                            e j                            e j                             e!                    d
d          Z"ej#        d             Z$ ej#        g d          d             Z% ej#        g d          d             Z& ej#        ddg          d             Z'd Z(ej)        *                    dddg          d             Z+ej)        ,                    d          d             Z-d Z.ej)        *                    dddg          d             Z/d Z0d Z1d Z2ej)        3                    e d !          d"             Z4ej)        3                    e d !          d#             Z5d$ Z6d% Z7d& Z8ej)        *                    d'g d(          d)             Z9d* Z:d+ Z;d, Z<d- Z=d. Z>d/ Z?ej)        *                    d0ddg          d1             Z@d2 ZAd3 ZBd4 ZCd5 ZD G d6 d7          ZEdS )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                       e Zd ZdS )r   N)__name__
__module____qualname__     l/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/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;      s    	4445544455	

 
B 
4445544455	

 
B AB77
8
8C
AB77
8
8C8Or   )zdefault-index	int-indexstring-index)paramsc                 v    |\  }}| 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   .   sP    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    r0 |d          } |d          }t          j        ||gdd          }n ||          }|d	k    r,|                    d
dg                              d          }n|dk    r|                    d          }t          ||d           |dk    rGt          |||          }|                    d          } |d          }t          ||d           dS dS )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                            t          dd|  d                    }d |j        j        _        |j        |j	        dk             D ] }||         
                    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   s{    RW\\$9RD9R9R9RSSTT&*##HOw$>? 	: 	:C$SM0099HSMM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   sh    HCS#3'''F   j %n 5 5#eL119"$78tRW
 
 
 5:: g~~##VV$455AAtALL			###..fh%HHHH lcs+++###..5-..!&(eLLLLLL	 r   rP   c                 t   t          g d          }t          d          }t          j        dddgi||g          }t          j        ddd	gi||g          }|                    || 
          }t	          |          dk    sJ | r/|j                            dg                                          sJ d S d S )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FFGGO=>>F

 #1v/69R
S
S
SC

 #1v&&9I
J
J
JCkk#nk==G w<<1 9 %%yk2266888889 988r   z)ignore:GeoSeries crs mismatch:UserWarningc           	      *   t          |          }t          t          j                            t          dd                    }t          |||           }g d}| dk    r
|d d         }| dk    r4t          t          j                            t          dd                    }n7t          t          j                            t          dd	|  d
                    }| dk    r.|                    ddg          }|                    dd           ||j                 }|                    dd           | dk    r`||j	        
                                                                         }|d         j        }|dv r|d                             |          |d<   |                    |                              d          }|                    |                              d          }| dv rZ|j        d         dk    sJ t!          |j                  t!          |j                  k    sJ |                    |j                  }i }t%          j        j        |j        j        |j        j        fi | t%          j        j        |j        j        |j        j        fi | | dk    rd |j        d<   d |j        d<   | dk    rd |j        d<   d |j        d<   |d                             t6          j                  |d<   t;          ||dddd           d S )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FGGGVW#...FSSSD
lCRCy jRW\\$=MNNOORW\\$=NS=N=N=NOOPP
 g~~=="b**T555)*HD111
jH-55778==?? ,2000#+J#7#>#>#O#OHZ  ##D))5545@@H %%11t1<<F
### ~b!Z////6>""c(*:&;&;;;;;(899$ FJ"h/4 8>   J! 1 8 <B   $$$&*]#$(
=!
g~~'+^$%)
>" $J/66rv>>HZ     r   c           	      v   t          t          j                            t          dd                    }t          t          j                            t          dd                    }t          |||           }| dk    rt          j                    t          t          j                            t          dd|  d                    }| dk    r|j        d	d
         }|	                    d          }| dk    r+|
                    ddg          	                    d          }t          ||ddd           d	S )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      s4   6 BGLLy2GHH
I
IC
BGLLy2GHH
I
ICS#3'''F
jkmm
T9&F&F&F&FGG H g~~="% T**F
g~~##VV$455AAtALL     r   other_geometryc                    | \  }}|                                 }|                    ddi          }|                    d          }|r|j        j        |d<   |j        j        dk    sJ t          |||          }t          |||          }|j        j        dk    sJ |dk    r|j        j        dk    sJ |rAd|j        v sJ t          |d         |d         d           |	                    dgd	          }|                    ddi          }|                    d          }|r!|d
k    r|
                    |j                  }t          ||           |                                 }|                    ddi          }|                    d          }|r|j        j        |d<   |j        j        dk    sJ t          |||          }t          |||          }t          ||           d S )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   +  s1    HC
((**C
**j*5*
6
6C


:
&
&C 0,/J<
****3%%%D3%%%D<
****
l}!Z//// 	3----"Z #j/U    99j\922D{{J
#;{<<  ,,  2#//||DL|11dD)))
((**C
**j&1*
2
2C


6
"
"C 0,/J<&&&&3%%%D3%%%DdD)))))r   c                     | \  }}t          j        t                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )NspandexrR   )r   raises
ValueErrorr   r;   r9   r:   s      r   test_bad_howr   Y  s    HC	z	"	" ) )Si(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   ?AAc                     |dk    rt          j        d           | \  }}|                    ddi          }t          |||          }d|j        v r	d|j        v sJ d S )	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   _  sx    
l?@@@HC::vv.://D
#t
%
%
%C##(ck*A*A*A*A*A*Ar   c                     | \  }}t          j        t                    5  t          ||j        d           d d d            d S # 1 swxY w Y   d S NrE   rR   )r   r   NotImplementedErrorr   r4   r   s      r   test_geoseries_warningr   h  s    HC	*	+	+ 0 0S\w////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AAAzpyproj not available)reasonc                     | \  }}t          |||          }|j        J d}||_        ||_        t          |||          }|j        |k    sJ d S )NrR   z	epsg:4326)r   r]   )r;   rN   r9   r:   rn   r]   s         r   test_preserve_crsr   o  sm    HCS#3'''F:
CCGCGS#3'''F:r   c                     | \  }}d|_         d|_         t          j        t          d          5  t	          |||           d d d            d S # 1 swxY w Y   d S )N  i  zCRS mismatch between the CRSmatchrR   )r]   r   warnsUserWarningr   )r;   rN   r9   r:   s       r   test_crs_mismatchr   {  s    HCCGCG	k)G	H	H	H # #Sc""""# # # # # # # # # # # # # # # # # #s   AAAc                     | \  }}t          t          g d          t          g d          g          }t          |ddgd          }t          g g d          }t          ||          }t	          ||d	           d S )
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     s    HC<<<==<<<==	
 F FQF;;
<
<CB(D(D(DEEEHS#FfhEBBBBBBr   c                 t   | \  }}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	          ||           d S )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44556667744455	
 F FIII>>
?
?C	999	:	:B	999	:	:B
QaBZ *F*F*F  H S#d33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            d S # 1 swxY w Y   d S )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     s    HC444556667744455	
 F 
F+
,
,C	k)K	L	L	L / /S..../ / / / / / / / / / / / / / / / / /s   1BBB
geom_types)rT   	poly_line
poly_point	line_poly
point_polyc                 Z   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          ||| |          }ng|dk    rt          ||| |          }nM|dk    rt          ||
| |          }n3|dk    rt          ||| |          }n|dk    rt          |
|| |          }	 t          t          j        	                    t          d| d|  d| d                    }t          |j        |j        k              s
J d            t          t          |j                  dhz
            }|                    |d                              d          }|                    |d                              d          }dD ]U}||j        v rJ||                                                                         r||                             d           ||<   Vt'          ||dd!dd!d!"           d#S # t(          $ r |j        sJ Y d#S t,          $ r |j        sJ Y d#S t.          $ r |j        sJ Y d#S 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445544455	
 F AF;;
<
<C444556667744455	
 F FIII>>
?
?C	,,,	-	-z66:J/K/KL F AF;;
<
<Cvf677G
AG<<
=
=CWcs>JJJ	{	"	"cs>JJJ	|	#	#cs>JJJ	{	"	"cs>JJJ	|	#	#cs>JJJ(GLL>>>>n>>> 
 
 8#v~566NN8NNNNC'':,677''1'55AAtALL##Dq#11==4=HH , 	@ 	@Ch&&&8C=+=+=+?+?+C+C+E+E& ( 4 4Y ? ?!##	
 	
 	
 	
 	
 	
    |   |   |s   EK) )L*?L*L*)L*c                     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            d S # 1 swxY w Y   d S )Nr&   r-   r(   r   r2   Try   )r   r   r
   r   r   r   r   r   )r   r9   mixeddfmixeds       r   test_mixed_geom_errorr  2  s2   4445544455	
 F AF;;
<
<C4445577788	
 E QF>>??G	*	+	+ 3 3WT22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s    C  CCc            	         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            d S # 1 swxY w Y   d S )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8899;;;<<	
 	
 D 1#48899E4445544455	
 F AF;;
<
<C	y	!	! 1 1s400001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   ,CCCc                     t          t          j                            t          dd                    } t          t          j                            t          dd                    }t          j        t          d          5  t          | |d           }d d d            n# 1 swxY w Y   t          |          dk    sJ |j
        dk                                    sJ t          | |d	          }t          |          dk    sJ |j
        dk                                    sJ t          | |d
          }t          |          dk    sJ |j
        dk                                    sJ d S )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    BGLL{MBB
C
CC
BGLL{MBB
C
CC	k)K	L	L	L > >sC===> > > > > > > > > > > > > > >|!!!!"i/44666663D999L|!!!!"i/44666663E:::L|!!!!"&::??AAAAAAAs   B!!B%(B%c                  8   t          dddd          t          dddd                              t          dddd                    g} t          dddd          t          dddd                              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	          ||           d S )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  s   Aq!QAq!Qc!Q1oo..F 	Aq!QAq!Qc!Q1oo..F AF;;
<
<C
!QV<<
=
=Cc3t444GFVQ1a#aAq//:	
 	
 I gy111c3u555GIIYYAq!Qa"C1aOOZ@P5Q5Q#RSS	
 	

 
I gy11111r   c                  b   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	          ||           d S )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    so   !Q1oos2r2r223FPPPQQBBF AF;;
<
<C
!QV<<
=
=Cc3t444GCSRR,,-	
 	
 I gy111c3u555GFV"J/?$@$@%1++#NOOBB##	
 	
	 	I gy11111r   c            	         t          dddd          t          dddd          g} t          dddd          t          dddd                              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	          ||           d S )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FFFGSQ1a)	
 	
 I gy11111r   should_make_validc                 R   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          }| rXt          |||           }|j        d	                             |          sJ |j        d
                             |          sJ d S t          j
        t          d          5  t          |||            d d d            d S # 1 swxY w Y   d S )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!RQSCTCTBU8V8VWW
X
XCW%9fl=S3T3TUU I  B#C?PQQQ #M299,GGGGG #M299,GGGGGGG]:-IJJJ 	B 	BC/@AAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   <DD #D c                    t          j        |           }|                                }|                    d          |_        t          j        ||          }t          g d|j                  }t          ||d           d S )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;    s    }--DIIKKE__X..ENtU++F

 

 

 H  H fhEBBBBB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    rft          t          j        g d	
          t          j        g d	
          t          j        g d	
          t          j        g d	
          g d          }n| dk    rHt          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t          j        gt          j        g|gd          }nj| dk    rHt          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          ||           d S )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11	2	2B	111	2	2B
qcA3RDAA
B
BC
qcA3RDAA
B
BCS#3'''F
n7333733373337333 
 
 
BFBFH 
 
 

		D 
 
 
&	&	&BFBFH 
 
 
		cD 
 
 fh/////r   c                  v   t          d t          d          D                       } t          dg di|           }t          dg di|                     d                    }t          g d	
          }t          r|                    ddd          }t          ||d          }t          ||d           d S )Nc                 T    g | ]%}t          ||                              d           &S )g?)r   buffer).0xs     r   
<listcomp>z(test_no_intersection.<locals>.<listcomp>;  s.    >>>E!QKK&&s++>>>r   r*   foo)abcrv   bar)135r(   )rI  rM  r4   r   str)rI  rM  rF   rR   F)check_index_type)r   ranger
   r8  r   r`   r   r   )gsgdf1gdf2rb   rn   s        r   test_no_intersectionrW  9  s    	>>U1XX>>>	?	?B02>>>D02<<??KKKD$>$>$>???H A??5#?#?@@T4^444FfhGGGGGGr   c                  J   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          }|                     |d          }t          ||            t          g d          }|                     |d          }t          ||            d S )	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U	

   D R(d33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
d	S )
TestOverlayWikiExamplec           	      4   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          | _        d S )Nr=  rJ  r   r   rx   )r   r4   rK  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[  st   #$#aAq//ARSSS#$#aBPQBRBRASTTT(%#//3q!Q??:K
 
 
 "RV,sBFC6HIIAq!QPPPQQSSSTT
 
 

 +PPPQQ
 
 
 +SSSTT
 
 
 %1-"&#??PPPQQSSSTT%
 %
 %
! )*sBFm<<Aq!QPPPQQ
 
 
 )*sBFm<<Aq!QSSSTT
 
 
r   c                 h    t          | j        | j        d          }t          || j                   d S )NrF   rR   )r   r^  r_  r   rF   rd  	df_results     r   test_intersectionz(TestOverlayWikiExample.test_intersection  s3    DL$,NKKK	!)T->?????r   c                 h    t          | j        | j        d          }t          || j                   d S r   )r   r^  r_  r   rE   rg  s     r   
test_unionz!TestOverlayWikiExample.test_union  s2    DL$,GDDD	!)TZ88888r   c                 h    t          | j        | j        d          }t          || j                   d S NrG   rR   )r   r^  r_  r   r`  rg  s     r   test_a_difference_bz*TestOverlayWikiExample.test_a_difference_b  3    DL$,LIII	!)T-@AAAAAr   c                 h    t          | j        | j        d          }t          || j                   d S rm  )r   r_  r^  r   ra  rg  s     r   test_b_difference_az*TestOverlayWikiExample.test_b_difference_a  ro  r   c                 h    t          | j        | j        d          }t          || j                   d S )NrH   rR   )r   r^  r_  r   rH   rg  s     r   test_symmetric_differencez0TestOverlayWikiExample.test_symmetric_difference  s4    DL$,<RSSS	!)T-FGGGGGr   c                 h    t          | j        | j        d          }t          || j                   d S NrI   rR   )r   r^  r_  r   rb  rg  s     r   test_a_identity_bz(TestOverlayWikiExample.test_a_identity_b  3    DL$,JGGG	!)T->?????r   c                 h    t          | j        | j        d          }t          || j                   d S 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  s        6
 6
 6
p@ @ @9 9 9B B BB B BH H 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 P P P P P P P P P P P P     A A A A A A A A A A A A : : : : : : : :  O O O O O O O O(((((((       i      
w||BGOOBGOOH$=$=>>	RR   $ EEEFFF  GF VVV     e}%%%  &%(M (M (MV )D%=999 9 :99 GHHn n IHnb6 6 6r )E4=99** ** :9**Z) ) )C C C0 0 0 
N+ABB  CB 
N+ABB# # CB#C C C0 0 0(/ / / QQQ w w wt3 3 3&1 1 1*B B B(#2 #2 #2L2 2 2@2 2 2: ,tUm<<B B =<B(C C C080 80 80v
H 
H 
H) ) )(S@ S@ S@ S@ S@ S@ S@ S@ S@ S@s   A A#"A#