
    jj                        S SK Jr  S SKrS SKrS SKJrJrJrJ	r	J
r
Jr  S SKrS SKJrJrJr  S SKJr  S SKrS SKJr   S SKJr  Sr\R2                  R5                  \(       + S
S9r " S S5      r " S S5      r\R2                  R<                  \R2                  R?                  S5       " S S5      5       5       r  " S S5      r!g! \ a    S	r Nf = f)    )sqrtN)GeometryCollection
LineStringMultiPolygonPointPolygonbox)GeoDataFrame	GeoSeries	read_file)_compat)assert_array_equal)	coo_arrayTFzscipy not installedreasonc                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestSeriesSindex   c                 R   [        / SQ5      n[        / SQ5      n[        SX/0SS9nUR                  (       a   eUR                    UR                  (       d   eSUR                  R
                  l        UR                  (       a   eUR                    UR                  (       d   e[        X/5      nUR                  (       a   eUR                    UR                  (       d   eSUR
                  l        UR                  (       a   eUR                    UR                  (       d   eg)zTest the has_sindex method.r   r      r   r   r   r   r   r   r   geomgeometryN)r   r
   
has_sindexsindexr   values_sindexr   )selft1t2dss        ^/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/tests/test_sindex.pytest_has_sindex TestSeriesSindex.test_has_sindex    s    -.-.&2(+f=<<	|||$(

!<<	|||rh<<	|||<<	|||    c                 z    [        [        S9nUR                  (       a   e[        UR                  5      S:X  d   eg)z7Tests creating a spatial index from an empty GeoSeries.dtyper   N)r   objectr!   lenr$   r(   s     r)   test_empty_geoseries%TestSeriesSindex.test_empty_geoseries7   s.    F#88|188}!!!r,   c                 <   [        [        SS5      /5      nUR                  R                  S:X  d   eUR                  R	                  S5      n[        [        U5      5      S:X  d   eUR                  R	                  S5      n[        [        U5      5      S:X  d   eg )Nr   r   r7   r   r   )r8   r7   r7   )r   r   r!   sizeintersectionr1   list)r$   r(   hitss      r)   
test_pointTestSeriesSindex.test_point=   s    uQ{m$xx}}!!!xx$$^44:!###xx$$%564:!###r,   c                     [        [        5       /5      nUR                  (       a   e[        UR                  5      S:X  d   eg)z9Tests that a single empty Point results in an empty tree.r   N)r   r   r!   r1   r2   s     r)   test_empty_point!TestSeriesSindex.test_empty_pointE   s2    uwi 88|188}!!!r,   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      n[        XU/5      nUR                  R                  S:X  d   eg )Nr   r   )r   r   r   r      )r   r   r!   r9   )r$   r%   r&   sqr(   s        r)   test_polygonsTestSeriesSindex.test_polygonsK   sG    -.-.56rrl#xx}}!!!r,   c                     [        [        SS5      /5      nUR                  R                  b   eUR                  R
                  S:X  d   eUR                  R                  c   eg )Nr   r   )r   r   r"   r#   r!   r9   r2   s     r)   test_lazy_build TestSeriesSindex.test_lazy_buildR   sV    uQ{m$xx'''xx}}!!!xx+++r,   c                     [        [        SS5      /5      nUR                  n[        SS5      UR                  S'   UR                  ULd   eg )Nr   )r   r   r!   iloc)r$   r(   original_indexs      r)   test_rebuild_on_item_change,TestSeriesSindex.test_rebuild_on_item_changeX   sB    uQ{m$!QKq	xx~---r,   c                 J   [        [        SS5      [        SS5      /5      nUR                  nUR                  S S nUR                  ULd   eUR                  S S  nUR                  (       d   eUR                  UL d   eUR                  S S S2   nUR                  ULd   eg )Nr   r   r7   )r   r   r!   rK   r    )r$   r(   rL   sliceds       r)   test_rebuild_on_slice&TestSeriesSindex.test_rebuild_on_slice^   s    uQ{E!QK01}}N222    }}..."}}N222r,    N)__name__
__module____qualname____firstlineno__r*   r3   r=   r@   rE   rH   rM   rQ   __static_attributes__rS   r,   r)   r   r      s*    ."$"",.3r,   r   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestFrameSindexm   c           
          [        S5      [        SS5      [        [        S5      [        S5      5       VVs/ s H  u  p[        X5      PM     snnS.n[        USS9U l        g s  snnf )N   r   )ABr   r   r   )rangezipr   r
   dfr$   xydatas       r)   setup_methodTestFrameSindex.setup_methodn   sX    qr1-0q58-DE-DTQU1[-DE

 tf5 Fs   A$
c                    SU R                   l        U R                   R                  R                  S:X  d   e[	        U R                   R                  R                  S5      5      n[        U5      S:X  d   eUS   S:X  d   eg )Nz	epsg:4326r]   )      @rk      rl      r   rC   )rc   crsr!   r9   r;   r:   r1   )r$   r<   s     r)   test_sindexTestFrameSindex.test_sindexv   sg    !ww~~""a'''DGGNN//0@AB4yA~~Aw!||r,   c                    U R                   R                  R                  R                  b   eU R                   R                  R
                  S:X  d   eU R                   R                  R                  R                  c   eg )Nr]   )rc   r   r"   r#   r!   r9   r$   s    r)   rH   TestFrameSindex.test_lazy_build}   sb    ww&&..666ww~~""a'''ww&&..:::r,   c           
      P   U R                   R                  c   eU R                   R                  nU R                   R                  [        [	        SS5      [	        SS5      5       VVs/ s H  u  p#[        X#5      PM     snnSS9  U R                   R                  ULd   eg s  snnf )Nr]   
   T)inplace)rc   r!   set_geometryrb   ra   r   )r$   rL   re   rf   s       r)   #test_sindex_rebuild_on_set_geometry3TestFrameSindex.test_sindex_rebuild_on_set_geometry   s    ww~~)))%(q"uQ|%DE%DTQU1[%DEt 	 	
 ww~~^333 Fs   (B"
c                 ^   U R                   R                  nU R                   R                  S S nUR                  ULd   eU R                   R                  nU R                   R                  S S  nUR                  UL d   eU R                   R                  S S S2   nUR                  ULd   eg )Nr   r7   )rc   r!   rK   )r$   rL   rP   s      r)   test_rebuild_on_row_slice)TestFrameSindex.test_rebuild_on_row_slice   s    bq!}}N222a}}...dd#}}N222r,   c                     U R                   R                  nU R                   S   nUR                  UL d   eU R                   R                  nUR                  UL d   eg)z?Selecting a single column should not rebuild the spatial index.r   N)rc   r!   r   )r$   rL   geometry_cols      r)   $test_rebuild_on_single_col_selection4TestFrameSindex.test_rebuild_on_single_col_selection   sU     wwv""n444ww''""n444r,   c                 T   U R                   R                  nU R                   SS/   n[        R                  (       d  UR                  ULd   eOUR                  UL d   eU R                   SS/   n[        R                  (       d  UR                  ULd   egUR                  UL d   eg)z2Selecting a subset of columns preserves the index.r   r_   N)rc   r!   compatPANDAS_GE_30)r$   rL   subset1subset2s       r)   &test_rebuild_on_multiple_col_selection6TestFrameSindex.test_rebuild_on_multiple_col_selection   s     ''63-("">>777>>^333''3-("">>777>>^333r,   c                     U R                   R                  5       nUR                  nUR                  SSSS9  UR                  (       a   eUR                  nX2Ld   eUR
                  R                  5       / SQ:X  d   eg )Nr_   FT)	ascendingrv   )rl   rC   rm   r   r   )rc   copyr!   sort_valuesr    indextolistr$   gdf
old_sindex
new_sindexs       r)   test_rebuild_on_update_inplace.TestFrameSindex.test_rebuild_on_update_inplace   sk    ggllnZZ
ud;>>!!ZZ
+++ yy!_444r,   c                     U R                   R                  5       nUR                  nUR                  SS0SS9  UR                  (       d   eUR                  nX#L d   eg )Nr_   AAT)columnsrv   )rc   r   r!   renamer    r   s       r)   test_update_inplace_no_rebuild.TestFrameSindex.test_update_inplace_no_rebuild   sO    ggllnZZ


C;
5~~~ZZ
'''r,   )rc   N)rT   rU   rV   rW   rh   ro   rH   rx   r{   r   r   r   r   rX   rS   r,   r)   rZ   rZ   m   s/    6;
4354"5(r,   rZ   _setup_class_nybb_filenamec                        \ rS rSrS rS rSrg)TestJoinSindex   c                 8    [        U R                  5      U l        g )N)r   nybb_filenameborosrr   s    r)   rh   TestJoinSindex.setup_method   s    t112
r,   c                    U R                   R                  nUR                  S5      nU Vs/ s H  o0R                   R                  U   S   PM      nnUSS/:X  d   eU R                   U R                   S   S:     nUR                  nUR                  S5      nU Vs/ s H  o5R                  U   S   PM     nnUS/:X  d   eU R                   U R                   S   S:     nUR                  nUR                  S5      nU Vs/ s H  o6R                  U   S   PM     sn4nUS/:X  d   eUR	                  USS9n[        U5      S	:X  d   eUR                  R                  S	:X  d   eUR                  nUR                  S5      nU Vs/ s H  o7R                  U   S   PM     nnUSS/:X  d   eg s  snf s  snf s  snf s  snf )
N)g.AgHzbABoroNameBronxQueensBoroCoderC   outer)howr]   )r   r!   r:   rK   merger1   r9   )r$   treer<   hitresfirstsecondmergeds           r)   test_merge_geoTestJoinSindex.test_merge_geo   s   zz    !89;?@4Czzs#J/4@w)))) 

4::j1A56||  !896:;dszz#z*d;wi DJJz2a78}}  !898<=C ,=?xj    V16{a}}!!Q&&&}}  !897;<t{{3
+t<w))))1 A < > =s   %F1F6F;	G )r   N)rT   rU   rV   rW   rh   r   rX   rS   r,   r)   r   r      s    3*r,   r   c            '          \ rS rSrS r\R                  R                  SS/ 4SS/4SSS/4S	S/445      S
 5       r\R                  R                  SSSS\	" SS5      45      S 5       r
\R                  R                  SS\R                  " S\S9S45      \R                  R                  SS\" SSSS5      / 4S\" SSSS5      S/4S\" SSSS5      SS/4S\" SS/5      SS/4S\" SSSS5      / 4S\" SSSS5      S/4S\" SSSS5      SS/4S\" SS/5      / 4S\" SSSS5      / 4S\" SSSS5      / 4S\" S S S!S!5      S"/4S\" SS/5      / 4S#\" SSSS5      / 4S#\" SSS$S$5      S/4S#\" SSS%S%5      S/4S#\" SSS&S&5      SS/4S#\" SS/5      / 4S'\" SSSS5      S/4S'\" SSS%S%5      / 4S#\" SSS(S(5      S"/4S)\" SSSS5      SS/4S)\" S*S*S+S+5      / 4S)\" SSSS5      SS/4S,\" SSSS5      / 4S,\" SSS$S$5      S/4S,\" SSS$S$5      S/4S,\" SSS%S%5      S/4S,\" SSS&S&5      SS/4S,\" SSS(S(5      / 445      S- 5       5       rS. r\R                  R#                  \R&                  (       + S/S09\R                  R                  S1S\" S2S2S3S35      / 4S\" S2S2S3S35      S"/4S\	" SS5      / 4\" S5      S4-   \	" SS5      SS/4\" S&5      S4-
  \" / S5Q5      \" / S6Q5      // SQ/ S7Q/4\" S&5      S4-   \" / S5Q5      \" / S6Q5      // S8Q/ S9Q/4S&S/\	" SS5      \	" SS5      // S:Q/ S;Q/445      S< 5       5       r\R                  R#                  \R&                  (       + S/S09S= 5       r\R                  R                  S>/ S?Q5      S@ 5       r\R                  R#                  \R&                  SAS09SB 5       r\R                  R                  SCS/ 4\" 5       / 4\	" 5       / 4\" 5       / 4\" 5       / 4/5      SD 5       rSE r\R                  R                  SFSG/ SHQ/ SIQ/4SJ/ SHQ/ SIQ/445      SK 5       rSL r\R                  R                  SS\R                  " S\S9S45      \R                  R                  SSS// / /4SS/S/S//4SS/SS/SS//4SS// / /4SS/S/S//4SS/SS/SS//4SSS/S/S//4SSMS// SNQ/ SOQ/4SSP// / /4SSQ// / /4SSR/S/S"//4S#S// / /4S#SS/S/S//4S#ST/S/S//4S#SU/S/S//4S#SV/SS/SS//4S#SW/S/S"//4S'SX/S/S//4S'SY// / /4S)SZ/SS/SS//4S)S[// / /4S)S/SS/SS//4S,S// / /4S,SS/S/S//4S,ST/S/S//4S,SU/S/S//4S,SV/SS/SS//4S,SW// / /445      S\ 5       5       r \R                  R                  S]\" 5       // / /4\" 5       S// / /4S// / /4S\" SSSS5      S/S/S//4/5      S^ 5       r!S_ r"S` r#Sa r$\R                  R                  SSS/ / /4SS/ / /4S#SMS/S//445      Sb 5       r%\R                  R                  SFSG/ SHQ/ SIQ/4SJ/ SHQ/ SIQ/445      Sc 5       r&\R                  R                  SdSGSJ/5      \R                  R                  SeSS/S/S//4SS/S/S//4/5      Sf 5       5       r'\R                  R                  SdSGSJ/5      \R                  R                  SeSgS	/SS/SS//4SgSh/SS/SS//4/5      Si 5       5       r(\R                  R                  SdSGSJ/5      \R                  R                  SeS/ / /4S// / /4/5      Sj 5       5       r)\R                  R                  SkSGSJ/5      \R                  R                  SlSGS/ SNQ/ SmQ/\" S5      \" S5      \" Sn5      /44SJSSS/SS"//\" S5      \" Sn5      /44SGSSS/SS//\" S5      \" S5      /44SJSS/S//\" S5      /44/5      So 5       5       r*\R                  R                  SkSGSJ/5      \R                  R                  SpSJSSJ/ SqQ/ SqQ/S"S/-  44SJSSG/ SqQ/ SrQ/S"\" S&5      /-  44SGSSJ/ SqQ/ SqQ/S"S/-  44SGSSG/ SsQ/ StQ/Su\" S&5      /-  44SJSvSG/ SwQ/ SxQ/SyS/-  44SGSvSG/ SzQ/ S{Q/S|S/-  44/5      S} 5       5       r+S~ r,S r-S r.S r/\R                  R                  S/ SQ5      S 5       r0Sr1g)TestShapelyInterface   c           	          S[        [        S5      [        S5      5       VVs/ s H  u  p[        X5      PM     snn[        SSSS5      /-   0n[	        USS9U l        [        US   5      U l        g s  snnf )Nr   r]   ru      r   )rb   ra   r   r	   r
   rc   r1   expected_sizerd   s       r)   rh   !TestShapelyInterface.setup_method   sq    Sq58-DE-DTQU1[-DE2r2r"#$
 tf5 f.	 Fs   A2ztest_geom, expectedr7   r7         r   )r   r         ?r   r   )r   r   r   r   r   r   c                 v    [        U R                  R                  R                  U5      5      n[	        X25        g)z2Tests the `intersection` method with valid inputs.N)r;   rc   r!   r:   r   )r$   	test_geomexpectedr   s       r)   test_intersection_bounds_tuple3TestShapelyInterface.test_intersection_bounds_tuple   s)     477>>..y9:3)r,   r   )r7   r7   r   r   Nc                     [         R                  " [        5         U R                  R                  R                  U5        SSS5        g! , (       d  f       g= f)z4Tests the `intersection` method with invalid inputs.N)pytestraises	TypeErrorrc   r!   r:   r$   r   s     r)   &test_intersection_invalid_bounds_tuple;TestShapelyInterface.test_intersection_invalid_bounds_tuple	  s2     ]]9%GGNN''	2 &%%   &A


Aoutput_formatindicessparse)marksdensezpredicate, test_geom, expectedr7   r   r   r   
intersectswithin      ?Q?      ?ru         r]   containsjt?      ?rm   touchesr   coversMbP?Gz?contains_properlyc                 X   U R                   R                  R                  X!S9n[        XS5        US:w  av  [        R
                  " [        U R                   5      [        S9nSXc'   U R                   R                  R                  X!US9nUS:X  a  UR                  5       n[        XV5        gg)z@Tests the `query` method with valid inputs and valid predicates.	predicater   r.   Tr   r   r   N)	rc   r!   queryr   npzerosr1   booltodense)r$   r   r   r   r   r   r   s          r)   
test_queryTestShapelyInterface.test_query  s    N ggnn""9"B3)I%HHS\6E"EO''..&&m ' C (kkms* &r,   c                     [         R                  " [        5         U R                  R                  R                  S5        SSS5        g! , (       d  f       g= f)z/Tests the `query` method with invalid geometry.notavalidgeomNr   r   r   rc   r!   r   rr   s    r)   test_query_invalid_geometry0TestShapelyInterface.test_query_invalid_geometry  s0    ]]9%GGNN  1 &%%r   zRequires GEOS 3.10r   zdistance, test_geom, expectedg      "@g#@g&.>r   )r   )rm   r   )rm   rm   )r   r   r   rm   )r   r   r   r   r   r   r   )r   r   rm   r   r   rm   rC   )r   r   r   r   r   r   r   )r   r   r   r   rm   rC   rl   c                 d    U R                   R                  R                  USUS9n[        XC5        g)zHTests the `query` method with predicates that require keyword arguments.dwithinr   distanceNrc   r!   r   r   )r$   r   r   r   r   s        r)   test_query_dwithin'TestShapelyInterface.test_query_dwithin  s,    p ggnn""9	H"U3)r,   c                     [         R                  " [        SS9   U R                  R                  R                  [        SS5      SS9  SSS5        g! , (       d  f       g= f)XTests the `query` method with keyword arguments that are
invalid for certain predicates.z8'distance' parameter is required for 'dwithin' predicatematchr   r   r   Nr   r   
ValueErrorrc   r!   r   r   rr   s    r)   test_dwithin_no_distance-TestShapelyInterface.test_dwithin_no_distance  sI     ]]X
 GGNN  q!	 B
 
 
s   /A
A r   )
Nr   r   
covered_byr   crossesr   overlapsr   r   c                     Sn[         R                  " [        US9   U R                  R                  R                  [        SS5      USS9  SSS5        g! , (       d  f       g= f)r   zD'distance' parameter is only supported in combination with 'dwithin'r   r   r   Nr   )r$   r   msgs      r)   test_query_distance_invalid0TestShapelyInterface.test_query_distance_invalid  sG    $ U]]:S1GGNN  q!	A N 211s   0A
A#z0Test for 'dwithin'-incompatible versions of GEOSc                     [         R                  " [        SS9   U R                  R                  R                  [        SS5      SSS9  SSS5        g! , (       d  f       g= f)zpTests whether a ValueError is raised when trying to use dwithin with
incompatible versions of shapely or pyGEOS
z-predicate = 'dwithin' requires GEOS >= 3.10.0r   r   r   r   Nr   rr   s    r)   test_dwithin_requirements.TestShapelyInterface.test_dwithin_requirements  sK     ]]M
 GGNN  q!	A N
 
 
s   0A
A!ztest_geom, expected_valuec                 d    U R                   R                  R                  U5      n[        X25        g)z-Tests the `query` method with empty geometry.Nr   )r$   r   expected_valuer   s       r)   test_query_empty_geometry.TestShapelyInterface.test_query_empty_geometry  s$     ggnn""9-3/r,   c                     [        SSSS5      n[        R                  " [        5         U R                  R
                  R                  USS9  SSS5        g! , (       d  f       g= f)1Tests the `query` method with invalid predicates.r7   r   testr   N)r	   r   r   r   rc   r!   r   r   s     r)   test_query_invalid_predicate1TestShapelyInterface.test_query_invalid_predicate   sE    Bd+	]]:&GGNN  f = '&&s   %A
A%zsort, expectedT)r   r   r   r   r   rm   Fc                    [        [        / SQ5      /5      n[        [        / SQ5      [        / SQ5      [        / SQ5      /5      n/ SQnUR                  S   nUR                  R	                  XQS9n[        U5      [        U5      :X  d   e [        Xb5        g! [         a7  nUSL a+  [        R                  " SU S	UR                  5        S
35        UeSnAff = f)zICheck that results from `query` don't depend on the
order of geometries.
r   )rC   r   rC   rC   r   rC   )r7   r   r   r  )r7   rC   r  )r]   rC   )r]   r]   )rC   r]   r  r   sortFkrtree results are known to be unordered, see https://github.com/geopandas/geopandas/issues/1337
Expected:
 
Got:
 
N)r   r   r"   r!   r   sortedr   AssertionErrorr   xfailr   )r$   r  r   
test_polys
tree_polystest_geor   es           r)   test_query_sorting'TestShapelyInterface.test_query_sorting  s     (H IJK
89:;89

 $$Q'%%h%: c{fX....
	s- 	u}##+* -!jjl^2/ G	s   B 
C$2CCc                     [         R                  " [        SS9   [        SSSS5      nU R                  R
                  R                  USS9  S S S 5        g ! , (       d  f       g = f)Nz#Invalid output_format: 'dataarray'.r   r7   r   	dataarray)r   )r   r   r   r	   rc   r!   r   r   s     r)   test_unsupported_output,TestShapelyInterface.test_unsupported_output1  sI    ]]:-RSBD$/IGGNN  + F TSSs   3A
A$r6   )r   r   r   )r   r   r   )r   r   r   r   )r   r   ru   ru   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r7   r7   rm   rm   )ru   ru   r   r   )r7   r7   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                    U Vs/ s H  n[        U6 PM     nnU R                  R                  R                  XaS9n[	        Xs5        US:w  a  [
        R                  " [        U R                  5      [        U5      4[        S9nUSSS2   u  pSXU
4'   U R                  R                  R                  XaUS9nUS:X  a  UR                  5       n[	        Xx5        ggs  snf )	zATests the `query` method with valid
inputs and valid predicates.
r   r   r.   Nr7   Tr   r   )
r	   rc   r!   r   r   r   r   r1   r   r   )r$   r   r   r   r   r   
test_geomsr   r   r   others              r)   test_query_bulk$TestShapelyInterface.test_query_bulk7  s    T .77YTc4jY
7ggnn"":"C3)I%HHc$''lC
O<DIE"4R4.KD!%E+''..&&} ' C (kkms* &	 8s   Cztest_geoms, expected_valuec                 d    U R                   R                  R                  U5      n[        X25        g)z2Tests the `query` method with an empty geometries.Nr   )r$   r)  r  r   s       r)   test_query_bulk_empty_geometry3TestShapelyInterface.test_query_bulk_empty_geometry  s$     ggnn"":.3/r,   c                     [         R                  " / [        S9n/ / /nU R                  R                  R                  U5      n[        X25        g)z3Tests the `query` method with an empty input array.r.   N)r   arrayr0   rc   r!   r   r   )r$   
test_arrayr  r   s       r)   !test_query_bulk_empty_input_array6TestShapelyInterface.test_query_bulk_empty_input_array  s;    XXb/
bggnn"":.3/r,   c                     Sn[         R                  " [        5         U R                  R                  R                  U5        SSS5        g! , (       d  f       g= f)zK
Tests the `query` method with invalid input for the `geometry` parameter.

notanarrayNr   )r$   r2  s     r)   &test_query_bulk_invalid_input_geometry;TestShapelyInterface.test_query_bulk_invalid_input_geometry  s7     "
]]9%GGNN  , &%%s   &A
Ac                     SnSn[         R                  " [        5         U R                  R                  R                  [        U6 /US9  SSS5        g! , (       d  f       g= f)r  r   r  r   N)r   r   r   rc   r!   r   r	   )r$   test_geom_boundstest_predicates      r)   !test_query_bulk_invalid_predicate6TestShapelyInterface.test_query_bulk_invalid_predicate  sI    /]]:&GGNN  #'7"8!9^ T '&&s   ,A
A"c                    [         R                  " [        U6 /S/S9nU R                  R                  R                  X!S9n[        XC5        U R                  R                  R                  UR                  US9n[        XC5        U R                  R                  R                  UR                  R                  US9n[        XC5        U R                  R                  R                  UR                  R                  R                  5       US9n[        XC5        U R                  R                  R                  UR                  R                  R                  5       US9n[        XC5        g)zGTests that query can accept a GeoSeries, GeometryArray or
numpy array.
0)r   r   N)
	geopandasr   r	   rc   r!   r   r   r   r"   to_numpy)r$   r   r   r   r   s        r)   test_query_bulk_input_type/TestShapelyInterface.test_query_bulk_input_type  s&    ''i(9#G	 ggnn""9"B3) ggnn""9#5#5"K3)ggnn""9#5#5#<#<	"R3) ggnn""%%..0I # 
 	3)ggnn""%%..0I # 
 	3)r,   c                    [        [        / SQ5      /5      n[        [        / SQ5      [        / SQ5      [        / SQ5      /5      nUR                  R                  X1S9n[	        US   5      [	        US   5      :X  d   e[	        US   5      [	        US   5      :X  d   e [        XR5        g! [         a7  nUSL a+  [        R                  " SU S	UR                  5        S
35        UeSnAff = f)zICheck that results from `query` don't depend
on the order of geometries.
r  r  r  r  r   r   Fr  r  r  N)
r   r   r!   r   r  r   r  r   r  r   )r$   r  r   r  r  r   r!  s          r)   test_query_bulk_sorting,TestShapelyInterface.test_query_bulk_sorting  s     (H IJK
89:;89

 %%j%< c!f~!4444c!f~!4444
	s- 	u}##+* -!jjl^2/ G	s   !B- -
C.72C))C.
return_allzgeometry,expectedc                    [         R                  " [        R                  " S5      [        R                  " S5      5      n[        R
                  " SU05      n[        U5      nUR                  R                  XcS9n[        Xr5        [         R                  " U5      nUR                  R                  XcS9n[        Xr5        g Nru   r   )rG  
shapelypointsr   aranger@  r
   r   r!   nearestr   )r$   r   r   rG  geomsrc   pr   s           r)   test_nearest_single(TestShapelyInterface.test_nearest_single&  s     ryy}biim<##Z$78(Oii93)NN8$ii93)r,   r   )r   r   c                    [         R                  " [        R                  " S5      [        R                  " S5      5      n[        R
                  " SU05      nU Vs/ s H  n[        U5      PM     nnUR                  R                  XsS9n[        X5        [         R                  " U5      nUR                  R                  XsS9n[        X5        [        R                  " U5      n	UR                  R                  XS9n[        X5        [        U6 u  p[        R                  " X5      nUR                  R                  XS9n[        X5        g s  snf rI  )rK  rL  r   rM  r@  r
   r   r!   rN  r   r   rb   points_from_xy)r$   r   r   rG  rO  rc   rP  psr   r(   re   rf   gas                r)   test_nearest_multi'TestShapelyInterface.test_nearest_multi:  s    ryy}biim<##Z$78 ()1eAh)ii:3)^^H%ii:3)#ii93)H~%%a+ii:3) *s   Ec                     [         R                  " [        R                  " S5      [        R                  " S5      5      n[        R
                  " SU05      nUR                  R                  XS9n[        Xb5        g rI  )	rK  rL  r   rM  r@  r
   r!   rN  r   )r$   r   r   rG  rO  rc   r   s          r)   test_nearest_none&TestShapelyInterface.test_nearest_noneW  sX     ryy}biim<##Z$78ii@3)r,   return_distancez return_all,max_distance,expected)r   r   r]   2   c                    [         R                  " [        R                  " S5      [        R                  " S5      5      n[        R
                  " SU05      n[        SS5      [        SS5      /nUR                  R                  UUUUS9nU(       a%  [        US   US   5        [        US   US   5        g [        XS   5        g )Nru   r   r   r   )rG  max_distancer\  r   rJ  )	r$   r   r_  rG  r\  rO  rc   rU  r   s	            r)   test_nearest_max_distance.TestShapelyInterface.test_nearest_max_distancef  s     ryy}biim<##Z$78CouQ|,ii!%+	   
 s1vx{3s1vx{3sQK0r,   z*return_all,max_distance,exclusive,expected)r   r   rm   rC   rl   )r   r   r   rm   rC   )r   r   r   rm   rm   rC   rC   rl   )r   r   rm   r   rC   rm   rl   rC      g?)r   rm   r]   )r]   r]   r   rC   )r   rm   r]   r]   )r]   r]   r   rm   rl   c                    [         R                  " [        R                  " S5      [        R                  " S5      5      nU(       a"  [        R                  " U[        SS5      /5      n[        R                  " SU05      nUnUR                  R                  UUUUUS9n	U(       a%  [        U	S   US   5        [        U	S   US   5        g [        XS   5        g )Nr]   r   rm   r   )rG  r_  r\  	exclusiver   )rK  rL  r   rM  appendr   r@  r
   r!   rN  r   )
r$   r   r_  rG  r\  rd  rO  rc   rU  r   s
             r)   test_nearest_exclusive+TestShapelyInterface.test_nearest_exclusive  s    ( ryy|RYYq\:IIeeAqk]3E##Z$78ii!%+   
 s1vx{3s1vx{3sQK0r,   c                     [        SS5      S[        5       [        SS5      [        5       /n[        R                  " US9nUR                  R	                  [        SS5      5      S   S:X  d   eg)z8Tests building sindex with interleaved empty geometries.r   Nr   r   rC   )r   r@  r
   r!   r   )r$   rO  rc   s      r)   test_empty_tree_geometries/TestShapelyInterface.test_empty_tree_geometries  sX    q!dEGU1a[%'B##U3yyuQ{+A.!333r,   c                 d    U R                   R                  R                  U R                  :X  d   eg)zTests the `size` property.N)rc   r!   r9   r   rr   s    r)   	test_sizeTestShapelyInterface.test_size  s$    ww~~""d&8&8888r,   c                 b    [        U R                  R                  5      U R                  :X  d   eg)z.Tests the `__len__` method of spatial indexes.N)r1   rc   r!   r   rr   s    r)   test_lenTestShapelyInterface.test_len  s#    477>>"d&8&8888r,   c                    [         R                  " / [        S9nUR                  R                  (       d   e[         R                  " S/5      nUR                  R                  (       d   e[         R                  " [        5       /5      nUR                  R                  (       d   e[         R                  " [        SS5      /5      nUR                  R                  (       a   eg)zTests the `is_empty` property.r.   Nr   )r@  r   r0   r!   is_emptyr   )r$   empty	non_emptys      r)   test_is_empty"TestShapelyInterface.test_is_empty  s     ##Bf5||$$$$##TF+||$$$$##UWI.||$$$$''q!6	##,,,,,r,   zpredicate, expected_shape))N)rm   i  )r   rm      )r   rw  )r   rm   r   )r   ry  )r   ry  )r   ry  c                     [        U5      n[        U5      nUR                  R                  UR                  U5      nUR                  U:X  d   eg)z1Tests output sizes for the naturalearth datasets.N)r   r!   r   r   shape)r$   r   expected_shapenaturalearth_lowresnaturalearth_citiesworldcapitalsr   s           r)   test_integration_natural_earth3TestShapelyInterface.test_integration_natural_earth  sH      -.01ll  !2!2I>yyN***r,   )rc   r   )2rT   rU   rV   rW   rh   r   markparametrizer   r   r   param
SCIPY_MARKr	   r   r   r   skipifr   GEOS_GE_310r   r   r   r   r  r  r   r   r  r  r"  r&  r+  r.  r3  r7  r<  rB  rE  rQ  rW  rZ  r`  rf  ri  rl  ro  ru  r  rX   rS   r,   r)   r   r      s*   / [[!2&#aS)Aq6"aSM		
**
 [[[>4uQPQ{*ST3 U3 [[)V\\(*%MwW [[(3r2tT*B/3tT3,qc23q!Q?QF+FF+,A
 3r2tT2B7D$S) Aq!QA FF+,
 s4tT2B7s1aR("-s2r2r*QC0z66"23R8Q1a"-Q5%01#6S#sC01#6RQ*QF3FF+,
 BAq)A3/D$S) BB# D$1%A E5$- Aq!QA $Aq!Q $Aq%' $CeU+ $Cc3' $BAq!A $BB#s^	
aD+EaJ+ 2
 [[F...7KL[[' Cc3' Cc3' c3 Z 4'c3A Q$4545 |, Q$4545 '(=> BsC%1+.&(=>Y1	
4j*k4 Ml*
 [[F...7KLC MC [[	
OO [[#U  OO [[#2J!2&WbM^R YO	
	0	0
> [[Iy)*Y	*+	
!!FG [[)V\\(*%MwW [[(()B84*+qcA3Z8L>QFQF#3401B8<23qcA3Z@L>QFQF+;<02HIQCRSQT:V !78I&
 01B8<'"b2()QC!:6R %&qc
 )*qc

 ./1#s< Q!Q  !"qc

 (A3*5'(R #$Q!Q  +,R Q!Q  $R $%&qc
 $)*qc
 $%&qc
 $ Q!Q  $!"Ru_	
bF+GbL+( [[$ !"#b"X. "D)B84Vb"XCdC-t4sQCjA	

0
0
0-U [[('"b2/"b:1#s4	
**6 [[Iy)*Y	*+	
  F [[\D%=9[[D\QC!:&D\QC!:&	

* :
* [[\D%=9[[fAA/0i Aq6Aq6"23	
* :** [[\D%=9[[B8Vb"X	
* :* [[.u>[[*49i049d3ib2RSTDQFQF+d3ib-BCD1AA'$s)T#Y)?@AA!qc
T#YK01		
1 ?1& [[.u>[[4D%?O"Da1#g!NOD$/?!CQ$q'] ST4/?!CQ!W MN*,DEqDQRG9}U	 CI 6QC@A3l;Q!WEF	
 1! ?"14499- [[#	
++r,   r   )"mathr   numpyr   rK  shapely.geometryr   r   r   r   r   r	   r@  r
   r   r   r   r   r   numpy.testingr   scipy.sparser   	HAS_SCIPYImportErrorr  r  r  r   rZ   skipusefixturesr   r   rS   r,   r)   <module>r     s         8 8 '  ,&I [[I6KL
K3 K3\[( [(~ 56 *  * 7  *Fl+ l+o  Is   C CC