
    jjQ                        S SK r S SKrS SKrS SKrS SKJr  S SKrS SKJ	r	  S SK
r
S SK
JrJrJr  S SKJrJr  S SKrS SKJrJr  \R*                  " S5        S SKrS SKJr  S SKJr  \R8                  " \R:                  R=                  \5      5      S	-  r S
 r!S r"S8S jr#\RH                  RK                  \
RL                  S:  SS9\RH                  RO                  SS\RP                  " S\RH                  RK                  \
RL                  S:  SS9S9/5      \RH                  RO                  S/ SQ5      \RH                  RO                  S/ SQ/ SQS9S 5       5       5       5       r)\RH                  RK                  \" \
RT                  5      \" S5      :  SS9\RH                  RO                  SS S!/5      S" 5       5       r+\RH                  RK                  \" \
RT                  5      \" S5      :  SS9\RH                  RO                  SS S!/5      S# 5       5       r,\RH                  RO                  SS S!/5      S$ 5       r-S% r.S& r/\RH                  RO                  S'S(S)/5      \RH                  RO                  S*/ S+Q5      S, 5       5       r0S- r1\ Rd                  S. 5       r3\RH                  RO                  SSS/5      \RH                  RO                  S/ SQ5      S/ 5       5       r4S0 r5\RH                  RK                  \" \
RT                  5      \" S5      :  SS9\RH                  RO                  SSS/5      \RH                  RO                  S/ SQ5      S1 5       5       5       r6\RH                  RK                  \" \
RT                  5      \" S5      :  SS9\RH                  RO                  SS S!/5      S2 5       5       r7S3 r8S4 r9\RH                  RO                  SSS/5      \RH                  RO                  S/ SQ5      S5 5       5       r:S6 r;S7 r<g)9    N)Version)
ArrowDtype)
MultiPointPointbox)GeoDataFrame	GeoSeries)assert_geodataframe_equalassert_geoseries_equalpyarrow)featherdatac                     [        [        R                  5      [        S5      :  a  U R                  $ [        R                  " U 5      $ N14.0.0)r   pa__version__	_pa_tabletabler   s    c/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/io/tests/test_geoarrow.pypa_tabler      0    r~~!22xx    c                     [        [        R                  5      [        S5      :  a  U R                  $ [        R                  " U 5      $ r   )r   r   r   	_pa_arrayarray)r   s    r   pa_arrayr   !   r   r   c                    U S   R                   n[        R                  R                  U5      (       Ga  U S   R	                  S5      R
                  nUS   R	                  S5      R
                  n[        R                  " U5      R                  [        R                  " U5      5      (       d   e[        R                  R                  [        R                  " U[        R                  " U5      S5      U S   R                   S9n[        R                  R                  [        R                  " U[        R                  " U5      S5      US   R                   S9nU R                  SU R                  R                  S5      U5      n UR                  SUR                  R                  S5      U5      nGO}[        R                  R                  U5      (       GaX  U S   R	                  S5      nUS   R	                  S5      n	[!        UR                   R"                  5       Ha  n
[        R                  " UR                  U
5      5      R                  [        R                  " U	R                  U
5      5      5      (       a  Ma   e   [        R$                  R                  [!        UR                   R"                  5       V
s/ s HM  n
[        R                  " UR                  U
5      [        R                  " UR                  U
5      5      S5      PMO     sn
['        U S   R                   5      S9n[        R$                  R                  [!        U	R                   R"                  5       V
s/ s HM  n
[        R                  " U	R                  U
5      [        R                  " U	R                  U
5      5      S5      PMO     sn
['        US   R                   5      S9nU R                  SU R                  R                  S5      U5      n UR                  SUR                  R                  S5      U5      nU R                  XS9(       a  g U R                  R                  UR                  5      (       d%  [)        SU R                   S	UR                   35      eU(       a  U R                  R                  UR                  S
S9(       dg  U R                  R*                  UR                  R*                  :X  d9  [)        SU R                  R*                   S	UR                  R*                   35      eU R                  R,                   HL  nU R                  R                  U5      R                  UR                  R                  U5      S
S9(       a  ML   e   U R.                   H  n[        R0                  " U R3                  U5      R4                  5      n[        R0                  " UR3                  U5      R4                  5      nUR                  U5      (       a  My  [)        SU SUR7                  U5       35      e   [)        S5      es  sn
f s  sn
f )Ngeometryr   g        )type   )fields)check_metadatazSchema not equal
Left:
z
Right:
TzMetadata not equal
Left:
zColumn 'z' not equal:
z#Tables not equal for unknown reason)r!   r   typesis_fixed_size_listchunkvaluespcis_nanequalsFixedSizeListArrayfrom_arraysreplace_with_mask
set_columnschemafield	is_structrange
num_fieldsStructArraylistAssertionErrormetadatanamescolumn_namesconcat_arrayscolumnchunksdiff)leftrightr$   	geom_typeleft_valuesright_values
left_geomsright_geomsleft_arr	right_arricola_lefta_rights                 r   assert_table_equalrL   (   s   Z %%I 
xx""9--:&,,Q/66Z(..q188yy%,,RYY|-DEEEE**66  bii.DcJj!&& 7 

 ++77  ryy/FLz"'' 8 
 q$++"3"3J"?L  ELL$6$6z$BKP			I	&	&
#))!,*%++A.	x}}//0A99X^^A./66ryyQRAS7TUUUU 1 ^^//
 x}}778	 9A $$NN1%ryy1B'CS 9	 Z(--. 0 

 nn00
 y~~889	 :A $$OOA&		)//!2D(Es :	 j)../ 1 
 q$++"3"3J"?L  ELL$6$6z$BKP{{5{8;;ell++'}Ju||nM
 	
 {{!!%,,t!D;;''5<<+@+@@$1$++2F2F1G H$||4457  ;;$$C;;$$S)00""3' 1     %
   !!$++c"2"9"9:""5<<#4#;#;<}}W%% 8C5v{{7?S>T!UVV	 ! >
??_s    AY*AY
)   	   r   z)Checking for empty is buggy with GEOS<3.9)reasondimxyxyz)rM   
   r   z)Cannot write 3D geometries with GEOS<3.10)marksgeometry_type)point
linestringpolygon
multipointmultilinestringmultipolygonzgeometry_encoding, interleaved))WKBNgeoarrowTr^   F)r\   zgeoarrow-interleavedzgeoarrow-separated)idsc                    [         S-  nXS:X  a  SOS-   n[        R                  " USU S3-  5      n[        R                  " US   5      US'   US   R                  S	5      US'   [        U5      nS UR                  R                  l	        US
:X  a  SU S3nOSU U(       a  SOS S3n[        R                  " XG-  5      n[        UR                  X#S95      n	U	R                  S 5      n	S n
US
:X  a}  US:X  aw  U R                  S5      (       aa  [        R                  " [         R"                  " UR                  R$                  ) 5      5      n
U	R'                  U
5      n	UR'                  U
5      n[)        X5        US
:w  a  U S:X  a  g [+        UR                  R                  X#S95      nU
b  UR'                  U
5      nUR-                  US   R/                  S5      5      (       d   eg )Nr^   rR   _z example-
-wkb.arrowr    
row_numberint32r\   z-interleaved.arrowgeometry_encodinginterleavedmultirV   r   )	DATA_PATHr   read_featherr	   from_wkbastyper   r    r   crs
read_tabler   to_arrowreplace_schema_metadata
startswithr   npasarrayis_emptyfilterrL   r   r+   r'   )rU   rP   rj   rk   	base_pathsuffixdffilenameexpectedresultmask_nonempty
result_arrs               r   test_geoarrow_exportr   v   s   6 J&IUld;F 
		iHVHJ*GG	HB'':7BzN,'..w7B|	b	B BKK E!fXZ0fXn%LFS!!)"67H 
&7QF ++D1FMU"5L$$W--
 R[[-A-A,A!BC}-??=1v( E!mw&> 	
/ 	 	
J
  &&}5
Xj177:;;;;r   z2.0.2z4from_ragged_array failing with read-only array inputencodingr\   r^   c                 h   [        SSSS5      n[        U/S/S/S.5      n[        UR                  U S95      n[        R                  " US[
        0S9n[        U[        5      (       d   e[        UR                  S	   [
        5      (       d   e[        UR                  S
   [
        5      (       d   eg )Nr   rS   r"   a)r    rH   srj   types_mapper)to_pandas_kwargsrH   r   )r   r   r   rs   
from_arrowr   
isinstancedtypes)r   ggdfr   gdf_roundtrips        r   test_geoarrow_to_pandas_kwargsr      s     	Aq"bA
QCqc>
?CS\\H\=>E ++ <M m\2222m**3/<<<<m**3/<<<<r   c                    [         R                  " S5        [        [        SSSS5      /SS9nUR                  R                  S5      US'   [        UR                  U S95      n[        R                  " UR                  R                  S	5      R                  S
   5      nUS   S   S   S:X  d   e[        R                  " UR                  R                  S5      R                  S
   5      nUS   S   S   S:X  d   e[        R                  " U5      n[        X5        UR                  R                  S:X  d   eUR                   R                  S:X  d   eg )Npyprojr   rS   	epsg:4326r    rq   z	epsg:3857geom2r   r       ARROW:extension:metadatarq   idcode  i  )pytestimportorskipr   r   r    to_crsr   rs   jsonloadsr0   r1   r8   r   r
   rq   r   )r   r   r   meta1meta2roundtrippeds         r   #test_geoarrow_multiple_geometry_crsr      s3    !
Q2r!2 3
EC<<&&{3CLcllXl>?FJJJ'001LME <f%---JJG$--.IJE <f%---**62Lc0<<{***99==K'''r   c                    [         R                  " S5        [         R                  " SSS9  [        [        SSSS5      /SSS	9nUR	                  U S
9R                  5       u  p#[        R                  R                  U5      nUR                  S:X  d   eU S:X  a  UR                  S   S:X  d    e [        R                  " UR                  S   5      nUS   S   S   S:X  d   e[        [        SSSS5      /5      nUR	                  U S
9R                  5       u  p#[        R                  R                  U5      nUR                  S:X  d   eg )Nr   r   r   
minversionr   rS   r   geom)rq   namer   r\      ARROW:extension:names   geoarrow.wkbr   rq   r   r   r   rc   )r   r   r	   r   rs   __arrow_c_array__r   Field_import_from_c_capsuler   r8   r   r   )r   gserschema_capsule_r1   metas         r   test_geoarrow_series_name_crsr      s9   
!
	h7c!QB'(kGDASSUNHH++N;E:: u 	./?B	! ::enn%@ABD;tV$,,, c!QB'()DASSUNHH++N;E::r   c                  N   [        [        SSSS5      /SS9n [        R                  " [        SS9   U R                  SS9  S S S 5        [        R                  " [        SS9   U R                  R                  SS9  S S S 5        g ! , (       d  f       NJ= f! , (       d  f       g = f)	Nr   rS   r   r   zExpected geometry encodingmatchinvalidr   )r   r   r   raises
ValueErrorrs   r    )r   s    r   "test_geoarrow_unsupported_encodingr     s    
Q2r!2 3
EC	z)E	Fy1 
G 
z)E	F	: 
G	F 
G	F 
G	Fs   B"B
B
B$c            
         [        S[        SS5      [        SSSS5      /0SS9n [        R                  " [
        SS9   U R                  SS	9  S S S 5        [        S[        SS5      [        S
S/5      /0SS9n [        U R                  SS	95      nUR                  R                  S5      R                  S   S:X  d   eg ! , (       d  f       Nx= f)Nr    r   rS   r   rq   z*Geometry type combination is not supportedr   r^   r   )r   r   )r"   r"   r   s   geoarrow.multipoint)r   r   r   r   r   r   rs   r   r   r0   r1   r8   r   r   s     r   "test_geoarrow_mixed_geometry_typesr     s    
	eAqk3q!R#456C
 
z)U	Vz2 
W 	eAqk:vv.>#?@AC cllZl@AFJ'001HI!	"	" 
W	Vs   C  
CrA   rV   rX   zencoding, interleaved))r\   Tr]   r_   c                    [        US:X  a  [        SS5      O[        SSSS5      S /SS9nU S:X  ae  US:X  a_  U(       aX  [        [        R
                  5      [        S5      :  a2  [        R                  " [        SS	9   UR                  XS
9  S S S 5        g [        UR                  XS
95      nUS   R                  S:X  d   eUS   R                  5       R                  5       SS/:X  d   eg ! , (       d  f       g = f)NrV   r   rS   r   r   r^   z15.0.0z@Converting point geometries with missing values is not supportedr   ri   r    r"   FT)r   r   r   r   r   r   r   r   r   rs   r   
null_countis_null	to_pylist)r   rk   rA   r   r   s        r   test_geoarrow_missingr   *  s     !*g!5%1+3q!R;LdSC
 	J BNN#gh&77]]T
 LL8LM	

 	cllXlWXF*((A---*%%'113t}DDD
 

 	s   =C--
C;c            	      r   [        S[        SS5      [        SS5      [        5       /05      n [        U R                  SS95      nUS   R                  R
                  R                  S:X  d   eUS   R                  R                  S:X  d   e[        U R                  SSS	95      nUS   R                  R
                  R                  S
:X  d   eUS   R                  R                  S:X  d   e[        R                  " US   R                  S5      R                  R                  5       SS S2   5      R                  5       (       d   e[        S[        SSS5      [        SSS5      [        5       /05      n [        U R                  SS95      nUS   R                  R
                  R                  S
:X  d   eUS   R                  R                  S:X  d   e[        U R                  SSS	95      nUS   R                  R
                  R                  S:X  d   eUS   R                  R                  S:X  d   eg )Nr    r   r"   r^   r   rQ      T)rj   	include_zrR   rM   F)r   r   r   rs   r!   value_fieldr   	list_sizerv   isnanr'   r(   to_numpyall)r   r   s     r   test_geoarrow_include_zr   F  s   

U1a[%1+uw$GH
ICS\\J\?@E!!--22d:::!!++q000S\\J$\OPE!!--22e;;;!!++q00088E*%++A.55>>@AFGKKMMMM

U1a^U1a^UW$MN
OCS\\J\?@E!!--22e;;;!!++q000S\\J%\PQE!!--22d:::!!++q000r   c               #      #    [         R                  " S5      n U R                  5          S v   U R                  5         g ! U R                  5         f = f7f)Ngeoarrow.pyarrow)r   r   register_extension_typesunregister_extension_types)gps    r   with_geoarrow_extension_typesr   ]  sB     			/	0B!(
%%'%%'s   'A? AAAc                 6   [         S-  nXS:X  a  SOS-   n[        R                  " USU S3-  5      n[        R                  " US   5      US'   US   R                  S	5      US'   [        U5      nS UR                  R                  l	        [        R                  " S
5        [        5          [        UR                  SS95      n[        US   R                   ["        R$                  5      (       d   e[        UR                  SS95      n[        US   R                   ["        R$                  5      (       d   e[        UR                  SSS95      n[        US   R                   ["        R$                  5      (       d   e S S S 5        g ! , (       d  f       g = f)Nr^   rR   rb   rc   rd   re   r    rf   rg   r   r\   r   Fri   )rm   r   rn   r	   ro   rp   r   r    r   rq   r   r   r   r   rs   r   r!   r   ExtensionTyperU   rP   rz   r{   r|   result1result2result3s           r   )test_geoarrow_export_with_extension_typesr   g  s[    J&IUld;F 
		iHVHJ*GG	HB'':7BzN,'..w7B|	b	B BKK
*+	&	(2;;;?@'*-22B4D4DEEEE2;;;DE'*-22B4D4DEEEE2;;QV;WX'*-22B4D4DEEEE 
)	(	(s   ,CF


Fc                  *   [        SS/SS9n [        S/S /S.SS9n[        R                  " [        5         U R	                  SS9  S S S 5        [        R                  " [        5         UR	                  SS9  S S S 5        [        U R	                  S	S95      n[         R                  " U5      n[        X5        [        UR	                  S	S95      n[         R                  " U5      n[        X5        g ! , (       d  f       N= f! , (       d  f       N= f)
NrI   r    )columnsr    r"   )rI   r    r    r^   r   r\   )r   r   r   NotImplementedErrorrs   r   r   r
   )	gdf_emptygdf_all_missingr   r   s       r   test_geoarrow_export_emptyr     s    eZ%8:NI"$(:O
 
*	+Z8 
, 
*	+  : > 
, i((5(ABF**62Li6o...GHF**62Lo< 
,	+ 
,	+s   C3(D3
D
Dc                 L   [         S-  nXS:X  a  SOS-   n[        R                  " USU S3-  5      n[        R                  " US   5      US'   [        U5      nS UR                  l        [        R                  " USU S3-  5      n[
        R                  " U5      n[        Xd5        [        R                  " USU S3-  5      n[
        R                  " U5      n[        X5        [        R                  " USU S	3-  5      n	[
        R                  " U	5      n
[        X5        g )
Nr^   rR   rb   rc   rd   re   r    z-interleaved.arrowrh   )rm   r   rn   r	   ro   r   r    rq   rr   r   r
   )rU   rP   rz   r{   r|   table1r   table2r   table3r   s              r   test_geoarrow_importr     s   " J&IUld;F 
		iHVHJ*GG	HB'':7BzN	b	BBKKO	hvhj,I IJF%%f-Gg*	hvh>P,Q QRF%%f-Gg*	hvhf,E EFF%%f-Gg*r   c                 R   [         R                  " S5        [        [        SSSS5      /S9nUR                  R
                  US'   [        R                  " [        UR                  U S95      5      n[        X!5        UR                  S:X  d   e[        R                  " [        US/   R                  U S95      5      nUR                  S:X  d   e[        R                  " [        UR                  U S95      SS9nUR                  S:X  d   e[        X!R                  S5      5        g )Nr   r   rS   r   centroidr   r    )r   r   r   r   r    r   r   r   rs   r
   active_geometry_nameset_geometry)r   r   r   s      r   $test_geoarrow_import_geometry_columnr     s
    !
Q2r!2 3
4Cll++C
O$$XcllXl.V%WXFf*&&*444$$j\"++h+GHF &&*444$$9:ZF &&*444f&6&6z&BCr   c                     [         R                  " SSS9  [        R                  " / SQ/ SQS.5      n [         R                  " [
        SS9   [        R                  " U 5        S S S 5        [         R                  " [
        S	S9   [        R                  " U S
   R                  S5      5        S S S 5        g ! , (       d  f       NY= f! , (       d  f       g = f)Nr   r   r   )r   r"   r   )g?g?g333333?)r   bzNo geometry column foundr   z No GeoArrow geometry field foundr   r   )
r   r   r   r   r   r   r   r   r	   r'   r   s    r   %test_geoarrow_import_missing_geometryr     s    
	h7HH9?;<E	z)C	D& 
E 
z)K	LU3Z--a01 
M	L 
E	D 
M	Ls   B6)C6
C
Cc            	          [         R                  " SSS9  [        SS/0[        SSSS5      /S9n [        R                  " U R                  5       5      n[        X5        g )	Nr   r   r   rI   r"   r   rS   r   )r   r   r   r   r   rs   r
   r   s     r   &test_geoarrow_import_capsule_interfacer     sP    
	h7
s|s1aR/@.A
BC$$S\\^4Ff*r   c           
         [         R                  " S5        [        S-  nXS:X  a  SOS-   n[        R                  " USU S3-  5      n[
        R                  " US   5      US'   [        US	S
9n[         R                  " S5        [        5          [        R                  " [        UR                  SS95      5      n[        XT5        [        R                  " [        UR                  SS95      5      n[        Xd5        [        R                  " [        UR                  SSS95      5      n[        Xt5        S S S 5        g ! , (       d  f       g = f)Nr   r^   rR   rb   rc   rd   re   r    	EPSG:3857r   r   r\   r   Fri   )r   r   rm   r   rn   r	   ro   r   r   r   r   rs   r
   r   s           r   )test_geoarrow_import_from_extension_typesr     s    !J&IUld;F 
		iHVHJ*GG	HB'':7BzN	bk	*B
*+	&	())R[[5[9:
 	"'.))R[[:[>?
 	"'.))R[[:5[QR
 	"'. 
)	(	(s   B'D??
Ec                     [         R                  " S5        [         R                  " S5      n [        R                  " SS/SS9n[	        5          U R                  UR                  SS95      n[        R                  " U5      n[        X15        U R                  UR                  S	S95      n[        R                  " U5      n[        X15        S
Ul	        U R                  UR                  5       5      n[        R                  " U5      nUR                  b   e[        R                  " USS9n[        X15        S S S 5        g ! , (       d  f       g = f)Nr   r   zPOINT (1 1)zPOINT (2 2)r   r   r\   r   r^   r   test)r   )
r   r   r	   from_wktr   r   rs   r   r   r   )r   serarrr   s       r   test_geoarrow_import_geoseriesr     s   
!			/	0B


m];
MC	&	(hhs||e|<=%%c*v+hhs||j|AB%%c*v+ hhs||~&%%c*{{"""%%c7v+! 
)	(	(s   C*E
Ec            	         [        SS/0[        SSSS5      /S9n [        U R                  5       5      nUR                  nUR                  S5      R                  SSS	.5      n[        R                  " UR                  S5      U/5      nUR                  U5      n[        R                  " [        S
S9   [         R                  " U5        S S S 5        g ! , (       d  f       g = f)NrI   r"   r   rS   r   r    s   geoarrow.unknowns   {})r   r   zUnknown GeoArrow extension typer   )r   r   r   rs   r0   r1   with_metadatar   castr   r   	TypeErrorr   )r   r   r0   	new_field
new_schema	new_tables         r   *test_geoarrow_import_unknown_geoarrow_typer   /  s    
s|s1aR/@.A
BCS\\^$E\\FZ(66%8).	
I FLLOY78J

:&I	y(I	J	* 
K	J	Js   4C
C")T)=
contextlibr   ospathlibpackaging.versionr   numpyrv   pandasr   shapelyr   r   r   	geopandasr   r	   r   geopandas.testingr
   r   r   r   r   pyarrow.computecomputer)   r   Pathpathdirname__file__rm   r   r   rL   markskipifgeos_versionparametrizeparamr   r   r   r   r   r   r   r   r   contextmanagerr   r   r   r   r   r   r   r   r   r    r   r   <module>r     s?     	  %    * * -  O   I    LL23f<	K@\ 9$6   	++$$$$z1B % 	
	 W $<=  
4<		44<n G 77#33A   eZ%89
= :	

= G 77#33A   eZ%89( :	
(, eZ%89 :.;( w	&:;UE <E01. ( ( u.WF	 /
F4=. G 77#33A   u.
+
 /	 +. G 77#33A   eZ%89D :	
D,2+ u.W/	 /
/>,0+r   