
    rbiel                    &   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
Z
d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZ d d	l m!Z! d dl"Z"d d
l#m$Z$ d dl%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z. d Z/ G d d          Z0dS )    N)	DataFrameIndex
MultiIndexSeriesconcat)wkt)
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygonbox)GeometryCollection)unary_union)GeoDataFrame	GeoSeries)GEOS_GE_312
HAS_PYPROJSHAPELY_GE_21)GeoPandasBase)assert_geodataframe_equal)assert_geoseries_equalgeom_almost_equalsgeom_equals)assert_array_equal)assert_frame_equalassert_index_equalassert_series_equalc                     t          j        |           } t          j        |          }| j        |j        k    sJ t          | |g|R i | d S N)np
asanyarraydtyper   )abargskwargss       q/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/geopandas/tests/test_geom_methods.pyassert_array_dtype_equalr+   !   s[    
aA
aA7agq!-d---f-----    c                      e Zd Zd Zd ZddZd Zd Zd ZddZ	e
j                            e d	
          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze
j                            e d	
          d             Zd Zd Zd Z d Z!d Z"d  Z#d! Z$e
j                            e%j&        d"k     d#
          d$             Z'd% Z(e
j                            e d	
          d&             Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1e
j                            e d	
          d/             Z2d0 Z3e
j                            e%j&        d"k     d1
          d2             Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>e
j                            e?oe@ d=
          d>             ZAe
j                            e?oe@ d=
          d?             ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHe
j                            e@ dF
          e
j                            e%j&        dGk     dH
          dI                         ZIdJ ZJe
j                            e@ dF
          dK             ZKdL ZLdM ZMdN ZNe
j                            e d	
          dO             ZOdP ZPe
j                            e@ dQ
          dR             ZQdS ZRe
j        S                    dTdUdV eTdWdXgdXdYgg          fdZdV eUg d[          fdZd eV            fg          e
j                            e@ dQ
          d\                         ZWe
j                            e@d]
          d^             ZXd_ ZYe
j                            e%j&        d"k     d#
          d`             ZZda Z[db Z\e
j                            e%j&        dck     dd
          de             Z]e
j                            e%j&        dck     dd
          e
j        S                    dfg dgdhfg didjfg          dk                         Z^dl Z_e
j                            e@ dF
          dm             Z`dn Zado Zbdp Zcdq Zddr Zeds Zfdt Zgdu Zhdv Zidw Zjdx Zkdy Zle
j                            e d	
          dz             Zmd{ Znd| Zod} Zpd~ Zqd Zrd Zsd Ztd Zud Zvd Zwd Zxd Zyd Zze
j                            e d	
          d             Z{d Z|d Z}e
j                            e?oe@ d=
          d             Z~d Zd Zd Zd Ze
j                            e@ dF
          d             Zd Zd Ze
j        S                    dddg          d             Ze
j        S                    dddg          d             Ze
j        S                    dddg          d             Zd Zd Ze
j        S                    dg d          d             Ze
j        S                    dg d          d             Ze
j        S                    dg d          d             Zd Zd Zd Zd Ze
j        S                    dddg          d             Zd Zd Zd Ze
j                            e@ dF
          d             Zd Zd Zd Zd Ze
j                            e@ dF
          d             Ze
j        S                    dg d          d             Zd Ze
j        S                    dg d          d             Zd Zd Zd Zd Zd Ze
j                            e%j&        dck     dd
          e
j        S                    d e eg d                     e eg d                    f e eVg d                     e eVg d                    fg          d                         Zd Zd ZdÄ ZdĄ Zdń ZdƄ Ze
j                            e%j&        dck     dd
          dǄ             Ze
j                            e%j&        dck     dȬ
          dɄ             Ze
j                            e%j&        dk     dˬ
          d̄             Zd̈́ Zd΄ ZdS )TestGeomMethodsc                 T    t          g d           _        t          g d           _        t          g d           _        t          g d           _        t          g d           _        t          g d           _        t          g d           _        t          g d           _        t          g d	           _	        t          g d
           _
        t          g d           _        t           j        j         j        j        g           _        t          dd           _        t          ddd           _        t#           j         j         j         j         j         j        d g           _        t#           j         j        g           _        t#           j         j        g           _        t#           j         j        g           _        t#           j         j         j        g           _        d j        _        t#           j         j        g           _        d j        _        t#           j         j        g           _        t#           j         j        t                      g           _        t#           j        d g           _         j                                         _        ddg j        _         j                                         _        ddg j        _        t          ddd           _         t          ddd           _!        t#           j          j!        gd           _"        t          dd           _#        t#           j          j!         j#        gd           _$        tK          j&        d           _'        t#           j          j!         j#         j'        gd           _(        tS          g d           _*        tS          g d           _+        t#           j*         j+        g           _,        t#           j         j        g           _-        t#           j         j        g           _.        t#           j         j	        g           _/        t#          g            _0        t#          d d g           _1        t#          te          g           te          g           g           _3        t                       _4        t#           j        tk          dd                     _6        t#           j         j        g           _7        tS          ddg           _8        tS          d d!g           _9        t#           j8         j9        g           _:        tw           j        d"d#gd$d%gd&           _<        tw           j        d'dgd(d)gd*           _=        tw           j        d'dgd(d)gd*           _>        tw           j        g d+g d,d*           _?        t#           j         j         j'         j         j         j4         j*        g           _@        t          jB        d-d-gd-d-gd.d.gd"d.gd"d"gd.d.gd"d"gd#d#gd/d/gd"d"gd.d.gd.d"gd"d"gg           _C        t          jB        d-d-t          jD        gg d0d.d.t          jD        gd"d.t          jD        gd"d"t          jD        gd.d.t          jD        gg d1g d2g d3g d1d.d.t          jD        gd.d"t          jD        gd"d"t          jD        gg           _E        t#           fd4tk          d5          D                        _F        tS          g d6           _G        tS          g d7           _H        t#           jG        g           _I        t#           jH        g           _J        t#          tS          ddg          tS          dd g          tS          d dg          tS          dd!g          tS          d!dg          tS          d8d9g          tS          d:d;g          t          d<d<          gdtk          d=d>          ?           _K        tS          g d6           _G        tS          g d7           _H        t#           jG        g           _I        t#           jH        g           _J        t#          t          d@dAgdAdBgg          t          d@dAgdCdBgg          t                      t          dd!gddDgg          t          d<d<          gdtk          d=dE          ?           _M        d S )FN)r   r      r   r2   r2   r0   r3   r   r2      r      r   r:   r2   )r2   r2   r2   r8   r8   r8   r:   r:   r:   )r=   r<   r>   r0   r1   r3   r5   )r<   r=   r>      rA   rA   )r0   r9   r:   r:   r   r8   )r7   r9   rB   r8   r:   )r7   r7   r9   r9   ))      ?rE   )      ?rE   )rF   rF   )rE   rF      z	epsg:4326ABC&SR):_D@S>@YڂR ~:XD@.n<?@crs  zPOINT EMPTYr0   r5   r3   r2      indexr0   r3   r5   r1         ?       @geopandas)geometrycol0col1rA   randstring)r\   col3col4)rA   rG      )r_   r`   rZ         @              @)rd   rd   rd   )rX   rX   rX   )rY   rY   rY   )rf   rf   rf   c                     g | ]	}j         
S  )sq).0_selfs     r*   
<listcomp>z0TestGeomMethods.setup_method.<locals>.<listcomp>   s    !<!<!<a$'!<!<!<r,   r:   ))d   r   r0   )r   rn   )rG   rG   )rG   rn   )rn   rG   ro   )rc   rc         ?)rq   r8   r   r8   
   rR   rW   rC   r   rs   rG   rs   r      r9      )Nr   t1t2t3tztz1ri   sqzt4t5t6inner_sqboundarynested_squaresr   p0p3dr   g0g1g2g3gzrR   g4g_3dnana_nonecopya1rW   a2esbsol	landmarkspt2dlandmarks_mixedr   loadspt_emptylandmarks_mixed_emptyr
   l1l2g5g6g7g8emptyall_noner   all_geometry_collection_empty
empty_polyrangeg9g10l3l4crossed_linesr   gdf1gdf2gdf3gdfzg11r#   arrayexpected_2dnanexpected_3dsquaresl5l6g12g13linesr   g14rl   s   `r*   setup_methodzTestGeomMethods.setup_method)   s   222332223322233;;;<<<<<==:::;;GGGHH:::;;:::;;:::;;DDD
 
 &dg&69O8PQQ1++Aq>>#

 

 TWdg.//TWdg.//TWdg.//TWdh9::!TWdg.//!tw122	TWdgwyy9:: $'411',,..c
',,..c
7G447G44"DHdh#7[III(G,,	($(DHdi)HdSSS	-00%.XtxDM:&
 &
 &
" 55566===>>TWdg.//TWdg.//TWdg.//TWdg.//r]]
!4,//-6##%7%;%;<.
 .
* "))DG5A;;777dgtw/00 ff-..ff-..&'9:: !3*uh>OPP
 
	 !1a&68:LMM
 
	 !1a&68:LMM
 
	 !)))=V=V=VWW
 
	 

 

 8c
c
c
c
c
c
c
c
c
c
c
c
c

 
" 8c26"c26"c26"c26"c26"c26"c26"c26"
 
" !!<!<!<!<588!<!<!<==999::999::dgY''dgY''FF+,,FF+,,FF+,,FF+,,FF+,,FF+,,Ix011a	 2,,
 
 

 999::999::dgY''dgY''&'!2Wg4F GHH&'!2Wg4F GHH!!&&!1FF3C DEEa 1++

 

 

r,   c                 D    t           }|                     ||||           dS )z,Tests for 'area', 'length', 'is_valid', etc.N)r    _test_unary)rl   opexpectedr&   fcmps        r*   _test_unary_realz TestGeomMethods._test_unary_real   s'    "Xq$/////r,   Fc                 z    t          |t                    rt          }nd }|                     |||||           d S )Nc                 4    |                      |          sJ d S r"   )equalsr&   r'   s     r*   r   z5TestGeomMethods._test_unary_topological.<locals>.fcmp   s    xx{{"""""r,   method)
isinstancer   r   r   )rl   r   r   r&   r   r   s         r*   _test_unary_topologicalz'TestGeomMethods._test_unary_topological   sQ    h.. 	#)DD# # # 	Xq$v>>>>>r,   c           	          t          |t                    rt          }nd }t          |t                    rd}nd} | j        |||||d|g|R i | dS )z?Tests for 'intersection', 'union', 'symmetric_difference', etc.c                 *    t          | |          sJ d S r"   )r   r   s     r*   r   z6TestGeomMethods._test_binary_topological.<locals>.fcmp   s    "1a(((((((r,   TFN)r   r   r   _binary_op_test)	rl   r   r   r&   r'   r(   r)   r   right_dfs	            r*   _test_binary_topologicalz(TestGeomMethods._test_binary_topological   s    h.. 	))DD) ) ) a'' 	HHHR1atXWWWWPVWWWWWr,   c           	      B    t           } | j        |||||ddg|R i | d S )NTF)r    r   )rl   r   r   r&   r'   r(   r)   r   s           r*   _test_binary_realz!TestGeomMethods._test_binary_real   s<    "R1atUTTTTTVTTTTTr,   c                 |   d }
 t          ||          |g|R i |	} |||           |r1 |
|          } t          ||          |g|R i |	} |||           |r[ |
|          } t          ||          |g|R i |	} |||           |r* t          ||          |g|R i |	} |||           dS dS dS )a^  
        This is a helper to call a function on GeoSeries and GeoDataFrame
        arguments. For example, 'intersection' is a member of both GeoSeries
        and GeoDataFrame and can take either GeoSeries or GeoDataFrame inputs.
        This function has the ability to test all four combinations of input
        types.

        Parameters
        ----------

        expected : str
            The operation to be tested. e.g., 'intersection'
        left: GeoSeries
        right: GeoSeries
        fcmp: function
            Called with the result of the operation and expected. It should
            assert if the result is incorrect
        left_df: bool
            If the left input should also be called with a GeoDataFrame
        right_df: bool
            Indicates whether the right input should be called with a
            GeoDataFrame

        c                     t          |           }t          j        d |         }t          |          }t	          | j        ||d| j        | j                  S )N)r\   r^   col2rW   rR   )lenr`   ascii_lowercaser   r   valuesrW   rR   )snr^   r   s       r*   	_make_gdfz2TestGeomMethods._binary_op_test.<locals>._make_gdf  sY    AA)"1"-D88DXtTBBgE   r,   N)getattr)rl   r   r   leftrightr   left_dfr   r(   r)   r   resultgdf_left	gdf_rights                 r*   r   zTestGeomMethods._binary_op_test   sM   8		 		 		 #r""5:4:::6::VX 	# yH*WXr**5B4BBB6BBFD""" 		'!	%((I&WT2&&yB4BBB6BBFD""" '.2..yJ4JJJ6JJVX&&&&&		' 		'' 'r,   c                    |r t          ||                      }nt          ||          } |||           | j                            |          }|r t          ||                      }nt          ||          } |||           d S r"   )r   r   set_geometry)rl   r   r   r&   r   r   r   gdfs           r*   r   zTestGeomMethods._test_unary1  s     	$#WQ^^%%FFQ^^FVX i$$Q'' 	&%WS"%%''FFS"%%FVXr,   zpyproj not available)reasonc                 
   | j                                                             d d          }t          j        t
                    5  |                     d| j         | j         |           d d d            d S # 1 swxY w Y   d S )NT)allow_overrideintersection)r   r   set_crspytestwarnsUserWarningr   )rl   	no_crs_g3s     r*   test_crs_warningz TestGeomMethods.test_crs_warningA  s     GLLNN**4*EE	\+&& 	W 	W)).$'47IVVV	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	Ws   #A88A<?A<c                    t          j        t          d          5  | j                            | j        d            d d d            n# 1 swxY w Y   t          j        d          5 }| j                            | j        d           | j                            | j        d           t          |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )N:The indices of the left and right GeoSeries' are not equalmatchalignTrecordFr   )	r   r   r   r   r   r   warningscatch_warningsr   )rl   r   s     r*   test_alignment_warningz&TestGeomMethods.test_alignment_warningH  s^   \N
 
 
 	6 	6 G   555		6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 $D111 	$VG   555G   666v;;!#####		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s$   "A

AA*ACCCc                 v   |                      d| j        | j        | j                   |                      d| j        | j        | j        d           t          | j                            | j	        d          dk              sJ t          | j                            | j	        d          dk              sJ d S )Nr   Tr   rU   Fry   )
r   rz   r   r   r   r   r   r   r   r   r   s    r*   test_intersectionz!TestGeomMethods.test_intersectionU  s    %%ndgtwPPP%%DM47DJd 	& 	
 	
 	
 47''t'<<ABBBBB47''u'==BCCCCCCCr,   c                      | j         d| j        | j        g| j        j        R    | j         d| j        | j        g| j        j        R   d S )Nclip_by_rect)r   r   r   ri   boundsr   r|   r   s    r*   test_clip_by_rectz!TestGeomMethods.test_clip_by_rect^  su    %%DGTX	
04	
 	
 	
 	
 	&%D>	
JN'.	
 	
 	
 	
 	
 	
r,   c                 $   |                      d| j        | j        | j                   t	          | j                            | j        d          dk              sJ t	          | j                            | j        d          dk              sJ d S )NunionTr   rU   Fry   )r   ri   r   r   r   r   r  r   r   s    r*   test_union_seriesz!TestGeomMethods.test_union_seriesg  s    %%gtwIII47===55:;;;;;47===66!;<<<<<<<r,   c                 T    |                      d| j        | j        | j                   d S )Nr  )r   ri   r   r{   r   s    r*   test_union_polygonz"TestGeomMethods.test_union_polygonm  s(    %%gtwIIIIIr,   c                 $   |                      d| j        | j        | j                   t	          | j                            | j        d          dk              sJ t	          | j                            | j        d          dk              sJ d S )Nsymmetric_differenceTr   rU   Fry   )r   ri   r   r   r   r   r  r   r   s    r*    test_symmetric_difference_seriesz0TestGeomMethods.test_symmetric_difference_seriesp  s    %%&<dgtwPTPWXXX47//t/DDIJJJJJ47//u/EEJKKKKKKKr,   c                     t          t                      | j        g| j        j                  }|                     d|| j        | j                   d S )NrQ   r  )r   r   ri   r   rR   r   rz   rl   r   s     r*   test_symmetric_difference_polyz.TestGeomMethods.test_symmetric_difference_polyv  sU    022DG<$'+NNN%%"Hdgtw	
 	
 	
 	
 	
r,   c                 ^   t          t                      | j        g          }|                     d|| j        | j                   t          | j                            | j	        d          dk              sJ t          | j                            | j	        d          dk              sJ d S )N
differenceTr   rU   Fry   )
r   r   r{   r   r   r   r   r   r  r   r  s     r*   test_difference_seriesz&TestGeomMethods.test_difference_series|  s    022DG<==%%lHdgtwOOO47%%dgT%::a?@@@@@47%%dgU%;;q@AAAAAAAr,   c                     t          | j        | j        g          }|                     d|| j        | j                   d S )Nr  )r   rz   r   r   r{   r  s     r*   test_difference_polyz$TestGeomMethods.test_difference_poly  s<    dgtw/00%%lHdgtwOOOOOr,   c                 *   t          t          ddg          d g          }t          || j                            | j                             t          t          ddg          t          ddg          g          }t          || j                            | j                             t          t          ddg          t          ddg          g          }| j        d d d         }t          || j                            |d                     d S )Nr3   ro   r7   rq   rq   rr   Fr   )	r   r
   r+   r   shortest_liner   r   r   r   )rl   r   crossed_lines_invs      r*   test_shortest_linez"TestGeomMethods.test_shortest_line  s   j&&)9::DABB 4<+E+Edg+N+NOOOFF+,,FF+,,
 
 	!47+@+@+I+IJJJZ011:z:>V3W3WX
 
 !.ttt4 d(667HPU6VV	
 	
 	
 	
 	
r,   c           	      n   t          t          g d          d g          }t          || j                            t          dd          d                     t          t          d          t          g d          g          }t          || j                            | j        d                     d S )	N)r   rq   r1   r3   r  r   rq   r2   	tolerancero   )rC   r0   r9   rB   rC   r:   )r   r   r+   r   snapr   r   r   r  s     r*   	test_snapzTestGeomMethods.test_snap  s    g&J&J&JKKTRSS dl''a'CC	
 	
 	
 f@@@AA
 
 	!47<<1<+M+MNNNNNr,   c                    t          ddg          }t          ddg          }t          t                      g          }t          |g                              |          }t	          ||           t          |g                              t          |g                    }t	          ||           t          t                      g          j        }t	          ||           d S )Nr0   r3   r8   r8   rB   )r
   r   r   r   r   convex_hull)rl   r   r   r   r   s        r*   test_geo_op_empty_resultz(TestGeomMethods.test_geo_op_empty_result  s    ())())022344B4--b11vx000B4--ioo>>vx000.00122>vx00000r,   c                     t          g d          }t          g d          }t          ||g| j        j        | j        j                  }|                     d|| j                   d S )N)r0   r1   r3   r0   )r0   r1   r3   r5   r0   r   r   )r
   r   r   rW   rR   r   )rl   r   r   r   s       r*   test_boundaryzTestGeomMethods.test_boundary  sj    88899@@@AAb"XTW]LLL$$Z47CCCCCr,   c                 F   t          t          j        ddg          | j        j                  }|                     d|| j                   t          t          j        dt          j        g          | j        j                  }|                     d|| j                   d S )Nrq   rX   rV   area)r   r#   r   r   rW   r   r   r   r  s     r*   	test_areazTestGeomMethods.test_area  s    "(C:..dgmDDDfh888"(C=119KLLLfh=====r,   c                     t          j        t          d          5  | j        j         d d d            d S # 1 swxY w Y   d S NGeometry is in a geographic CRSr   )r   r   r   r   r$  r   s    r*   test_area_crs_warnz"TestGeomMethods.test_area_crs_warn  s    \+-NOOO 	 	GLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   6::c                     t          ddgddgddgddgd| j        j        g d          }| j        j        }t	          ||           | j                            | j                  }|j        }t	          ||           d S )Nre   rX   minxminymaxxmaxy)rW   columns)r   r   rW   r   r   r   r   )rl   r   r   r   s       r*   test_boundszTestGeomMethods.test_bounds  s    c
c
c
c
	  '-444	
 	
 	
 8V,,,i$$TW--8V,,,,,r,   c                     t          g           }|j        }t          g d|j        d          }t	          ||           d S )Nr,  float64)r1  rW   r%   )r   r   r   rW   r   )rl   r   r   r   s       r*   test_bounds_emptyz!TestGeomMethods.test_bounds_empty  sQ     bMM444AG9
 
 
 	68,,,,,r,   c                 f   | j         }t          g d          }t          ||g          }t          ||g          }|                     d||d           t          |d g          }|                     d||d           t          d d g          }|                                                    t          j                              sJ |                    d                              |          sJ t          r2t          r-|                    d                              |          sJ d S d S d S )Nr6   	union_allTr   coveragedisjoint_subset)rz   r   r   r   r   r7  r   shapelyr   r   r   )rl   p1p2r   gr   r   s          r*   test_union_allzTestGeomMethods.test_union_all  sF   W---..Bx((r2h$$[(Ad$KKKDz""$$["b$FFFd|$$||~~$$W%?%A%ABBBBB{{*{--44X>>>>> 	J= 	J;;&7;88??IIIII	J 	J 	J 	JIIr,   c                     | j         }t          g d          }t          ||g          }t          j        t
          d          5  |j        }d d d            n# 1 swxY w Y   ||                                k    sJ d S )Nr6   z)The 'unary_union' attribute is deprecatedr   )rz   r   r   r   r   DeprecationWarningr   r7  )rl   r;  r<  r=  r   s        r*   test_unary_union_deprecatedz+TestGeomMethods.test_unary_union_deprecated  s    W---..r2h\&Q
 
 
 	# 	# ]F	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# &&&&&&s   AA Ac           
      4   t          g d          }t          t          dddd          t          dddd          t          dddd          g          }|                                                    |          sJ t          t          dddd          d g          }|                                                    |d                   sJ t          d d g          }|                                                    t          j                              sJ d S )N)r3   )r2         ?)rC  rC  )rC  r2   r3   r   r8   r2   r:   rC  )r   r   r   intersection_allr   r:  r   )rl   r   r=  r   r   s        r*   test_intersection_allz%TestGeomMethods.test_intersection_all  s   KKKLLs1aAAq!QQ39L9LMNN!!##**844444Aq!Q.//""$$++BqE22222d|$$""$$++G,F,H,HIIIIIIIr,   c                 4   g d}t          || j                            | j                             g d}t          || j                            | j        d                     g d}t          || j                            | j        d                     d S )N)TFTFFFFFTTTTTFFTr   FFTFFFFF)r+   r   containsrz   r   r  s     r*   test_containszTestGeomMethods.test_contains  s    BBB 47+;+;DG+D+DEEEFFF 47+;+;DG4+;+P+PQQQCCC 47+;+;DG5+;+Q+QRRRRRr,   c           	      F   g d}t          || j                            t          dd                               g d}t          || j                            | j        d                     g d}t          || j                            | j        d                     d S )NrH  rE   )FFFFFTFFTr   F)r+   r   contains_properlyr   r   r  s     r*   test_contains_properlyz&TestGeomMethods.test_contains_properly  s    CCC 47+D+DU4QUEVEV+W+WXXXJJJ dg//t/DD	
 	
 	
 DCC dg//u/EE	
 	
 	
 	
 	
r,   )r:   rs   r   zrequires GEOS>=3.10c                 :   g d}t          || j                            | j        d                     g d}t          || j                            | j        dd                     g d}t          || j                            | j        dd                     d S )	N)TTTFTTFrc   rG  r2   Tr   TTTTFFFF)r+   r   dwithinr   r   r  s     r*   test_dwithinzTestGeomMethods.test_dwithin(  s    ??? 47??47A+F+FGGGFFF 47??47AT?+R+RSSS@@@ 47??47AU?+S+STTTTTr,   c                    t          t          j        dt          j        d          z   dg          | j        j                  }|                     d|| j                   t          t          j        dt          j        d          z   t          j        g          | j        j                  }|                     d|| j                   d S )Nr8   rA   rV   length)	r   r#   r   sqrtr   rW   r   r   r   r  s     r*   test_lengthzTestGeomMethods.test_length2  s    "(A

NA#677tw}MMMh$':::"(A

NBF#;<<DLDVWWWh$,?????r,   c                     t          j        t          d          5  | j        j         d d d            d S # 1 swxY w Y   d S r'  )r   r   r   r   rS  r   s    r*   test_length_crs_warnz$TestGeomMethods.test_length_crs_warn9  s    \+-NOOO 	 	GNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r*  c                 f   t          t          j        ddg          | j        j                  }t          | j                                        |d           t          t          j        ddg          | j        j                  }t          | j                                        |d           d S )NrA   rG   rV   Fcheck_dtyper   )r   r#   r   r   rW   r    count_coordinatesr   r  s     r*   test_count_coordinatesz&TestGeomMethods.test_count_coordinates>  s    "(Aq6**$'-@@@DG5577uUUUU"(Aq6**$,2DEEEL**,,hE	
 	
 	
 	
 	
 	
r,   c           	      2   t          t          j        g d                    }t          t	          g d          t          ddg          t          g d          t          dd          d g          }t          |	                                |d           d S )	N)rA   r8   r2   r2   r   )r0   r3   r2   rr   r5   )r0   r3   ))rr   r   r1   )r0   r3   r^  r   FrY  )
r   r#   r   r   r   r   r
   r   r    count_geometriesrl   r   r   s      r*   test_count_geometriesz%TestGeomMethods.test_count_geometriesG  s    "(???3344<<<==!13D EFF44455a
 
 	A..00(NNNNNNr,   c           	      (   t          t          j        g d                    }t          t	          g dg dg          t	          g dg dg dg          t          dd          d g          }t          |                                |d	           d S )
N)r2   r8   r   r   )r0   r   rG   ro   rG   r   )r3   )r2   rA   rA   rA   rA   r2   )r3   r2   r8   r  r8   r2   )r:   r8   rB   rA   r:   rA   r8   r   r2   FrY  )r   r#   r   r   r   r   r    count_interior_ringsr`  s      r*   test_count_interior_ringsz)TestGeomMethods.test_count_interior_ringsT  s    "(<<<00114445556  444888888  a
 
" 	A2244hERRRRRRr,   c                    g d}t          || j                            | j                             ddg}t          || j                            | j                             dgdz  }t          || j                            | j        d                     dgdz  }t          || j                            | j        d                     d S )N)FFFFFFFFTrU   r   ry   )r+   r   crossesrz   r   r   r   r  s     r*   test_crosseszTestGeomMethods.test_crossesi  s    DDD 47??47+C+CDDD4= 4+=+E+Edg+N+NOOO7Q; 47??47$?+O+OPPP7Q; 47??47%?+P+PQQQQQr,   c                 8   g d}t          || j                            | j                             dgdz  }t          || j                            | j        d                     g d}t          || j                            | j        d                     d S )N)FFFFFTFFrU   Tr   )FFFFTFF)r+   r   disjointrz   r   r  s     r*   test_disjointzTestGeomMethods.test_disjointv  s    CCC 47+;+;DG+D+DEEE7Q; 47+;+;DG4+;+P+PQQQCCC 47+;+;DG5+;+Q+QRRRRRr,   c                 d   t          g d| j        j                  }t          || j                            | j                             t          dd g| j        j                  }t          || j                            | j                             t          g dt          d                    }t          || j                            | j	        d                     t          g d| j        j                  }t          || j                            | j	        d	                     d S )
N)	212101212ru  	212FF1FF2	2FFF1FFF2	FF2F112F2	FF0FFF212NrV   ry  )Nrw  rw  rw  rw  	0FFFFFFF2NNrU   Tr   )	FF2F11212	2FF11F212rv  	FF2F1F212	FF2FF10F2NNF)
r   r   rW   r    relater   r   r   r   r   r  s     r*   test_relatezTestGeomMethods.test_relate  s7      '-
 
 
 	HdgnnT]&C&CDDD;-TW]CCCHdgnnT\&B&BCCC	 	 	 ((
 
 
 	HdgnnTWDn&I&IJJJ   '-
 
 
 	HdgnnTWEn&J&JKKKKKr,   c           	      D   t          dgdz  dgdz  z   | j        j        t                    }t	          || j                            | j        d                     t          ddg| j        j        t                    }t	          || j                            | j        d                     t          dgdgdz  z   ddgz   t          d	          t                    }t          j        t          d
          5  t	          || j                            | j        dd                      d d d            n# 1 swxY w Y   t          dgdgdz  z   dgdz  z   | j        j        t                    }t	          || j                            | j        dd                     d S )NTrA   Fr:   )rW   r%   z	2********z	FF0******rG   rU   z!The indices of the left and rightr   z	T********r   r8   )r   r   rW   boolr+   relate_patternr   r   r   r   r   r   r   r   r  s     r*   test_relate_patternz#TestGeomMethods.test_relate_pattern  s   4&1*w{2$'-tTTT dg,,T]KHH	
 	
 	
 4-tw}DIII dg,,T\;GG	
 	
 	
 Gtfqj E5>1q
 
 
 \+-PQQQ 	 	$$'00+T0RR  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Gtfqj E7Q;.dgm4
 
 
 	!dg,,TWk,OO	
 	
 	
 	
 	
s   81D55D9<D9c                 @   t          t          j        t          j        d          t          j        g          | j        j                  }t          || j                            | j	                             t          t          j        t          j        d          t          j        g          | j
        j                  }t          || j
                            | j                             t          t          j        t          j        dddddt          j        t          j        g          t          d                    }t          || j                            | j        d                     | j        j        d                             | j        j        d                   }t          t          j        dddd|t          j        t          j        g          | j        j                  }t          || j                            | j        d                     d S )N    r   rU   Tr   rA   F)r   r#   r   rT  r   r   rW   r+   distancer   r   r   r   r   iloc)rl   r   vals      r*   test_distancezTestGeomMethods.test_distance  s   Hbg9::BFCDDdlFX
 
 	!4<+@+@+I+IJJJ"(BGK$8$8"&#ABBDGMRR 47+;+;DL+I+IJJJ"(BFAq!Q2626#JKKUSTXXVV 47+;+;DG4+;+P+PQQQgl1o&&tw|A77"(Aq!QRVRV#DEEtw}UU 47+;+;DG5+;+Q+QRRRRRr,   c                     t          j        t          d          5  | j                            | j                   d d d            d S # 1 swxY w Y   d S r'  )r   r   r   r   r  r   r   s    r*   test_distance_crs_warningz)TestGeomMethods.test_distance_crs_warning  s    \+-NOOO 	& 	&GTW%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s    A		AAc                    t          t          j        t          j        d          t          j        g          | j        j                  }t          || j                            | j	                             t          t          j        t          j        d          t          j        g          | j        j                  }t          || j                            | j	                             t          t          j        t          j        dddddt          j        t          j        g          t          d                    }t          || j                            | j        d                     | j        j        d                             | j        j        d                   }| j        j        d                             | j        j        d                   }| j        j        d                             | j        j        d                   }t          t          j        |||||t          j        t          j        g          | j        j                  }t          || j                            | j        d                     t          t          j        d	g          | j        j                  }t          || j                            | j        d
                     d S )N2   r   rU   Tr   r8   rA   Fg     @J@rE   densify)r   r#   r   rT  r   r   rW   r+   hausdorff_distancer   r   r   r   r  r   r   )rl   r   val_1val_2val_3s        r*   test_hausdorff_distancez'TestGeomMethods.test_hausdorff_distance  s2   "(BGK$8$8"&#ABBDLDVWW 4<+J+J47+S+STTT"(BGK$8$8"&#ABBDLDVWW 4<+J+J47+S+STTT"(BFAq!Q2626#JKKUSTXXVV dg000EE	
 	
 	
 Q2247<?CCQ2247<?CCQ2247<?CCHeUE5%HII47=
 
 	!dg000FF	
 	
 	
 "(D6**DHN;; dh11$(D1II	
 	
 	
 	
 	
r,   zbuggy with GEOS<3.10c                 X   t          t          j        t          j        d          t          j        g          | j        j                  }t          || j                            | j	                             t          t          j        t          j        dddddt          j        t          j        g          t          d                    }t          || j                            | j        d                     d}t          j        d          dz  }t          j        d          dz  }t          j        d          dz  d	z  }t          t          j        |||||t          j        t          j        g          | j        j                  }t          || j                            | j        d
                     t          t          j        t          j        d          g          | j        j                  }t          || j                            | j        d                     d S )Nr  r   rU   Tr   rX   r8   rA   rs   FiQJ  rE   r  )r   r#   r   rT  r   r   rW   r+   frechet_distancer   r   r   r   r   r   )rl   r   r  r  r  val_4s         r*   test_frechet_distancez%TestGeomMethods.test_frechet_distance  s   
 "(BGK$8$8"&#ABBDLDVWW 4<+H+H+Q+QRRR"(BFAq!Q2626#JKKUSTXXVV dg..twd.CC	
 	
 	

 

Q

Qa2%HeUE5%HII47=
 
 	!dg..twe.DD	
 	
 	
 "(BG,C$D$D#EFFWW dh//$/GG	
 	
 	
 	
 	
r,   c                    g d}t          || j                            | j                             ddg}t          || j                            | j                             t          j        g t                    }t          || j	                            | j                             t          j        g t                    }t          || j	                            | j
                             dgdz  }t          || j                            | j
                             g d}t          || j                            | j        d                     g d}t          || j                            | j        d                     d S )	NTTTTTFFTF)r%   ry   rG  r   rO  )r+   r   
intersectsrz   r   r{   r#   r   r  r   r   r   r  s     r*   test_intersectszTestGeomMethods.test_intersects  s]   ??? 47+=+=dg+F+FGGG%= 4<+B+B47+K+KLLL8Bd+++ 4:+@+@+I+IJJJ8Bd+++ 4:+@+@+Q+QRRR7Q; 47+=+=do+N+NOOOFFF 47+=+=dgT+=+R+RSSS@@@ 47+=+=dgU+=+S+STTTTTr,   c                    g d}t          || j                            | j                             ddg}t          || j                            | j                             dgdz  }t          || j                            | j        d                     dgdz  }t          || j                            | j        d                     d S )N)TTFFFFFFrU   Tr   ry   )r+   r   overlapsr   r   rz   r   r  s     r*   test_overlapszTestGeomMethods.test_overlaps.  s    BBB 47+;+;DM+J+JKKK5> 47+;+;DG+D+DEEE7Q; 47+;+;DG4+;+P+PQQQ7Q; 47+;+;DG5+;+Q+QRRRRRr,   c                 8   g d}t          || j                            | j                             dgdz  }t          || j                            | j        d                     g d}t          || j                            | j        d                     d S )NFTFFFFFFrU   Tr   )TFFTFFF)r+   r   touchesrz   r   r  s     r*   test_toucheszTestGeomMethods.test_touches;  s    CCC 47??47+C+CDDD7Q; 47??47$?+O+OPPPBBB 47??47%?+P+PQQQQQr,   c                    g d}t          || j                            | j                             g d}t          || j                            | j                             g d}t          || j                            | j        d                     g d}t          || j                            | j        d                     d S )N)TFFFFFFr  rG  Tr   r  F)r+   r   withinrz   ri   r   r  s     r*   test_withinzTestGeomMethods.test_withinE  s    CCC 47>>$'+B+BCCC??? 47>>$'+B+BCCCFFF 47>>$'>+N+NOOOCCC 47>>$'>+O+OPPPPPr,   c                     | j                             | j                   }t          ddg          }t          ||           d S )NT)r   coversr   r    rl   resexps      r*   test_covers_itselfz"TestGeomMethods.test_covers_itselfR  s>    gnnTW%%dD\""C%%%%%r,   c                 R   | j                             | j                  }t          ddg          }t	          ||           g d}t          || j                            | j        d                     g d}t          || j                            | j        d                     d S )NTFrG  r   rH  )r   r  r   r   r    r+   r   r   rl   r  r  r   s       r*   test_coverszTestGeomMethods.test_coversX  s    gnnTW%%dE]##C%%%FFF 47>>$'>+N+NOOOCCC 47>>$'>+O+OPPPPPr,   c                     | j                             | j                  }t          ddg          }t	          ||           d S )NF)r   r  r   r   r    r  s      r*   test_covers_inversez#TestGeomMethods.test_covers_inversec  s>    gnnTW%%eU^$$C%%%%%r,   c                 R   | j                             | j                   }t          ddg          }t          ||           g d}t	          || j                            | j        d                     g d}t	          || j                            | j        d                     d S )NTrG  r   r  F)r   
covered_byr   r    r+   r   r   r  s       r*   test_covered_byzTestGeomMethods.test_covered_byh  s    g  ))dD\""C%%%FFF 47+=+=dgT+=+R+RSSSCCC 47+=+=dgU+=+S+STTTTTr,   c                     t          t          j        dgt          | j                  z            | j        j                  }|                     d|| j                   d S )NTis_validr   r#   r   r   r   rW   r   r  s     r*   test_is_validzTestGeomMethods.test_is_valids  sN    "(D6CLL#89947=IIj(DG<<<<<r,   c                    t          t          j        dgt          | j                  z            | j        j                  }t          | j                                        |           t          t          g d          t          g d          d g          }t          g d          }t          |                                |           d S )NValid Geometry)r0   r3   r1   r5   )r0   r3   r3   r5   )zSelf-intersection[0.5 0.5]r  N)
r   r#   r   r   r   rW   r    is_valid_reasonr   r   r`  s      r*   test_is_valid_reasonz$TestGeomMethods.test_is_valid_reasonw  s    "($4#5DG#DEEtw}UUDG3355x@@@8889988899
 
 PPPQQA--//:::::r,   z!GEOS 3.12 and shapely 2.1 needed.c                    t          t          g d          t          g d          g          }|                                sJ t          t          g d          t          g d          g          }|                                rJ d S )Nr0   r3   r1   r0   )r0   r3   r5   r0   r0   r  r3   r5   r0   )r   r   is_valid_coverage)rl   r   s2s      r*   test_is_valid_coveragez&TestGeomMethods.test_is_valid_coverage  s     8889988899
 
 ""$$$$$88899DDDEE
 
 '')))))))r,   c                    t          t          g d          t          g d          g          }t          t          ddg          t          g d          g          }t          |                                |           d S )Nr  r  r0   r3   )r0   r  r3   )r   r   r
   r   invalid_coverage_edgesrl   r   r   s      r*   test_invalid_coverage_edgesz+TestGeomMethods.test_invalid_coverage_edges  s     88899DDDEE
 
 ()):6R6R6R+S+ST
 
 	q77998DDDDDr,   c                     t          t          j        dgt          | j                  z            | j        j                  }|                     d|| j                   d S )NFis_emptyr  r  s     r*   test_is_emptyzTestGeomMethods.test_is_empty  sN    "(E7S\\#9::DGMJJj(DG<<<<<r,   c                    t          t          j        dgt          | j                  z            | j        j                  }|                     d|| j                   t          t          j        dgt          | j                  z            | j        j                  }|                     d|| j        j                   d S )NFis_ringT)r   r#   r   r   r   rW   r   exteriorr  s     r*   test_is_ringzTestGeomMethods.test_is_ring  s    "(E7S\\#9::DGMJJi47;;;"(D6CLL#89947=IIi473CDDDDDr,   c                     t          t          j        dgt          | j                  z            | j        j                  }|                     d|| j                   d S )NT	is_simpler  r  s     r*   test_is_simplezTestGeomMethods.test_is_simple  sN    "(D6CLL#89947=IIk8TW=====r,   c                     t          t          j        dgt          | j                  z            | j        j                  }|                     d|| j                   d S )NFis_ccwr  r  s     r*   test_is_ccwzTestGeomMethods.test_is_ccw  sN    "(E7S\\#9::DGMJJh$':::::r,   c                     t          t          j        ddg          | j        j                  }|                     d|| j                   d S )NF	is_closed)r   r#   r   r   rW   r   r  s     r*   test_is_closedzTestGeomMethods.test_is_closed  sC    "(E5>22DGMBBk8TW=====r,   c                 v    t          ddg| j        j                  }|                     d|| j                   d S )NFThas_z)r   r   rW   r   r  s     r*   
test_has_zzTestGeomMethods.test_has_z  s9    5$-99gx;;;;;r,   zrequires shapely 2.1)r:      r   zrequires GEOS>=3.12c                     t          j        ddg          }t          ddg          }|                     d||           d S )NPOINT M (2 3 5)zPOINT Z (1 2 3)TFhas_m)r   from_wktr   r   r  s      r*   
test_has_mzTestGeomMethods.test_has_m  sR     !!
 
 4-((gx33333r,   c                 4   ddg}ddg}ddg}t          || j        j        j                   t          || j        j        j                   t          || j        j        j                   ddt          j        g}t          || j        j        j                   d S NrK   rN   rL   rO   rM   rP   )	r+   r   r\   xyzr#   r   r   rl   
expected_x
expected_y
expected_zs       r*   test_xyz_pointszTestGeomMethods.test_xyz_points  s    )
w'
w'
 T^-D-FGGG T^-D-FGGG T^-D-FGGG w/
 T-A-J-LMMMMMr,   c                 z    t          j        g d          }ddt          j        g}t	          ||j                   d S )N)r  zPOINT M (1 2 3)zPOINT (0 0)rG   r:   )r   r  r#   r   r+   mr  s      r*   test_m_pointszTestGeomMethods.test_m_points  sJ      
 
 q"&> 13/////r,   c                 4   dddt           j        g}dddt           j        g}ddt           j        t           j        g}t          || j        j        j                   t          || j        j        j                   t          || j        j        j                   d S r  )r#   r   r+   r   r\   r  r  r  r  s       r*   test_xyz_points_emptyz%TestGeomMethods.test_xyz_points_empty  s    (BF;
w8
w7
 T-G-P-RSSS T-G-P-RSSS T-G-P-RSSSSSr,   c                    t          j        t                    5  | j        j        j        }d d d            n# 1 swxY w Y   t          j        t                    5  | j        j        j        }d d d            n# 1 swxY w Y   t          j        t                    5  | j        j        j        }d d d            d S # 1 swxY w Y   d S r"   )	r   raises
ValueErrorr   r\   r  r  r   r  )rl   rk   s     r*   test_xyz_polygonsz!TestGeomMethods.test_xyz_polygons  sk   ]:&& 	% 	%	"$A	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]:&& 	% 	%	"$A	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]:&& 	% 	%	"$A	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s0   8<<A::A>A>B==CCc                    t          g d          t          dd          t          fdt          d          D                       }t          fdt          d          D                       }t	          |j        |           d S )N))rr   rr   r^  r3   )rr   r2   r   c                     g | ]}S rh   rh   )rj   ipolygons     r*   rm   z1TestGeomMethods.test_centroid.<locals>.<listcomp>  s    888!g888r,   r:   c                     g | ]}S rh   rh   )rj   r  points     r*   rm   z1TestGeomMethods.test_centroid.<locals>.<listcomp>   s    444aE444r,   )r   r   r   r   r   centroid)rl   polygonspointsr  r  s      @@r*   test_centroidzTestGeomMethods.test_centroid  s    >>>??a8888uQxx88899444458844455x0&99999r,   c                     t          j        t          d          5  | j        j         d d d            d S # 1 swxY w Y   d S r'  )r   r   r   r   r  r   s    r*   test_centroid_crs_warnz&TestGeomMethods.test_centroid_crs_warn  s    \+-NOOO 	 	G	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r*  c                    t          g d          }t          g d          }t          dd          }t          |||g          }t          g d          }t          |||g          }t	          |                                |           d S )Nr4   r0   r3   r1   r   rT   )r   r
   r   r   r   	normalize)rl   r  
linestringr  seriespolygon2r   s          r*   test_normalizezTestGeomMethods.test_normalize  s    22233 8 8 899
aGZ78833344h
E:;;v//118<<<<<r,   zrequires Shapely>=2.1c                    t          g dg dg          }t          g d          }t          dd          }t          |||g          }t          g dg dg          }t          |||g          }t	          |                                |           t          g dg dg          }t          |||g          }t	          |                    d          |           d S )	N)r0   ru   rs   rs   rs   r   r0   )r  )r8   rA   re  rk  r  )holesr  r   )r0   r	  r  ru   r0   T)exterior_cw)r   r
   r   r   r   orient_polygons)rl   r  r  r  r  r  r   
polygon_cws           r*   test_orient_polygonsz$TestGeomMethods.test_orient_polygons  s#   888;;;<
 
 
   8 8 899
aGZ788888;;;<
 
 
 h
E:;;v5577BBB888;;;<
 
 

 j*e<==v55$5GGRRRRRr,   c                 $   t          g d          }t          g d          }t          g d          }t          |||g          }t          t          g d          t          g d          g          }t	          t          g d          t          ddg          g          }t          |||g          }|j                                        rJ |                                }t          ||           |j                                        sJ d S )	N)r0   rC   r3   r  r7   r3   r0   )rC   r5   r7   r0   rC   r  )r3   r0   rC   r3   )r7   r3   r  r7   )r7   r0   r5   r7   rC   r5   )	r   r
   r   r   r   r  all
make_validr   )	rl   polygon1r  r  r  out_polygon1out_polygon2r   r   s	            r*   test_make_validzTestGeomMethods.test_make_valid)  s0   SSSTTCCCDD 8 8 899
Hh
;<<#8889988899
 
 *55566
FFCS8T8TU
 
 lL*EFF?&&(((((""$$vx000""$$$$$$$r,   z method, keep_collapsed, expectedlineworkTr0   r3   rg  	structurer0   r3   rg  r3   r0   c                 &   t          g d          }t          |g          }t          |g          }|j                                        rJ |                    ||          }t          ||d           |j                                        sJ d S )Nr  )r   keep_collapsedTcheck_geom_type)r   r   r  r  r  r   )rl   r   r  r   r  r  r   s          r*   test_make_valid_methodz&TestGeomMethods.test_make_valid_method=  s    $ BBBCCG9%%hZ((?&&(((((""&"PPvxFFFF""$$$$$$$r,   ztest for Shapely<2.1c                     t          g d          }t          |g          }t          j        t          d          5  |                    d           ddd           dS # 1 swxY w Y   dS )z:Only the 'linework' method is supported for shapely < 2.1.r  z+Only the 'linework' method is supported forr   r  r   N)r   r   r   r  r  r  )rl   r  r  s      r*   test_make_valid_old_shapelyz+TestGeomMethods.test_make_valid_old_shapelyW  s     BBBCCG9%%]K
 
 
 	2 	2 [111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   A!!A%(A%c                     t          t          g d          t          g d          g          }t          || j                                                   d S )NrT   r?   )r   r
   r   r   reverser  s     r*   test_reversezTestGeomMethods.test_reversea  s^    33344;;;<<
 
 	x):):;;;;;r,   c                 f   t          t          d          t          d          g          }t          t          g d          t          g d          g          }| j                            d          }| j                            d          }t          ||           t          ||           d S )N)r0   rq   r   r1   r2   rq   r3   )UUUUUU?r&  )UUUUUU?r'  r0   )	r0   r$  r1   r%  r3   rq   r2   r5   r  r0   )r0   r  r5   r(  r3   )r0   r$  r1   r%  r3   r(  r5   rq   max_segment_length)r   r   r
   r   
segmentizer   r   )rl   expected_g1expected_g5	result_g1	result_g5s        r*   test_segmentize_linestringsz+TestGeomMethods.test_segmentize_linestringsj  s    	  
 
 
:  GGGHHRRR 
 
 G&&#&>>	G&&#&>>	{I666{I66666r,   c                     t          j        t          d          5  | j                            t          ddgddg                     d d d            d S # 1 swxY w Y   d S )NzAIndex of the Series passed as 'max_segment_length' does not matchr   rq   c   b   rV   r)  )r   r  r  r   r+  r   r   s    r*   test_segmentize_wrong_indexz+TestGeomMethods.test_segmentize_wrong_index  s    ]U
 
 
 	V 	V G&#sBPR82T2T2TUUU		V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   /AAAc                 &   t          t          ddg          t          g d          g          }t          t          ddg          t          g d          g          }|                    d           }t	          ||           t          t          ddd          t          d	d
g          t          g d          g          }t          t          ddd          t          ddg          t          g d          g          }|                    d d          }t	          ||           t          t          dd          t          ddg          t          g d          g          }|                    d d          }t	          ||           d S )Nr  re  r4   )rA   rc   )rU   r  )r0   rD   r   r:   c                     | ddgz  S )Nr8   r:   rh   r  s    r*   <lambda>z0TestGeomMethods.test_transform.<locals>.<lambda>  s    QF
 r,   r   r=   r@   )r   r   r   r<   )r   r2   rq   r2   r>   )rG   rG   rG   )r<   r=   )r2   r8   rC  c                     | dz   S Nr2   rh   r8  s    r*   r9  z0TestGeomMethods.test_transform.<locals>.<lambda>  s
    A r,   T	include_zrB   ro   )r3   r  rg  c                     | dz   S r<  rh   r8  s    r*   r9  z0TestGeomMethods.test_transform.<locals>.<lambda>  s
    a!e r,   F)r   r
   r   	transformr   r   )	rl   test_2dr   	result_2dtest_3dr   	result_3dexpected_3d_to_2dresult_3d_to_2ds	            r*   test_transformzTestGeomMethods.test_transform  s   ())73K3K3K+L+LM
 
  )**G4L4L4L,M,MN
 
 %%&:&:;;	{I666aAIy122;;;<<
 
  aAIy122;;;<<
 
 %%oo%FF	{I666%aFF+,,00011
 
 "++OOu+MM0/BBBBBr,   )r:   rx   r   zrequires GEOS>=3.11c                 ^    t          | j        | j                                                   d S r"   )r   r   concave_hullr   s    r*   test_concave_hullz!TestGeomMethods.test_concave_hull  s(    t|T\-F-F-H-HIIIIIr,   zexpected_series,ratio)r0   r6  r3   rB   r9   r0   re   )r0   r6  rB   r9   r0   rX   c                     t          t          |                    }t          t          g d                    }t          ||                    |                     d S )N)r0   r6  r3   r9   rB   ratio)r   r   r   r   rI  )rl   expected_seriesrM  r   r   s        r*    test_concave_hull_accepts_kwargsz0TestGeomMethods.test_concave_hull_accepts_kwargs  sY     W_5566j!I!I!IJJKKxe)D)DEEEEEr,   c           	         t          j        t          d          5  | j                            t          ddgddg                     d d d            n# 1 swxY w Y   t          j        t          d	          5  | j                            d
t          ddgddg                     d d d            d S # 1 swxY w Y   d S )Nz4Index of the Series passed as 'ratio' does not matchr   re   rX   r2  r3  rV   rL  z:Index of the Series passed as 'allow_holes' does not match皙?TF)rM  allow_holes)r   r  r  r   rI  r   r   s    r*   test_concave_hull_wrong_indexz-TestGeomMethods.test_concave_hull_wrong_index  ss   ]T
 
 
 	K 	K G  vsCjR'I'I'I JJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K
 ]N
 
 
 	 	 G  vtUmB8'L'L'L !   		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   /AAA=0B::B>B>c                     t          t          g d          g          }t          t          t          g d          g          g          }t          |                                |d           d S )Nr4   )r0   r5   r3   r0   Tr  )r   r   r   r   constrained_delaunay_triangles)rl   inputr   s      r*   #test_constrained_delaunay_trianglesz3TestGeomMethods.test_constrained_delaunay_triangles  s    7#;#;#;<<=>>)I)I)I!J!J KLLM
 
 	0022Hd	
 	
 	
 	
 	
 	
r,   c                 D    t          | j        | j        j                   d S r"   )r   r   r  r   s    r*   test_convex_hullz TestGeomMethods.test_convex_hull  s    t|T\-EFFFFFr,   c                     t          t          g d          t          g d          g          }| j                                        }t	          ||           d S )N)r5   r0   r1   r5   )r5   r1   r3   r5   )r   r   r   delaunay_trianglesr   rl   r   dlts      r*   test_delaunay_trianglesz'TestGeomMethods.test_delaunay_triangles  se    8889988899
 
 g((**x-----r,   c           
         t          t          ddg          t          ddg          t          ddg          t          ddg          t          ddg          g          }| j                            d          }t	          ||           d S )Nr5   r3   r0   r1   T
only_edges)r   r
   r   r[  r   r\  s      r*   #test_delaunay_triangles_pass_kwargsz3TestGeomMethods.test_delaunay_triangles_pass_kwargs  s    FF+,,FF+,,FF+,,FF+,,FF+,,
 
 g((D(99x-----r,   c                     t          j        g d| j        j                  }| j                                        }t          ||           d S )N)z+POLYGON ((2 2, 2 0.5, 0.5 0.5, 0.5 2, 2 2))z.POLYGON ((-1 2, 0.5 2, 0.5 0.5, -1 0.5, -1 2))z1POLYGON ((-1 -1, -1 0.5, 0.5 0.5, 0.5 -1, -1 -1))z.POLYGON ((2 -1, 0.5 -1, 0.5 0.5, 2 0.5, 2 -1))rQ   r   r  r   rR   voronoi_polygonsr   rl   r   vps      r*   test_voronoi_polygonsz%TestGeomMethods.test_voronoi_polygons  s\    %   
 
 
 W%%''x,,,,,r,   c                     t          j        g d| j        j                  }| j                            d          }t          ||d           d S )N)zLINESTRING (0.5 0.5, 0.5 2)zLINESTRING (2 0.5, 0.5 0.5)zLINESTRING (0.5 0.5, -1 0.5)zLINESTRING (0.5 0.5, 0.5 -1)rQ   Tr`  check_less_preciserd  rf  s      r*    test_voronoi_polygons_only_edgesz0TestGeomMethods.test_voronoi_polygons_only_edges  sf    %   
 
 
 W%%%66xEEEEEEr,   c                     t          j        g d| j        j                  }| j                            t          dddd                    }t          ||           d S )N)z+POLYGON ((3 3, 3 0.5, 0.5 0.5, 0.5 3, 3 3))z.POLYGON ((-2 3, 0.5 3, 0.5 0.5, -2 0.5, -2 3))z1POLYGON ((-2 -1, -2 0.5, 0.5 0.5, 0.5 -1, -2 -1))z.POLYGON ((3 -1, 0.5 -1, 0.5 0.5, 3 0.5, 3 -1))rQ   r   r:   )	extend_to)r   r  r   rR   re  r   r   rf  s      r*   test_voronoi_polygons_extend_toz/TestGeomMethods.test_voronoi_polygons_extend_to!  so    %   
 
 
 W%%B1a0@0@%AAx,,,,,r,   c                     t          d | j        D                       }t          || j        j                  D ]\  }}|                    |          sJ d S )Nc                 6    g | ]}t          |j                  S rh   )r	   r   )rj   ps     r*   rm   z1TestGeomMethods.test_exterior.<locals>.<listcomp>/  s"    !J!J!JQ*QZ"8"8!J!J!Jr,   )r   r   zipr  r   )rl   exp_exteriorr   computeds       r*   test_exteriorzTestGeomMethods.test_exterior.  sh     !J!J$'!J!J!JKK"%lDG4D"E"E 	- 	-Hh??8,,,,,,	- 	-r,   c                 j   t          | j        | j        g          }g }|j        d         |k    sJ t	          | j        j                  }|j        d         d                             |          sJ t          | j        | j        g          }|j        d         g k    sJ |j        d         g k    sJ d S )Nr   r2   )	r   rz   r   	interiorsr	   r   r   r   ri   )rl   originalr   no_interiorss       r*   test_interiorszTestGeomMethods.test_interiors3  s    dgt':;<< !!$0000dm455!!$Q'..x88888 $'47!344%a(B....%a(B......r,   c                 2   t          t          dd          t          dd          g          }|                     d|| j        dd           t          t          dd          t          dd          g          }|                     d|| j        d           d S )Nrq   rX   rF   interpolateT
normalizedrC  )r   r   r   r   r  s     r*   test_interpolatez TestGeomMethods.test_interpolateA  s    eCoouT3/?/?@AA%%8TWdt 	& 	
 	
 	
 eCoouS#?@@%%mXtwLLLLLr,   c           	         t          t          dd          t          dd          g          }|                     d|| j        t	          j        ddg                     t          t          dd          t          dd          g          }|                     d|| j        t	          j        ddg          d           d S )	Nre   rF   rX   rq   r~  rC  Tr  )r   r   r   r   r#   r   r  s     r*   test_interpolate_distance_arrayz/TestGeomMethods.test_interpolate_distance_arrayJ  s    eC..c3@AA%%8TWbhc{.C.C	
 	
 	
 eCoouS#?@@%%8TWbhc{.C.CPT 	& 	
 	
 	
 	
 	
r,   c                     t          j        g d          }t          j        t                    5  | j                            |           d d d            d S # 1 swxY w Y   d S Nr2   r8   r:   )r#   r   r   r  r  r   r~  rl   	distancess     r*   &test_interpolate_distance_wrong_lengthz6TestGeomMethods.test_interpolate_distance_wrong_lengthU  s    HYYY''	]:&& 	+ 	+G	***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AAAc                     t          ddgddg          }t          j        t          d          5  | j                            |           d d d            d S # 1 swxY w Y   d S )Nr2   r8   r2  r3  rV   7Index of the Series passed as 'distance' does not matchr   )r   r   r  r  r   r~  r  s     r*   %test_interpolate_distance_wrong_indexz5TestGeomMethods.test_interpolate_distance_wrong_indexZ  s    Aq6"b222	]W
 
 
 	+ 	+ G	***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AA Ac                     | j                                         }d|_        t          j        t
          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )NrS   r(  r   r2   )r   r   rR   r   r   r   r~  )rl   g5_crss     r*   test_interpolate_crs_warningz,TestGeomMethods.test_interpolate_crs_warninga  s    
\+-NOOO 	" 	"q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AA#&A#c                    t          ddg| j        j                  }t          dd          }|                     d|| j        |           t          ddg| j        j                  }|                     d|| j        |d           t          t          d	d	          t          dd          gd
d	g          }t          t          j        dt          j        g          }t          | j        	                    |d          |           t          ddg| j        j                  }t          | j        	                    |d          |           d S )NrY   rC  rV   rX   rq   projectTr  r8   r2   r   F)
r   r   rW   r   r   r   r#   r   r    r  )rl   r   rs  r   s       r*   test_projectzTestGeomMethods.test_projecth  s'   3*DGM:::#sOOy(DGQ???3*DGM:::y(DGQ4PPPuQ{{E#sOO4QFCCC263/00DGOOATO::HEEE3*DGM:::DGOOAUO;;XFFFFFr,   c                 p    g d}| j         }| j                            |          }t          ||           d S )N)r   r2   r2   r   r   r   )r   r   affine_transformr   )rl   matrixr   r  s       r*   test_affine_transformz%TestGeomMethods.test_affine_transformw  s?    ###7g&&v..x-----r,   c                 Z   | j         j        | j        j        z
  | j         j        | j        j        z
  f} | j        j        | d                             | j                   sJ  | j                            | j                  j        | d         }|                    | j                   sJ d S )Nr   )	r   r  r   r  r   	translater   r   r   )rl   transr  s      r*   test_translate_tuplez$TestGeomMethods.test_translate_tuple  s    
TXZ'dhj)@@'t~'/299$(CCCCC>di$$T^44>FqIzz$(#######r,   c                    d}| j         }t          dd          }| j                             ||                              | |          }t          | j         |          sJ | j                            | j                                       |t          dd                    }t          ||                    | |                    sJ d S )Nr3  r   )origin)r   r   rotater   r   r   )rl   angler   or  s        r*   test_rotatezTestGeomMethods.test_rotate  s    7!QKKgnnU1n--44eVA4FF!$'3/////i$$TW--44U5A;;4OO!(CJJvaJ,H,HIIIIIIIr,   c                 Z   | j         }d}t          d |D                       }t          dd          }  | j         j        |d|ij        |d|i}t	          ||          sJ  | j                            | j                   j        |d|i} |j        |d|i}t	          ||          sJ d S )N)rY   rX   c              3       K   | ]	}d |z  V  
dS )rX   Nrh   )rj   r  s     r*   	<genexpr>z-TestGeomMethods.test_scale.<locals>.<genexpr>  s&      ++C!G++++++r,   r   r  )r   tupler   scaler   r   r   )rl   r   r  invr  r  s         r*   
test_scalezTestGeomMethods.test_scale  s    7++U+++++!QKK3mdgmU-1--3SCCC!(C000003di$$TW--3UE1EEci'Q''!(C0000000r,   c                    | j         }d}t          dd          }| j                             ||                              | |          }t          ||          sJ | j                            | j                                       ||          }|                    | |          }t          ||          sJ | j                             ||                              | |          }t          ||          sJ | j                            | j                                       ||          }|                    | |          }t          ||          sJ d S )Ng     F@r   )xsr  )ysr  )r   r   skewr   r   r   )rl   r   r  r  r  s        r*   	test_skewzTestGeomMethods.test_skew  sW   7!QKK glld1l--22teA2FF!(C00000i$$TW--22d12EEhh4%h**!(C00000 glld1l--22teA2FF!(C00000i$$TW--22d12EEhh4%h**!(C0000000r,   c                     t          t          dd          g          }t          t          d          g          }|                    dd          }t	          ||          sJ d S )Nr   )rd  )r   )r  r   rc  rd  rG   r2   
resolution)r   r   r   bufferr   rl   rz  r   
calculateds       r*   test_bufferzTestGeomMethods.test_buffer  sc    eAqkk]++g&PQQRSS__Q1_55
!(J7777777r,   c                     dddd} | j         j        di |}t          | j         |          D ]0\  }}||J  |j        di |}|                    |          sJ 1d S )Nr:   r8   g      @)	cap_style
join_stylemitre_limitrs   )rs   )r   r  rt  r   )rl   r(   calculated_seriesrz  r  r   s         r*   test_buffer_argsz TestGeomMethods.test_buffer_args  s    aDD*DGN6666$'1B$C$C 	3 	3 Hj!))))*8?6666!((222222	3 	3r,   c                    t          | j        | j        g          }t          t          d          t          d          g          }|                    t	          j        ddg          d          }t          ||d           d S N)rc   rG   )rG   rA   )rA   rG   )rG   rc   r  )rs   rG   rd  rc  rv   r  r2   rG   r  Trj  )r   r   r   r  r#   r   r   r  s       r*   test_buffer_distance_arrayz*TestGeomMethods.test_buffer_distance_array  s    dgtw/00@AACDD
 
 __RXq!f%5%5!_DD
z8MMMMMMr,   c                     t          | j        | j        g          }t          j        g d          }t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S r  )r   r   r#   r   r   r  r  r  rl   rz  r  s      r*   !test_buffer_distance_wrong_lengthz1TestGeomMethods.test_buffer_distance_wrong_length  s    dgtw/00HYYY''	]:&& 	' 	'OOI&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A..A25A2c                    t          | j        | j        g          }t          t          d          t          d          g          }|                    t	          ddg          d          }t          ||d           d S r  )r   r   r   r  r   r   r  s       r*   test_buffer_distance_seriesz+TestGeomMethods.test_buffer_distance_series  s    dgtw/00@AACDD
 
 __VQF^^_BB
z8MMMMMMr,   c                     t          | j        | j        gddg          }t          ddgddg          }t          j        t
          d	          5  |                    |           d d d            d S # 1 swxY w Y   d S )
Nr   r2   rV   r8   r2  r3  )datarW   r  r   )r   r   r   r   r  r  r  r  s      r*    test_buffer_distance_wrong_indexz0TestGeomMethods.test_buffer_distance_wrong_index  s    dgtw/1v>>>Ar2h777	]W
 
 
 	' 	' OOI&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A33A7:A7c                     t          g d          }t          |t                      d g          }|                    d          }t	          ||           |                    t          j        g d                    }t	          ||           d S )N)r0   r5   r3   r1   r   r:  )r   r   r   r  r   r#   r   )rl   rs  r   r   s       r*   test_buffer_empty_nonez&TestGeomMethods.test_buffer_empty_none  s    44455q,..566!vq)))"(999--..vq)))))r,   c                 h   t          j        t          d          5  | j                            d           d d d            n# 1 swxY w Y   t          j        d          5 }| j                            d           d d d            n# 1 swxY w Y   |D ]}dt          |j                  vsJ d S )Nr(  r   r2   Tr   r   z Geometry is in a geographic CRS.)	r   r   r   r   r  r   r   strmessage)rl   r   rs      r*   test_buffer_crs_warnz$TestGeomMethods.test_buffer_crs_warn  s8   \+-NOOO 	 	GNN1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $D111 	VGNN1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	L 	LA5S^^KKKKK	L 	Ls#   AA
A#B

BBc                     t          t          j        g d          g          }t          t          j        ddg          g          }t          |                    d          |           d S )N)r0   )r2   rQ  r7   r0   r7   g?)r   r:  r
   r   simplify)rl   r   es      r*   test_simplifyzTestGeomMethods.test_simplify  sd    w)*D*D*DEEFGGw)66*:;;<==qzz#22222r,   c                     t          j        t          d          5  | j                            t          dgdg                     d d d            d S # 1 swxY w Y   d S )N8Index of the Series passed as 'tolerance' does not matchr   rQ  r2  rV   )r   r  r  r   r  r   r   s    r*   test_simplify_wrong_indexz)TestGeomMethods.test_simplify_wrong_index  s    ]X
 
 
 	8 	8 GVSE"666777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   ,AAAc                 4   t          t          j        g d          t          j        g d          g          }t          t          j        g d          t          j        g d          g          }t          |                    d          |                                           t          t          j        g d          t          j        g d          g          }t          |                    dd          |                                           d S )	N)r0   rs   r2      r   r  rs   r  ru   r0   )ru   r  r  r  r  r   r  ru   )r0   r  r  ru   )ru   r  r  r  rU   )r0   r  r  r  ru   F)simplify_boundary)r   r:  r   r   simplify_coverager  )rl   r   r  
e_boundarys       r*   test_simplify_coveragez&TestGeomMethods.test_simplify_coverage	  s.    RRR  LLL 		
 	
  D D DEE F F FGG
 
 	q22155q{{}}EEE M M MNN F F FGG
 

 	U;;Z=Q=Q=S=S	
 	
 	
 	
 	
r,   c                     | j         j        }t          j        |                    | j                            sJ t          |t                    sJ | j         j        |j        k    sJ d S r"   )	r   enveloper#   r  r   ri   r   r   rR   )rl   r  s     r*   test_envelopezTestGeomMethods.test_envelope)  sc    GvammDG,,-----!Y'''''w{ae######r,   c                 b   t          | j        | j        gd          }|                                }t          j        ddgd          }t          j        |                                                    |d                    sJ t          |t                     sJ |j
        |j
        k    sJ d S )Ni  rQ   z#POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))z#POLYGON ((2 0, 2 3, 3 3, 3 0, 2 0))MbP?)r   ri   r   minimum_rotated_rectangler  r#   r  r  geom_equals_exactr   rR   )rl   r   r  r  s       r*   test_minimum_rotated_rectanglez.TestGeomMethods.test_minimum_rotated_rectangle/  s    tw(d333'')) 55 
 
 
 vakkmm55c5AABBBBB!Y'''''u~~~~~~r,   c                     t          | j        g                                          }t          t          ddg          g          }t	          ||           d S )Nr7   r9   )r   r   extract_unique_pointsr   r    )rl   eupr   s      r*   test_extract_unique_pointsz*TestGeomMethods.test_extract_unique_points>  sR    	""88::j&&)9::;<<C*****r,   c                 |   | j                                         }t          t          dd          gdz            }t	          j        |j                            |d                    sJ t          |j	        t          ddg                     t          |t                    sJ | j         j        |j        k    sJ d S )Nrq   r8   r  g1?)r   minimum_bounding_circler   r   r#   r  r  r  r    r$  r   r   rR   )rl   mbccenterss      r*   test_minimum_bounding_circlez,TestGeomMethods.test_minimum_bounding_circleC  s    g--//U3__-122vcl44WeDDEEEEEHHh'((	
 	
 	
 #y)))))w{cg%%%%%%r,   c                    t          t          g d          t          g d          g          }|                                }|j        dk                                    sJ t          j        |          dk                                    sJ t          t          dd          t          dd          g          }t          ddg          }t          t          j
        |d	          |d
           t          t          j        |          |           |                    t          j        d	dg                    }t          j        |          dk                                    sJ d S )Nr?   )r0   rp   r1   r3   )g      rq   r
   r8   rq   g     ?g     ?g     ?r   Trj  rs   r  )r   r   maximum_inscribed_circle	geom_typer  r:  get_num_pointsr   r   r   	get_pointr    rS  r#   r   )rl   gsmicexpected_centersexpected_lengthmic_tolerances         r*   test_maximum_inscribed_circlez-TestGeomMethods.test_maximum_inscribed_circleN  sf   88899HHHII
 
 ))++-2244444&s++q05577777$eCoou[+7V7V%WXX #{!344c1%%'7D	
 	
 	
 	
 	GN3//AAA 33bh2w>O>O3PP}--499;;;;;;;r,   c                    | j         j        | j         j        | j        j        | j        j        f}t	          | j        j        t          j                  sJ t          | j        j                  |k    sJ t          | j        t          t          | j                            d          }t          |j                  |k    sJ d S )N)r\   r^   )r   r  r  r   r   r   total_boundsr#   ndarrayr  r   r   r   )rl   bboxdfs      r*   test_total_boundsz!TestGeomMethods.test_total_boundse  s    xz48:txz48:=$.5rzBBBBBT^011T9999s4>7J7J1K1KLL
 
 R_%%------r,   c           
         t          t          ddg          t          g d          gd          }d|j        _        dd g}g d}t          t	          dd          t	          d	d	          t	          d
d
          t	          dd          t	          dd          gt          j        ||          d          }t          ||                    d                     d S )Nr0   r3   )r  rB   re  rS   rQ   test_index_name)r0   r5   r1   r3   rg  r   r2   r8   r:   rA   namesr   Tindex_parts)	r   r   rW   namer   r   from_tuplesr   explode)rl   r   expected_index_namerW   r   s        r*   test_explode_geoseriesz&TestGeomMethods.test_explode_geoserieso  s    ()):6N6N6N+O+OP
 
 
 )0$78881a[[%1++uQ{{E!QKKq!M(6IJJJ
 
 

 	xt)D)DEEEEEr,   
index_nameNtestc           	      0   t          t          t          dd          t          dd          g          t          dd          g          }t          ddg|d          }||j        _        |                    d          }t          t          dd          t          dd          t          dd          g          }t          g d|d          }t          d	dgd	dggg d
g dg|d g          }|                    |          }t          ||           d S )Nr2   r8   r:   rG   )colr\   Tr  r2   r2   r8   r   r   r   r2   r   r2   r   r  
r   r   r   r   rW   r
  r  r   	set_indexr   rl   r  r   r  test_df
expected_sexpected_dfexpected_indexs           r*   test_explode_geodataframez)TestGeomMethods.test_explode_geodataframe~  s   z5A;;a"<==uQ{{KLL1a&a8899"***..aU1a[[%1++FGG
"999*#M#MNN#VaVYY			"t$
 
 

 "++N;;7K00000r,   c           	      0   t          t          t          dd          t          dd          g          t          dd          g          }t          ddg|d          }||j        _        |                    d          }t          t          dd          t          dd          t          dd          g          }t          g d|d          }t          d	dgd	dggg d
g dg|d g          }|                    |          }t          ||           d S )Nr2   r8   r:   rG   level_1r\   Tr  r  r   r  r  r  r  r  s           r*   !test_explode_geodataframe_level_1z1TestGeomMethods.test_explode_geodataframe_level_1  s    z5A;;a"<==uQ{{KLLq!f!<<=="***..aU1a[[%1++FGG
"yyyj#Q#QRR#VaVYY			"t$
 
 

 "++N;;7K00000r,   c           	         t          t          t          dd          t          dd          g          t          dd          g          }t          ddg|d          }||j        _        |                    d          }t          t          dd          t          dd          t          dd          g          }t          g d|d          }t          g d	|
          }|                    |          }t          ||           d S )Nr2   r8   r:   rG   r  Fr  r  r  )r
  )
r   r   r   r   rW   r
  r  r   r  r   r  s           r*   'test_explode_geodataframe_no_multiindexz7TestGeomMethods.test_explode_geodataframe_no_multiindex  s     z5A;;a"<==uQ{{KLLq!f!<<=="***//aU1a[[%1++FGG
"yyyj#Q#QRRyyyz:::!++N;;7K00000r,   c           
         ddgddggt          ddg          t          ddg          gd	}t          |d
          }t          g dt          ddg          t          ddg          t          ddg          t          ddg          gd	g dd
          }|                    d          }t          ||           |                    d          }t          ||           d S )Nname1name2name3name4rg  r:   rA   rh  r0   r^   r\   rS   rQ   r%  r&  r'  r(  )r   r   r2   r2   r   r^   )columnr   r   r  r   rl   dr   r  exploded_dfs        r*   test_explode_pandas_fallbackz,TestGeomMethods.test_explode_pandas_fallback  s   w''7);<#VV$455z66BR7S7ST
 
 1$'''"<<</00/00/00/00	  ,,
 
 
 kk&))!+{;;; kkk00!+{;;;;;r,   c           
         ddgddggt          ddg          t          ddg          gd	}t          |d
          }t          g dt          ddg          t          ddg          t          ddg          t          ddg          gd	d
          }|                    dd          }t          ||           |                    dd          }t          ||           d S )Nr%  r&  r'  r(  rg  r)  rh  r0   r*  rS   rQ   r+  r^   Tignore_index)r,  r4  r-  r.  s        r*   )test_explode_pandas_fallback_ignore_indexz9TestGeomMethods.test_explode_pandas_fallback_ignore_index  s   w''7);<#VV$455z66BR7S7ST
 
 1$'''"<<</00/00/00/00	  
 
 
 kk&tk<<!+{;;; kkdkCC!+{;;;;;r,   outer_index)r2   rg  1c                 T   t          j        gg dgd          }t          dg did t          d          D             |          }|                    d	          }t          t          d
d
          t          d
d
          t          dd          t          dd
          t          dd          t          dd
          g          }t          g d|d          }t          j        fddD             g d          }|                    |          }t          ||           d S )Nr  firstsecondr  valsc                 8    g | ]}t          ||f|d fg          S r   r   rj   r  s     r*   rm   zCTestGeomMethods.test_explode_pandas_multi_index.<locals>.<listcomp>  -    EEEqj1a&1a&!122EEEr,   r:   r\   rW   Tr  r   r2   r8   r2   r2   r8   r8   r:   r:   r<  r\   c                     g | ]}g|R 	S rh   rh   )rj   pairr6  s     r*   rm   zCTestGeomMethods.test_explode_pandas_multi_index.<locals>.<listcomp>  s4        $t$$  r,   )r1   r3   r7   rh  r9   r;   )r:  r;  N
r   from_arraysr   r   r  r   r   r  r  r   rl   r6  rW   r  r  r  r  r  s    `      r*   test_explode_pandas_multi_indexz/TestGeomMethods.test_explode_pandas_multi_index  sh   &;4iii@%
 
 
 YYYEEE!HHEEE
 
 
 ***..aaaaaa	
 	

 #,>,>,>J#W#WXX#/   L   ,++
 
 
 "++N;;7K00000r,   c                 ^   t          j        |||gg dgd          }t          dg did t          d          D             |          }|                    d	          }t          t          d
d
          t          d
d
          t          dd          t          dd
          t          dd          t          dd
          g          }t          g d|d          }t          j        |df|df|df|df|df|dfgddg          }|                    |          }t          ||           d S )Nr  r9  r  r<  c                 8    g | ]}t          ||f|d fg          S r>  r?  r@  s     r*   rm   zITestGeomMethods.test_explode_pandas_multi_index_false.<locals>.<listcomp>  rA  r,   r:   rB  Fr  r   r2   r8   rC  rD  r:  r;  rG  rI  s           r*   %test_explode_pandas_multi_index_falsez5TestGeomMethods.test_explode_pandas_multi_index_false  su   &;4iii@%
 
 
 YYYEEE!HHEEE
 
 
 ***//aaaaaa	
 	

 #,>,>,>J#W#WXX#/a a a a a a  H%

 

 

 "++N;;7K00000r,   c                    t          j        |||gg dgd          }t          dg did t          d          D             |          }|                    d	          }t          t          d
d
          t          d
d
          t          dd          t          dd
          t          dd          t          dd
          g          }t          g d|d          }t          t          t          |                              }|	                    |          }t          ||           |                    dd          }t          ||           d S )Nr  r9  r  r<  c                 8    g | ]}t          ||f|d fg          S r>  r?  r@  s     r*   rm   zPTestGeomMethods.test_explode_pandas_multi_index_ignore_index.<locals>.<listcomp><  rA  r,   r:   rB  Tr3  r   r2   r8   rC  rD  )r4  r	  )r   rH  r   r   r  r   r   r   r   r  r   rI  s           r*   ,test_explode_pandas_multi_index_ignore_indexz<TestGeomMethods.test_explode_pandas_multi_index_ignore_index4  sa   &;4iii@%
 
 
 YYYEEE!HHEEE
 
 
 **$*//aaaaaa	
 	

 #,>,>,>J#W#WXXuS%5%56677!++N;;7K000 **$D*AA7K00000r,   c                    t          dg did t          d          D             g d          }|                    d          }t          j        g d	g d
g          }t          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          g|          }t          dg di||          }t          ||           d S )Nr<  r  c                 8    g | ]}t          ||f|d fg          S r>  r?  r@  s     r*   rm   z6TestGeomMethods.test_explode_order.<locals>.<listcomp>X  rA  r,   r:   r8   	   ry   rB  Tr  )r8   r8   rT  rT  ry   ry   r   r2   r   r2   r   r2   r   r2   r8   rV   rC  r   r   r  r   rH  r   r   r   rl   r  r  r  expected_geometryr  s         r*   test_explode_orderz"TestGeomMethods.test_explode_orderU  s"   YYYEEE!HHEEE))
 
 

 ***..#/!3!3!34
 
 &aaaaaa !

 

 

 #'''(& 
 
 

 	"';77777r,   c                 >   t          dg did t          d          D             g d          }|                    d          }t          j        g dg d	g          }t          dg did
 t          d          D             |          }t          ||           d S )Nr<  r  c                 .    g | ]}t          d |          S r>  r   r@  s     r*   rm   z?TestGeomMethods.test_explode_order_no_multi.<locals>.<listcomp>u       444aeAqkk444r,   r:   rS  rB  Tr  r:  c                 .    g | ]}t          d |          S r>  r\  r@  s     r*   rm   z?TestGeomMethods.test_explode_order_no_multi.<locals>.<listcomp>  r]  r,   )r   r   r  r   rH  r   )rl   r  r  r  r  s        r*   test_explode_order_no_multiz+TestGeomMethods.test_explode_order_no_multir  s    YYY44588444))
 
 

 ***..#/YY			"
 
 #YYY44588444 
 
 

 	"';77777r,   c           
         t          dg did t          d          D             t          dd          gz   g d          }|                    d	
          }t	          j        g dg dg          }t          t          dd          t          dd          t          dd          t          dd          t          dd          g|          }t          dg di||          }t          ||           d S )Nr<  r  c                 8    g | ]}t          ||f|d fg          S r>  r?  r@  s     r*   rm   z<TestGeomMethods.test_explode_order_mixed.<locals>.<listcomp>  rA  r,   r8   r   rs   rS  rB  Tr  )r8   r8   rT  rT  ry   )r   r2   r   r2   r   r2   rV   )r2   r2   r8   r8   r:   )r   r   r   r  r   rH  r   r   rW  s         r*   test_explode_order_mixedz(TestGeomMethods.test_explode_order_mixed  s   YYYEEE!HHEEEqRTV))
 
 

 ***..#/__ooo.
 
 &aaaaa !	
 	
 	
 #___%& 
 
 

 	"';77777r,   c                    t          dg did t          d          D             g d          }|                    d          }t          j        g d	g d
g          }t          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          g|          }t          dg di||          }t          ||           d S )Nr<  r  c                 8    g | ]}t          ||f|d fg          S r>  r?  r@  s     r*   rm   zATestGeomMethods.test_explode_duplicated_index.<locals>.<listcomp>  rA  r,   r:   r  rB  Tr  )r2   r2   r2   r2   r8   r8   rU  r   r2   r8   rV   rC  rV  rW  s         r*   test_explode_duplicated_indexz-TestGeomMethods.test_explode_duplicated_index  s"   YYYEEE!HHEEE))
 
 

 ***..#/!3!3!34
 
 &aaaaaa !

 

 

 #'''(& 
 
 

 	"';77777r,   geom_colgeomr\   c           	      F   t          t          t          dd          t          dd          g          t          dd          g          }t          dddg||i|          }|                    d          }|j        j        |k    sJ |j        j        |j        k    sJ d S )	Nr2   r8   r:   rG   r  r\   Tr  )r   r   r   r   r  r\   r
  _geometry_column_name)rl   rf  r   r  r  s        r*   test_explode_geometry_namez*TestGeomMethods.test_explode_geometry_name  s    z5A;;a"<==uQ{{KLL51a&(A6JJJ***..$0000$(EEEEEEEr,   c           	      \   t          t          t          dd          t          dd          g          t          dd          g          }t          ddg||dd          }|                    d	          }|j        j        dk    sJ |j        j        |j        k    sJ d
|j        v sJ d S )Nr2   r8   r:   rG   )r  rg  r\   rg  ri  Tr  r\   )	r   r   r   r   r  r\   r
  rj  r1  )rl   r   r  r  s       r*   $test_explode_geometry_name_two_geomsz4TestGeomMethods.test_explode_geometry_name_two_geoms  s    z5A;;a"<==uQ{{KLL1a&!CCfUUU***..$....$(EEEEEW_,,,,,,r,   c                     t          | j        ddgg d          }t          | j                                        |           d S )Nr  r  r   r2   r:   r:   r:   r:   rA   rA   rA   rA   rc   rc   rc   r  r1  rW   r   r   r   r   get_coordinatesr  s     r*   test_get_coordinatesz$TestGeomMethods.test_get_coordinates  sR    !#J999
 
 

 	483355x@@@@@r,   c                     t          | j        g dg d          }t          | j                            d          |           d S )Nr  r  r  ro  rp  Tr=  )r   r   r   r   rr  r  s     r*   test_get_coordinates_zz&TestGeomMethods.test_get_coordinates_z  sW    !#OO999
 
 

 	4833d3CCXNNNNNr,   c                 <   t          j        ddg          }t          t          j        g dg dg          g d          }t          |                    d          |           t          t          j        d	d
t          j        gg dg          g d          }t          |                    d          |           t          t          j        d	d
t          j        dgg dg          g d          }t          |                    dd          |           d S )Nr  zPOINT ZM (1 2 3 4))rY   rf   rd   )rX   rY         @)r  r  r  r  r1  T)	include_mrY   rf   )rX   rY   rf   ru  r=  rd   )rX   rY   rf   rx  )r  r  r  r  )r>  rz  )r   r  r   r#   r   r   rr  r   r  s      r*   test_get_coordinates_mz&TestGeomMethods.test_get_coordinates_m  sF   !$
 
 ???OOO<==#OO
 
 
 	1,,t,<<hGGG Cbf-?@@#OO
 
 
 	1,,t,<<hGGG Cbfc24H4H4HIJJ(((
 
 
 	1,,tt,LLhWWWWWr,   c                     t          | j        ddg          }t          | j                            d          |           d S )Nr  r  ry  Tr3  rq  r  s     r*   test_get_coordinates_ignorez+TestGeomMethods.test_get_coordinates_ignore  sN    !#J
 
 
 	48333FFQQQQQr,   c                     t          | j        ddgt          j        g d                    }t	          | j                            d          |           d S )Nr  r  )r0   r1   r9   r;   ri  rB   )rA   r   rf  rk  rj  )rc   r   )rc   r2   )rc   r8   rp  Tr  )r   r   r   r  r   r   rr  r  s     r*   test_get_coordinates_partsz*TestGeomMethods.test_get_coordinates_parts  sm    !#J(   
 
 
* 	48333EExPPPPPr,   c                     | j                                         }t          |t          ddg                     | j                                        }t          |t          ddg                     d S )NgÜ?)r   minimum_bounding_radiusr    r   r   )rl   	mbr_geoms	mbr_liness      r*   test_minimum_bounding_radiusz,TestGeomMethods.test_minimum_bounding_radius  s~    G3355	Hh'((	
 	
 	

 G3355	Hh'((	
 	
 	
 	
 	
r,   c                     | j                                         }t          |t          ddg                     | j                                        }t          |t          ddg                     d S )Ng۞?rX   )r   minimum_clearancer    r   r   )rl   mc_geomsmc_liness      r*   test_minimum_clearancez&TestGeomMethods.test_minimum_clearance*  s}    7,,..Hh'((	
 	
 	

 7,,..C:	
 	
 	
 	
 	
r,   c                     | j                                         }t          t          ddg          t          ddg          g          }t	          ||           d S )Nr1   r  r0   )r   minimum_clearance_liner   r
   r   )rl   	mcl_geomsr   s      r*   test_minimum_clearance_linez+TestGeomMethods.test_minimum_clearance_line9  s^    G2244	,--z66:J/K/KL
 
 	y(33333r,   size)rs   r  r  c                    | j         | j        | j        | j        fD ]}|                    |          }t          |j        |j                   t          |                    d                    t          ||j	        |
                                z                      |z  k    sJ t          j        t          d          5  |                    |d          }d d d            d S # 1 swxY w Y   d S )NTr3  z The 'seed' keyword is deprecatedr   r2   )seed)r   r   r   r   sample_pointsr   rW   r   r  r  isnar   r   FutureWarning)rl   r  r  outputrk   s        r*   test_sample_pointsz"TestGeomMethods.test_sample_pointsB  s?    GGGL	
 	 	B %%d++Frx666FNNN5566rBK"''))34566=> > > > > \-/QRRR 	/ 	/  A ..A	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   C''C+.C+c                     t          | j        | j        g                              g d          }t          g dg ddd          }t	          t          j        |          |           d S )N)rs      r     )r   r2   r   r2   sampled_pointsint32)rW   r
  r%   )r   r   r  r   r    r:  get_num_geometries)rl   r  r   s      r*   test_sample_points_arrayz(TestGeomMethods.test_sample_points_arrayS  sx    $'*++99:J:J:JKKLLL7Gw
 
 
 	G6v>>IIIIIr,   c                    t          j        d           | j        | j        | j        fD ]x}|                    |d          }t          |j        |j                   t          |	                    d                    t          ||j
                            |z  k    sJ yt          j        t          d          5  |                    dd	           d d d            d S # 1 swxY w Y   d S )
N	pointpatscluster_poissonr   Tr3  zpointpats.random module has nor   rs   nonexistent)r   importorskipr   r   r   r  r   rW   r   r  r  r  AttributeError)rl   r  r  r  s       r*   test_sample_points_pointpatsz,TestGeomMethods.test_sample_points_pointpatsZ  s8   K(((GGG
 		 		B
 %%d3D%EEFrx666FNNN5566#b"+>N:O:ORV:VVVVVV ]>1QRRR 	7 	7R666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   =C""C&)C&c                     t          | j        g                              dd          }t          t          ddgddgddgg          g          }t	          ||           t          |t                     sJ d S )Nr2   mitre)r  rr   r   r8   )r   r   offset_curver
   r   r   )rl   ocr   s      r*   test_offset_curvez!TestGeomMethods.test_offset_curvek  s}    y!!..qW.EEj2q'B7QF)CDDEFFx,,,"i(((((((r,   c                     t          j        t          d          5  t          | j        g                              t          dgdg                     d d d            d S # 1 swxY w Y   d S )Nr  r   r2   r2  rV   )r   r  r  r   r   r  r   r   s    r*   test_offset_curve_wrong_indexz-TestGeomMethods.test_offset_curve_wrong_indexq  s    ]W
 
 
 	G 	G twi  --faS.E.E.EFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G   :A##A'*A'c           	          t          j        g ddd          }| j                                        }t	          ||           t          | j        j        t          t          dd                               d S )Nz$POLYGON ((0 0, 0.5 0.5, 0.5 0, 0 0))z-POLYGON ((0.5 0.5, 0 0, 0 1, 0.5 1, 0.5 0.5))z-POLYGON ((0.5 0.5, 1 1, 1 0, 0.5 0, 0.5 0.5))z$POLYGON ((1 1, 0.5 0.5, 0.5 1, 1 1))r  rS   r
  rR   r8   rs   	r   r  r   
polygonizer   r   rW   r   r   rl   r   r   s      r*   test_polygonizezTestGeomMethods.test_polygonizew  s    %   	
 	
 	
 &&((x0004:+U5B<<-@-@AAAAAr,   c           	          t          j        ddgdd          }| j                            d          }t	          ||           t          | j        j        t          t          dd	                               d S )
NzPOLYGON ((0 0, 1 1, 1 0, 0 0))zPOLYGON ((1 1, 0 0, 0 1, 1 1))r  rS   r  Fnoder8   rs   r  r  s      r*   test_polygonize_no_nodez'TestGeomMethods.test_polygonize_no_node  s}    %-/OP
 
 

 &&E&22x0004:+U5B<<-@-@AAAAAr,   c           	         t          j        g ddd          }t          g dd          }t          j        g ddd          }t          g dd          }| j                            d	
          }t	          ||d                    t	          ||d                    t	          ||d                    t	          ||d                    t          | j        j        t          t          dd                               d S )Nr  r  rS   r  z	cut edges)zLINESTRING (5 5, 6 6)zLINESTRING (0.5 1, 0.5 2)zLINESTRING (0.5 -1, 0.5 0)dangleszinvalid ring linesT)fullr   r2   r8   r:   rs   r  )rl   expected_polyexpected_cutsexpected_danglesexpected_invalidr   s         r*   test_polygonize_fullz$TestGeomMethods.test_polygonize_full  s"   !*   	
 	
 	
 "";DAAA$-  
 
 
 
 %R.BMMM&&D&11}fQi888}fQi888/;;;/;;;4:+U5B<<-@-@AAAAAr,   zgeom,expected)r0   rg  rg  r2   r:   r0   )r0   rg  r  r0   )r0   r0   r1   r3   r1   r0   )r0   r1   r3   r1   r0   c                 N    t          ||                    d                     d S )Nre   r  )r   remove_repeated_points)rl   rg  r   s      r*   test_remove_repeated_pointsz+TestGeomMethods.test_remove_repeated_points  s+     	x)D)Ds)D)S)STTTTTr,   c                     t          j        t          d          5  t          | j        g                              t          dgdg                     d d d            d S # 1 swxY w Y   d S )Nr  r   r2   r2  rV   )r   r  r  r   r   r  r   r   s    r*   'test_remove_repeated_points_wrong_indexz7TestGeomMethods.test_remove_repeated_points_wrong_index  s    ]X
 
 
 	Q 	Q twi  77s2$8O8O8OPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qr  c                     t          t          dd          t          dd          | j        | j        gd          }t	          || j                                                   d S )NrK   rL   rN   rO   rS   rQ   )r   r   r   r   r   r   force_2dr  s     r*   test_force_2dzTestGeomMethods.test_force_2d  sk    h((h((		 
 
 
 	x)C)L)L)N)NOOOOOr,   c           	      "   t          | j        | j        t          ddd          | j        gd          }t          || j                                                   t          | j        | j        t          ddd          | j        gd          }t          || j                            d                     t          t          g d          t          g d          g          }t          || j	                            d	dg                     d S )
NrK   rL   r   rS   rQ   r8   )r  )r2   r   r2   r<   r  )r   r   r8   )r2   r   r8   r  )r   r2   r8   r  r2   )
r   r   r   r   r   r   r   force_3dr   r   r  s     r*   test_force_3dzTestGeomMethods.test_force_3d  s"   h++	 
 
 
 	x)C)L)L)N)NOOOh++	 
 
 
 	x)C)L)LQ)O)OPPPDDDEEOOOPP
 
 	x)9)91a&)A)ABBBBBr,   c                 p   t          g d          }t          j        ddg          }t          || j                            |                     t          t          g d          t          g d          gddg          }t          j        g d	          }t          j        t          d
          5  t          | j                            |d           |           d d d            n# 1 swxY w Y   t          j        ddg          }t          | j                            |d          |           d S )N)r0   r  r5   zLGEOMETRYCOLLECTION (MULTILINESTRING ((0 0, 0.5 0.5)), MULTILINESTRING EMPTY)zLGEOMETRYCOLLECTION (MULTILINESTRING EMPTY, MULTILINESTRING ((0 1, 0.5 0.5))))r0   r  r1   r3   )?r  )r3   r5   r1   r2   r8   rV   )NzLGEOMETRYCOLLECTION (MULTILINESTRING ((0.5 0.5, 1 0)), MULTILINESTRING EMPTY)Nr   r   r   zWGEOMETRYCOLLECTION (MULTILINESTRING ((0 0, 0.5 0.5)), MULTILINESTRING ((0.9 0.9, 1 1)))zHGEOMETRYCOLLECTION (MULTILINESTRING ((0 1, 1 0)), MULTILINESTRING EMPTY)F)	r
   r   r  r   r   shared_pathsr   r   r   )rl   liner   r  s       r*   test_shared_pathsz!TestGeomMethods.test_shared_paths  s   66677%*5
 
 	x);)H)H)N)NOOOKKKLL33344 a&
 
 
 %  
 
 \N
 
 
 	 	 #"//$/??  		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 %5*
 
 	++Be+<<h	
 	
 	
 	
 	
s   4+C++C/2C/c                     t          j        t          d          5  | j                            t          dgdg                     d d d            d S # 1 swxY w Y   d S )Nz0Index of the Series passed as 'z' does not matchr   r2   r2  rV   )r   r  r  r   r  r   r   s    r*   test_force_3d_wrong_indexz)TestGeomMethods.test_force_3d_wrong_index 	  s    ]P
 
 
 	6 	6 GVQCt444555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6r  c           	      0   t          t          g d          t          ddgddgg          t                      t          g d          t                      gdt	          dd	          
          }t          || j                                                   d S )NrC   ru   rv   rC   ru   rw   rv   )r0   r1   r9   rS   r8   ry   rt   r   r
   r   r   r   r   r   
line_merger  s     r*   test_line_mergezTestGeomMethods.test_line_merge&	  s    55566&'!2Wg4F GHH"$$33344"$$ 1++

 

 

 	x)<)<)>)>?????r,   c           
      <   t          t          g d          t          ddgddgg          t                      t          ddgddgg          t                      gd	t	          d
d                    }t          || j                            d                     d S )Nr  rC   ru   rw   rv   r0   r1   r9   rS   r8   ry   rt   T)directedr  r  s     r*   test_line_merge_directedz(TestGeomMethods.test_line_merge_directed4	  s    55566&'!2Wg4F GHH"$$&&!1FF3C DEE"$$ 1++

 

 

 	x)<)<d)<)K)KLLLLLr,   zdifferent order in GEOS<3.11c                    t          j        g dd          }t          j        g ddd          }t          ||                                           t          j        g dd          }t          j        dgdd          }t          ||                    d	
          d	           t          j        dgdd          }t          ||                    d
          d	           d S )N)zLINESTRING (18 4, 4 2, 2 9)zLINESTRING (18 4, 16 16)z#LINESTRING (16 16, 8 19, 8 12, 2 9)LINESTRING (8 6, 12 13, 15 8)LINESTRING (8 6, 15 8)z$LINESTRING (0 0, 0 3, 3 3, 3 0, 0 0)zPOLYGON ((1 1, 2 2, 1 2, 1 1))$LINESTRING (10 7, 13 8, 12 10, 10 7)rS   rQ   )z9POLYGON ((0 3, 3 3, 3 0, 0 0, 0 3), (2 2, 1 2, 1 1, 2 2))z#POLYGON ((13 8, 10 7, 12 10, 13 8))zKPOLYGON ((2 9, 8 12, 8 19, 16 16, 18 4, 4 2, 2 9), (8 6, 15 8, 12 13, 8 6))r  )rR   r
  )r  r  z(LINESTRING (0 0, 0 15, 12 15, 12 0, 0 0)r  zBPOLYGON ((12 0, 0 0, 0 15, 12 15, 12 13, 15 8, 12 7.142857, 12 0))Tr  rj  zkPOLYGON ((0 15, 12 15, 12 13, 15 8, 12 7.142857, 12 0, 0 0, 0 15), (12 7.666667, 13 8, 12 10, 12 7.666667))F)r   r  r   
build_area)rl   r   r   r  noded	non_nodeds         r*   test_build_areazTestGeomMethods.test_build_areaC	  sR   
 	 	 	 
 
 
 %   	
 	
 	
 	x888    
 
 
 "QR
 
 

 	ubmmm&>&>SWXXXX&; 
 
 
	 	r}}%}00T	
 	
 	
 	
 	
 	
r,   )r:   rT  rG   zEmpty geom bug in GEOS<3.9.5c                    t          t          ddd          t          ddd          t          dd          | j        gd          }t          || j                            d                     t          t          g d          t          g d	          g          }t          t          g d
          t                      g          }t          ||                    d                     t          t          g d          t          g d          g          }t          |                                |                    dd                                                     t          t          g d
          t          ddg          g          }t          |                                |                    dd                                                     d S )Ni)   rM   rP   rS   rQ   r2   )r0   r   rQ  r5   r3   )r0   r  )rQ  rQ  rT   )r0   r0   r5   r3   )r0   r0   r0   	pointwise)moder0   r  )	r   r   r   r   r   set_precisionr
   r    to_wktr`  s      r*   test_set_precisionz"TestGeomMethods.test_set_precision	  s    c2w''c2w''c2	 
 
 
 	x)C)Q)QRS)T)TUUU===>>999::
 
 33344
 
 	x););<<<;;;<<33344
 
 	OOqq{CCJJLL	
 	
 	
 33344FF+,,
 
 	OOqq7GHHOOQQ	
 	
 	
 	
 	
r,   c                    t          g d| j        j                  }t          || j                                                   | j                            d          }t          g d|j                  }t          ||                                           t          | j        |g          }t          g d|j                  }t          ||                                           d S )N)re   re   re   re   rV   r2   )rX   rX   rX   rX   )re   re   re   re   rX   rX   rX   rX   )r   r   rW   r    get_precisionr  r   )rl   r   with_precisionmixeds       r*   test_get_precisionz"TestGeomMethods.test_get_precision	  s    ...d6P6VWWWHd&@&N&N&P&PQQQ3AA!DD...n6JKKKHn&B&B&D&DEEE2NCDDBBB%+VVVHe&9&9&;&;<<<<<r,   c           
      .   t          t          ddg          t          ddg          d t          ddg          t          dd          gt          dd          d	          }t	          || j                            d                     t          t          dd
g          t          dd
g          d t          ddg          d gt          dd          d	          }t	          || j                            d                     t          t          dd
g          t          dd
g          d t          ddg          t          dd          gt          dd          d	          }t	          || j                            d                     t          t          ddg          t          dd
g          d t          ddg          t          dd          gt          dd          d	          }t	          || j                            g d                     d S )NrC   ru   r0   r1   r   r8   ry   rS   r   rv   rw   r9   r2   rr   )r   r2   r2   rr   r   )r   r
   r   r   r    r   get_geometryr  s     r*   test_get_geometryz!TestGeomMethods.test_get_geometry	  s+   FG,--FG,--FF+,,a 1++

 

 

 	Hdh&;&;A&>&>???GW-..GW-..FF+,, 1++

 

 

 	Hdh&;&;A&>&>???GW-..GW-..FF+,,a 1++

 

 

 	Hdh&;&;B&?&?@@@FG,--GW-..FF+,,a 1++

 

 

 	Hdh&;&;<L<L<L&M&MNNNNNr,   )F)__name__
__module____qualname__r   r   r   r   r   r   r   r   markskipifr   r   r   r   r  r  r  r	  r  r  r  r  r  r   r"  r%  r)  r2  r5  r>  rA  rE  rJ  rM  r:  geos_versionrQ  rU  rW  r\  ra  rm  rp  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  parametrizer   r
   r   r  r  r"  r0  r4  rG  rJ  rO  rS  rW  rY  r^  rb  rh  rl  rp  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r1  r5  rJ  rM  rP  rY  r_  rb  re  rk  rm  rs  rv  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r   r	   r  r  r  r  r  r  r  r  r  r  r  r  rh   r,   r*   r.   r.   (   s       g
 g
 g
R0 0 0
? ? ? ?X X X U U U:' :' :'x     [J/EFFW W GFW$ $ $D D D
 
 
= = =J J JL L L
 
 
B B BP P P
 
 
(O O O1 1 1D D D> > > [J/EFF  GF- - -(- - -J J J$' ' '
J 
J 
JS S S
 
 
 [,z9BWXXU U YXU@ @ @ [J/EFF  GF
 
 
O O OS S S*R R RS S S.L .L .L`
 
 
2S S S  [J/EFF& & GF&
 
 
8 [z)2H   
 
 
6U U U,S S SR R RQ Q Q& & &	Q 	Q 	Q& & &
	U 	U 	U= = =; ; ; [*]+4W   * * *" [*]+4W   
E 
E 
E= = =E E E> > >; ; ;> > >< < < [M)2HII[,z9BWXX4 4 YX JI4N N N [M)2HII
0 
0 JI
0T T T	% 	% 	%: : : [J/EFF  GF= = = [M)2IJJS S KJS.% % %( [* &&!1FF3C DEE 
CCCDD
 %+	
   [M)2IJJ% % KJ! "% [.DEE2 2 FE2< < < [,z9BWXX)7 )7 YX)7VV V V$C $C $CL [,z9BWXXJ J YXJ [,z9BWXX[===sC555s;	
 F F  YXF
   [M)2HII
 
 JI
G G G. . .. . .- - -F F F- - -- - -
/ / /M M M	
 	
 	
+ + +
+ + + [J/EFF" " GF"G G G. . .$ $ $	J 	J 	J1 1 11 1 1,8 8 83 3 3	N 	N 	N' ' '	N 	N 	N' ' '* * * [J/EFF	L 	L GF	L3 3 3
8 8 8 [*]+4W   
 
 
:$ $ $  + + +
	& 	& 	& [M)2HII< < JI<,. . .F F F [\D&>::1 1 ;:1" [\D&>::1 1 ;:1$ [\D&>::1 1 ;:1< < <8< < <6 [],<,<,<== 1  1 >= 1D [],<,<,<==$1 $1 >=$1L [],<,<,<==1 1 >=1@8 8 8:8 8 8$8 8 888 8 88 [Z&*)=>>F F ?>F- - -A A AO O O [M)2HIIX X JIX:R R RQ Q Q0
 
 

 
 
 [M)2HII4 4 JI4 [V\\\22/ / 32/ J J J [V\\\227 7 327 ) ) )G G GB B B B B BB B B: [,z9BWXX[ 	**%M%M%MNNOO	**%E%E%EFFGG
 	''"R"R"RSSTT	''"J"J"JKKLL		
 U U  YXUQ Q Q
P 
P 
PC C C>.
 .
 .
`6 6 6@ @ @ [,z9BWXXM M YXM [z)2P   8
 8
 8
t [y(1O   ,
 ,
 ,
\= = =3O 3O 3O 3O 3Or,   r.   )1r`   r   numpyr#   r[   r   r   r   r   r   r:  r   shapely.geometryr	   r
   r   r   r   r   r   r   shapely.geometry.collectionr   shapely.opsr   	geopandasr   r   geopandas._compatr   r   r   geopandas.baser   r   geopandas.testingr   geopandas.tests.utilr   r   r   numpy.testingr   pandas.testingr   r   r    r+   r.   rh   r,   r*   <module>r     s         ? ? ? ? ? ? ? ? ? ? ? ? ? ?       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ; : : : : : # # # # # # - - - - - - - - D D D D D D D D D D ( ( ( ( ( (  7 7 7 7 7 7 X X X X X X X X X X , , , , , , V V V V V V V V V V. . .F'O F'O F'O F'O F'O F'O F'O F'O F'O F'Or,   