
    hp                        d dl Z d dlZd dlZd dlZd dlZ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mZmZ d dlmZ d dlmZ d dlmZmZmZmZ d dlmZmZ d dlZd dl m!Z!m"Z" d dl#m$Z$ d dl%m&Z& d d	l'm(Z(m)Z)  G d
 d      Z*ejV                  jY                  d      d        Z-d Z.ejV                  j_                  ej`                   d      d        Z1ejV                  j_                  ej`                   d      d        Z2d Z3 G d d      Z4y)    N)GeometryCollection
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)BaseGeometry)GeoDataFrame	GeoSeriesclip	read_file)GeometryArrayGeometryDtype)assert_geoseries_equalgeom_almost_equals)geom_equals)assert_array_equal)assert_index_equalassert_series_equalc                      e Zd Zd Zd Zd Zd Zd Zej                  j                  ej                   d      d        Zd	 Zd
 Zd Zd Zd Zd Zej                  j                  ej(                   d      d        Zd Zd Zd Zd Zd Zd Zej                  j                  ej                   d      d        Zd Zd Zej                  j                  ej                   d      d        Zd Z d Z!ej                  j                  ej                   d      d        Z"ej                  j                  ej                   d      d        Z#d  Z$d! Z%d" Z&d# Z'ej                  j                  ej                   d      d$        Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8ej                  j                  ej                  d5      d6        Z9y7)8
TestSeriesc                    t        j                         | _        t        g d      | _        t        g d      | _        t        g d      | _        t        | j                  | j                  g      | _        t        | j                  | j                  g      | _	        t        | j                  | j
                  gd      | _
        t        | j
                  | j                  g      | _        t        | j                  | j
                  t               g      | _        t        | j                  | j
                  d g      | _        | j                  j                         | _        ddg| j                  _        | j                  j                         | _        ddg| j"                  _        t%        d	d
      | _        t%        dd      | _        t        | j&                  | j(                  gd      | _        t-        g d      | _        t-        g d      | _        t        | j.                  | j0                  g      | _        t%        dd      | _        t%        dd      | _        t        | j4                  | j6                  gd      | _        y )N)r   r      r   r   r   )r   r   r   r   r   r   r   r   	epsg:4326crsABCg&SRg):_D@gYڂRg ~:XD@)r   r   r   Yj_>PRA_kq_<7RAz	epsg:3857)tempfilemkdtemptempdirr	   t1t2sqr   g1g2g3g4nana_nonecopya1indexa2r   esbsol	landmarksr   l1l2g5esb3857sol3857landmarks3857selfs    Q/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/test_geoseries.pysetup_methodzTestSeries.setup_method"   s   '')2323:;TWWdgg./TWWdgg./TWWdgg.K@TWWdgg./TWWdggwy9: $''477D!9:'',,.c
'',,.c
7+7+"DHHdhh#7[I56=>TWWdgg.//1BC/1BC&dll'CU    c                 B    t        j                  | j                         y N)shutilrmtreer,   rC   s    rE   teardown_methodzTestSeries.teardown_method;   s    dll#rG   c                     | j                   j                         }t        |      t        u sJ | j                   j                  |j                  k(  sJ | j                   j
                  |j
                  k(  sJ y rI   )r2   r6   typer   namer"   )rD   gcs     rE   	test_copyzTestSeries.test_copy>   sW    WW\\^Bx9$$$ww||rww&&&ww{{bff$$$rG   c                 (   | j                   | j                  v sJ | j                  | j                  v sJ | j                   | j                  v sJ | j                  | j
                  v sJ | j                  | j
                  vsJ d| j
                  vsJ y )N   )r-   r0   r/   r7   r.   r2   rC   s    rE   test_inzTestSeries.test_inD   s    ww$''!!!ww$''!!!ww$''!!!ww$''!!!wwdgg%%%rG   c                     | j                   j                  | j                        \  }}t        |t              sJ t        |t              sJ |d   J |d   j                  |d         sJ |d   J y )Nr#   r$   r%   )r7   alignr9   
isinstancer   equals)rD   r7   r9   s      rE   
test_alignzTestSeries.test_alignL   sr    tww'B"i((("i(((#w#w~~bg&&&#wrG   pyproj not availablereasonc                 d   | j                   j                  d      }| j                  j                  d      }|j                  |      \  }}|j                  dk(  sJ |j                  dk(  sJ |j                  |j                  d d            \  }}|j                  dk(  sJ |j                  J y )Nr    z
epsg:31370Tallow_override)r7   set_crsr9   rV   r"   )rD   r7   r9   res1res2s        rE   test_align_crszTestSeries.test_align_crsT   s    WW__[)WW__\*XXb\
dxx;&&&xx<'''XXbjjdjCD
dxx;&&&xxrG   c                     | j                   }t        j                  ddgddg      }|j                  |      \  }}t        j                  t        j
                  ddgg d      }t        ||       y )Nr      r$   r%   r8   r#   r$   r%   )r7   pdSeriesrV   npnanr   )rD   r7   s2ra   rb   exp2s         rE   test_align_mixedzTestSeries.test_align_mixeda   sX    WWYY1vc3Z0XXb\
dyy"&&!Q?D$'rG   c                 X   t        j                  t        d      5  | j                  j	                  | j
                         d d d        t        j                  t        d      5  | j                  j                  | j
                         d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)NzThe indices .+ not equalmatch)pytestwarnsUserWarningr7   containsr9   unionrC   s    rE   test_warning_if_not_alignedz&TestSeries.test_warning_if_not_alignedi   s}    
 \\+-GH 	&GGTWW%	& \\+-GH 	#GGMM$''"	# 	#		& 	&	# 	#s   &B%&B B B)c                    | j                   j                  | j                        \  }}t        j                  d      5 }|j                  |       | j                  j                  | j                         |j                  |       | j                  j                  | j                         d d d        D cg c]  }|j                  t        u s| }}|rJ |d   j                         y # 1 sw Y   BxY wc c}w )NTrecordr   )r7   rV   r9   warningscatch_warningsru   r0   
intersectsr1   rv   intersectioncategoryrt   message)rD   r7   r9   rz   wuser_warningss         rE   test_no_warning_if_alignedz%TestSeries.test_no_warning_if_alignedu   s     tww'B$$D1 	*VKKOGGtww'HHRLGG  )		* %+HqajjK.GHH :-"2":":: =	* 	* Is   A-C-8C9C9-C6c                     t        j                  | j                  j                  | j                              sJ t	        | j                  j                  | j
                        ddg       y )NFT)rj   allr0   r   r   r/   rC   s    rE   test_geom_equalszTestSeries.test_geom_equals   sH    vvdgg))$''2333477..tww7%GrG   c                 <   | j                   j                  | j                  d      }t        j                  g dg d      }t        ||       | j                   j                  | j                  d      }t        j                  ddgddg      }t        ||       y )	NTrV   FTFrg   rf   Fr#   r$   )r7   r   r9   rh   ri   r   )rD   aexps      rE   test_geom_equals_alignz!TestSeries.test_geom_equals_align   sy    GGt4ii,ODAs#GGu5iisCj9As#rG   c                 6   t        j                  | j                  j                  | j                  d            sJ t	        | j                  j                  | j
                  d      ddg       t        j                         5  t        j                  ddt               t	        | j                  j                  | j                  dd      g d       d d d        t	        | j                  j                  | j                  dd      ddg       y # 1 sw Y   >xY w)NgMbP?FTignorez:The indices of the left and right GeoSeries' are not equalr   r   )rj   r   r0   geom_equals_exactr   r/   r{   r|   filterwarningsrt   r7   r9   rC   s    rE   test_geom_equals_exactz!TestSeries.test_geom_equals_exact   s    vvdgg//?@@@47744TWWeDudmT$$& 		##L
 ))$''5)E$		 	GG%%dgguE%BUEN	
		 		s   ADDzrequires Shapely>=2.1c                    t        j                  | j                  j                  | j                              sJ t	        | j                  j                  | j
                        ddg       t	        | j                  j                  | j                  d      g d       t	        | j                  j                  | j                  d      ddg       y )NFTr   r   )rj   r   r0   geom_equals_identicalr   r/   r7   r9   rC   s    rE   test_geom_equals_identicalz%TestSeries.test_geom_equals_identical   s    vvdgg33DGG<===47788AE4=QGG))$'')> 	
 	GG))$'')?%	
rG   c           	          t        t        d      D cg c]  }t        ||       c}      }|t        dd      k(  }t        j                  g d      }t        ||       y c c}w )N   r   r   )r   ranger   rh   ri   r   )rD   xsresr   s        rE   test_equal_comp_opzTestSeries.test_equal_comp_op   sO    E!H5quQ{565A;ii,-C% 6s   A c                    t         j                  j                  | j                  d      }| j                  j                  |       t        j                  |      }t        | j                  j                  |            sJ y)zTest to_file and from_fileztest.shpN)
ospathjoinr,   r2   to_filer   	from_filer   r   )rD   tempfilenamer   s      rE   test_to_filezTestSeries.test_to_file   sW    ww||DLL*=%-477&&q)***rG   c                     | j                   j                         }t        j                  |      }d|d   d   j	                         v sJ d|d   d   j	                         v sJ y)zW
        Test whether GeoSeries.to_json works and returns an actual json file.
        idfeaturesr   bboxNr2   to_jsonjsonloadskeysrD   json_strdatas      rE   test_to_jsonzTestSeries.test_to_json   sd     77??$zz(#tJ'*//1111j)!,113333rG   c                     | j                   j                  d      }t        j                  |      }d|d   d   j	                         vsJ y)zL
        Test whether GeoSeries.to_json works when drop_id is True.
        T)drop_idr   r   r   Nr   r   s      rE   test_to_json_drop_idzTestSeries.test_to_json_drop_id   sG     77??4?0zz(#4
+A.335555rG   c                     | j                   j                  d      }t        j                  |      }d|d   d   j	                         vsJ y)zO
        Test whether GeoSeries.to_json works when show_bbox is False.
        F)	show_bboxr   r   r   Nr   r   s      rE   test_to_json_no_bboxzTestSeries.test_to_json_no_bbox   sG     77??U?3zz(#T*-a0557777rG   c                     | j                   j                  dd      }t        j                  |      }d|d   d   j	                         vsJ d|d   d   j	                         vsJ y)	zk
        Test whether GeoSeries.to_json works when show_bbox is False
        and drop_id is True.
        FT)r   r   r   r   r   r   Nr   r   s      rE   test_to_json_no_bbox_drop_idz'TestSeries.test_to_json_no_bbox_drop_id   sj    
 77??UD?Azz(#4
+A.335555T*-a0557777rG   Requires pyprojc                    | j                   j                  d      }t        j                  |      }|d   dk(  sJ d|d   d   j	                         v sJ |d   d   d   d	   }|d   d
   d   d	   }t
        j                  j                  || j                  j                  d          t
        j                  j                  || j                  j                  d          y)zF
        Test whether the wgs84 conversion works as intended.
        T)to_wgs84rN   FeatureCollectionr   r   r   geometrycoordinatesr   N)rB   r   r   r   r   rj   testingassert_allcloser:   coordsr;   rD   textr   coord1coord2s        rE   test_to_json_wgs84zTestSeries.test_to_json_wgs84   s    
 !!))4)8zz$F|2222tJ'*//1111j!!$Z0?j!!$Z0?


""6488??1+=>


""6488??1+=>rG   c                     | j                   j                         }t        j                  |      }|d   d   d   d   }|d   d   d   d   }|ddgk(  sJ |dd	gk(  sJ y
)z/
        Ensure no conversion to wgs84
        r   r   r   r   r   r&   r'   r(   r)   N)rB   r   r   r   r   s        rE   test_to_json_wgs84_falsez#TestSeries.test_to_json_wgs84_false   s     !!))+zz$j!!$Z0?j!!$Z0?,.?@@@@,.?@@@@rG   c                 D   t        j                  | j                  j                  | j                  j	                                     sJ t        j                  | j
                  j                  | j
                  j	                                     sJ t        j                  | j                  j                  | j                  j	                                     sJ t        j                  | j                  j                  | j                  j	                                     sJ y rI   )rj   r   r0   ru   representative_pointr1   r2   r3   rC   s    rE   test_representative_pointz$TestSeries.test_representative_point   s    vvdgg&&tww'C'C'EFGGGvvdgg&&tww'C'C'EFGGGvvdgg&&tww'C'C'EFGGGvvdgg&&tww'C'C'EFGGGrG   c                    | j                   j                  d      }|j                  d      }t        | j                   |      sJ t        j                  t
              5  | j                  j                  d       d d d        t        j                  t
              5  | j                   j                  d d        d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY w)Ni&i  epsg  )r"   r   )r<   to_crsr   rr   raises
ValueErrorr0   )rD   utm18nlonlats      rE   test_transformzTestSeries.test_transform   s    &&E&2D)!$..&999]]:& 	&GGNNN%	&]]:& 	7NN!!d!6	7 	7	& 	&	7 	7s    CCCCc                     t        j                  d      }| j                  j                         |j	                  d      k(  sJ | j                  j                  d      |j	                  d      k(  sJ y )Npyproj
EPSG:32618NAD83z
EPSG:26918)rr   importorskipr<   estimate_utm_crsCRSrD   r   s     rE   !test_estimate_utm_crs__geographicz,TestSeries.test_estimate_utm_crs__geographic
  s\    $$X.~~..0FJJ|4LLLL~~..w76::l;SSSSrG   c                     t        j                  d      }| j                  j                  d      j	                         |j                  d      k(  sJ y )Nr   z	EPSG:3857r   )rr   r   r<   r   r   r   r   s     rE    test_estimate_utm_crs__projectedz+TestSeries.test_estimate_utm_crs__projected  sK    $$X.~~$$[1BBD

I
 
 	
 
rG   c                     t        j                  t        d      5  t        t	        g d      gd      j                          d d d        y # 1 sw Y   y xY w)NzUnable to determine UTM CRSrp   )r   Z   )r   r   )re   r   	EPSG:4326r!   rr   r   RuntimeErrorr   r	   r   rC   s    rE   $test_estimate_utm_crs__out_of_boundsz/TestSeries.test_estimate_utm_crs__out_of_bounds  sE    ]]</LM 	!456K 	! 	! 	!s   (AAc                     t        j                  t        d      5  t        t	        g d      g      j                          d d d        y # 1 sw Y   y xY w)Nzcrs must be setrp   r   r   rC   s    rE   "test_estimate_utm_crs__missing_crsz-TestSeries.test_estimate_utm_crs__missing_crs  sD    ]]</@A 	Qw:;<=NNP	Q 	Q 	Qs   &AAc                     | j                   j                         }t        |d   t              sJ |d   j                  sJ t        | j                   d d |d d       sJ y )Nre   )r5   fillnarW   r
   is_emptyr   )rD   r4   s     rE   test_fillnazTestSeries.test_fillna!  sY    \\  ""Q%...!u~~~4<<+RV444rG   c                 V   t        | j                  | j                  j                  ddddf         sJ t        | j                  ddg   | j                  j                  ddddf         sJ t        | j                  ddg   | j                  j                  ddddf         sJ y)zTest CoordinateSlicerNTF?皙?r   g      ?)r   r2   cxrC   s    rE   test_coord_slicezTestSeries.test_coord_slice*  s     477DGGJJq!t$4555477D%=1477::cdDSDj3IJJJ477E4=1477::aeSWn3MNNNrG   c           	         t        t        dd      D cg c]  }t        ||       c}      }t        |j                  d dd df   |j
                  d d       sJ t        |j                  d d d df   |j
                  d d       sJ t        |j                  d dd d f   |j
                  d d       sJ t        |j                  dd dd f   |j
                  dd        sJ t        |j                  dd d d f   |j
                  dd        sJ t        |j                  d d dd f   |j
                  dd        sJ y c c}w )N   r   r   )r   r   r   r   r   loc)rD   r   gss      rE   test_coord_slice_with_zeroz%TestSeries.test_coord_slice_with_zero1  s&    U2q\:a:;255!RaR="&&!*555255BQB<444255!Q<444255QR="&&*555255Q<444255AB<444 ;s   Ec                     | j                   j                  d   dk(  sJ t        | j                   j                  d         | j                   j                  d   k(  sJ y )NrN   r   r   r   )r0   __geo_interface__lenshaperC   s    rE   test_geoseries_geointerfacez&TestSeries.test_geoseries_geointerface<  sO    ww((04GGGG477,,Z89TWW]]1=MMMMrG   c                 ~   | j                   j                  d      }|j                  d      }t        | j                   |      sJ | j                   j                  ddd      }|j                  d      }t        | j                   |      sJ | j                   j                         j	                  dd	      }|j                  ddd      }|j                  d      }t        | j                   |      sJ | j                   j                  d      }| j                   j                  ddd      }t        ||      sJ y )
Nz+proj=utm +zone=30r   r   utm30)projzoner    Tr^   )r2   r   r   r6   r`   )rD   reprojectedreprojected_backr6   reprojected_stringreprojected_dicts         rE   test_proj4stringszTestSeries.test_proj4strings@  s    ggnn%9:&--4-8!$''+;<<< ggnneT%BC&--4-8!$''+;<<< ww||~%%k$%Gkk5$"?@&--4-8!$''+;<<< "WW^^,@A77>>5$*GH!"46FGGGrG   c                     t        | j                  t        j                  | j                  j
                  | j                  j
                  g             y rI   )r   r0   r   from_wkbr-   wkbr/   rC   s    rE   test_from_wkbzTestSeries.test_from_wkbW  0    tww	(:(:DGGKK;U(VWrG   c                    d}d}t        j                  t        |      5  t        j                  |gd       d d d        t        j
                  t        |      5  t        j                  |gd      }d d d        d   J t        j                         5  t        j                  d       t        j                  |gd	      }d d d        |d   J y # 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   )xY w)
N201020000000100000000000000000008400000000000000840)point array must contain 0 or >1 elementsrp   raise
on_invalidwarnr   errorr   )
rr   r   	Exceptionr   r	  rs   Warningr{   r|   simplefilter)rD   invalid_wkb_hexr   r   s       rE   test_from_wkb_on_invalidz#TestSeries.test_from_wkb_on_invalidZ  s    N=]]9G4 	F0WE	F \\'1 	K$$o%66JC	K1v~~$$& 	M!!'*$$o%68LC	M 1v~~	F 	F	K 	K	M 	M#   CC".C.C"C+.C7c                 4   t        j                  | j                  j                  | j                  j                  gddg      }| j
                  j                         }t        j                  ddg      |_        t        |t        j                  |             y Nr   re   rf   )rh   ri   r-   r
  r/   r0   r6   Indexr8   r   r   r	  rD   r   expecteds      rE   test_from_wkb_serieszTestSeries.test_from_wkb_seriesk  c    IItww{{DGGKK0A?77<<>1a&)x););A)>?rG   c                    dg}t        j                  | j                  j                  | j                  j                  gddg      }| j
                  j                  |      }t        |t        j                  ||             y Nr   re   rf   )
rh   ri   r-   r
  r/   r0   reindexr   r   r	  rD   r8   r   r  s       rE   test_from_wkb_series_with_indexz*TestSeries.test_from_wkb_series_with_indexq  [    IItww{{DGGKK0A?77??5)x););AU)KLrG   c                     t        | j                  t        j                  | j                  j
                  | j                  j
                  g             y rI   )r   r0   r   from_wktr-   wktr/   rC   s    rE   test_from_wktzTestSeries.test_from_wktw  r  rG   c                    d}d}t        j                  t        |      5  t        j                  |gd       d d d        t        j
                  t        |      5  t        j                  |gd      }d d d        d   J t        j                         5  t        j                  d       t        j                  |gd	      }d d d        |d   J y # 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   )xY w)
NzLINESTRING(0 0)r  rp   r  r  r  r   r  r   )
rr   r   r  r   r)  rs   r  r{   r|   r  )rD   invalid_wktr   r   s       rE   test_from_wkt_on_invalidz#TestSeries.test_from_wkt_on_invalidz  s    '=]]9G4 	B}A	B \\'1 	G$$k]vFC	G1v~~$$& 	I!!'*$$k]xHC	I 1v~~	B 	B	G 	G	I 	Ir  c                 4   t        j                  | j                  j                  | j                  j                  gddg      }| j
                  j                         }t        j                  ddg      |_        t        |t        j                  |             y r  )rh   ri   r-   r*  r/   r0   r6   r  r8   r   r   r)  r  s      rE   test_from_wkt_serieszTestSeries.test_from_wkt_series  r!  rG   c                    dg}t        j                  | j                  j                  | j                  j                  gddg      }| j
                  j                  |      }t        |t        j                  ||             y r#  )
rh   ri   r-   r*  r/   r0   r$  r   r   r)  r%  s       rE   test_from_wkt_series_with_indexz*TestSeries.test_from_wkt_series_with_index  r'  rG   c                    t        t        j                  | j                  j                  | j
                  j                  g      | j                  j                                t        t        j                  | j                  j                  | j
                  j                  g      | j                  j                  d             y )NT)hex)	r   rh   ri   r-   r
  r/   r0   to_wkbwkb_hexrC   s    rE   test_to_wkbzTestSeries.test_to_wkb  so    BIItww{{DGGKK&@A477>>CSTIItww89477>>d>;S	
rG   c                     t        t        j                  | j                  j                  | j
                  j                  g      | j                  j                                y rI   )r   rh   ri   r-   r*  r/   r0   to_wktrC   s    rE   test_to_wktzTestSeries.test_to_wkt  s5    BIItww{{DGGKK&@A477>>CSTrG   c                     t        |      }t        |      }||d   dk(     }t        |j                  |      }|j                  j                  |      }t        ||       y )N	continentSouth America)r   r   r   r   )rD   naturalearth_lowresnaturalearth_citiesleftworldsouth_americar  results           rE   	test_clipzTestSeries.test_clip  sZ    ,--.eK0OCD}5##M2vx0rG   c                    t        |      }t        |      }||d   dk(     }t        ||d      }t        ||d      }t        j                  g d      }t	        |j
                        |j
                  k(  j                         rJ t	        |j
                        |j
                  k(  j                         sJ t        ||j
                         y)z;
        Test sorting of geodseries when clipping.
        r<  r=  F)sortT)7   ;   >   X   e   r   z                           N)r   r   rh   r  sortedr8   r   r   )	rD   r?  r>  citiesrA  rB  unsorted_clipped_citiessorted_clipped_citiesexpected_sorted_indexs	            rE   test_clip_sortingzTestSeries.test_clip_sorting  s     ./-.eK0OCD"&v}5"I $V] F "S!

 *0015L5R5RR
#% 	  (../3H3N3NN
#% 	  	02G2M2MNrG   c           	         | j                   j                  j                  }| j                   j                  j                  }| j                   j                  j                         }| j                   j                  }t        | j                   t        j                  ||||             t        | j                   t        j                  | j                   j                  | j                   j                  |             y )Nr8   r"   r!   )
r<   r   valuesyr8   tolistr"   r   r   from_xy)rD   r   r_  r8   r"   s        rE   test_from_xy_pointszTestSeries.test_from_xy_points  s    NN##NN##$$++-nn  NNI--a%SI	
 	NNdnn..0@0@cJ	
rG   c           	      F   g d}t        j                  g d|      }t        j                  g d|      }t        j                  g d|      }t        t        ddd      t        d	d
d      t        ddd      g|      }t	        |t        j
                  |||             y )N)rS         )r   re   rf   )   r   r   )rS   re  r   rg  rS   rf  r   rh  re   r   re  )rh   ri   r   r   r   ra  )rD   index_valuesr   r_  zr  s         rE   test_from_xy_points_w_zz"TestSeries.test_from_xy_points_w_z  s     IIj5IIi|4IIj51a^U2q"-uQ1~>l
 	x):):1a)CDrG   c           	         | j                   j                  }| j                   j                  }t        j                  t        |             |_        | j                   j                  }t        | j                   t        j                  |||j                  |             | j                   j                         }|j                  dd       t        |t        j                  |||             y )Nr]  T)inplacedropr!   )r<   r   r_  rj   aranger   r8   r"   r   r   ra  r6   reset_index)rD   r   r_  r"   unindexed_landmarkss        rE   !test_from_xy_points_unequal_indexz,TestSeries.test_from_xy_points_unequal_index  s    NNNN99SV$$nn  NNI--a!''sK	
 #nn113''4'@a,	
rG   c                    t        j                  ddg      }t        j                  ddg      }t        j                  ddg      }t        t        ddd	      t        d
dd      g      }t	        |t        j
                  |||             y )Ng        g      @g       @g      @g      g      @r   re   rf  r   rS   r   )rj   arrayr   r   r   ra  )rD   r   r_  rj  r  s        rE   test_from_xy_points_indexlessz(TestSeries.test_from_xy_points_indexless  sp    HHc3Z HHc3Z HHdC[!eAq"ouQ1~>?x):):1a)CDrG   zpyproj installedc                     t        j                  t        d      5  | j                  j	                  d       d d d        y # 1 sw Y   y xY w)Nz,The 'pyproj' package is required for set_crsrp   i  )rr   r   ImportErrorr0   r`   rC   s    rE   test_set_crs_pyproj_errorz$TestSeries.test_set_crs_pyproj_error  s;    ]]M
 	" GGOOD!	" 	" 	"s   AA
N):__name__
__module____qualname__rF   rL   rQ   rT   rY   rr   markskipifcompat
HAS_PYPROJrc   rn   rw   r   r   r   r   SHAPELY_GE_21r   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.  r0  r2  r7  r:  rD  r[  rb  rk  rr  ru  rx   rG   rE   r   r   !   sy   V2$%  [[F---6LM
  N
 (
#;H$
$ [[F0009PQ	
 R	
&+4688 [[F---6GH? I?	AH [[F---6LM7 N7T

 [[F---6LM! N! [[F---6LMQ NQ5O	5N [[F---6LMH NH,X"@MX"@M
U1O.
E
E [[))2DE" F"rG   r   zignore::UserWarningc                     t        t        dd      d t        j                  t	               t               g      } | d   J | d   J | d   j                  sJ | d   j                  sJ | j                         j                         g dk(  sJ | j                  j                         g dk(  sJ | j                         j                         g dk(  sJ | j                         j                         j                         rJ | j                         j                         j                         rJ t        | j                               dk(  sJ y )Nr   re   r   r   )FTTFF)FFFTT)TFFTT)r   r   rj   rk   r   r	   r   isnar`  notnar   anydropnar   r   s    rE   test_missing_valuesr    s   5A;bff.@.BGINOA Q4<<Q4<<Q4===Q4=== 668?? AAAA::"CCCC779!AAAA xxz $$&&& xxz $$&&&qxxz?arG   c                  |    t        g       } | j                         }t        |t        j                  g d             y )Nbooldtype)r   r  r   rh   ri   )r   rC  s     rE   test_isna_empty_geoseriesr    s+    "AVVXF		"F ;<rG   rZ   r[   c                  t    t               j                  d      } | j                  j                         dk(  sJ y )NzIGNF:ETRS89UTM28)IGNFETRS89UTM28)r   r`   r"   to_authorityr   s    rE   test_geoseries_crsr    s1    			/	0B66 $;;;;rG   r   c                      t        d      } t        j                  t        d      5  d| _        d d d        y # 1 sw Y   y xY w)Nr    r!   z6Overriding the CRS of a GeoSeries that already has CRSrp   z	epsg:2100)r   rr   rs   DeprecationWarningr"   r  s    rE   ,test_geoseries_override_existing_crs_warningr    s<    	{	#B	F
  	  s	   9Ac                     t        | t              sJ t        | j                  t              sJ t        | j                  t              sJ t        | j
                  t              sJ y rI   )rW   r   r   r  r   r^  r   r  s    rE   check_geoseriesr  (  sN    a###ajj),,,agg}---ahh...rG   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  ej                   d	      d
        Zd Ze
j                  j#                  dg d      e
j                  j#                  dddg      d               Ze
j                  j#                  dg d      e
j                  j#                  dddg      d               Zd Zd Zy)TestConstructorc           	      |    t        t        d      D cg c]  }t        ||       c}      }t        |       y c c}w )Nr   )r   r   r   r  )rD   r   r   s      rE   test_constructorz TestConstructor.test_constructor0  s.    E!H5quQ{56 6s   9c                    t        dd      }t        g d      }t        g dg dg      }t        g d      }t	        g dddgg      }t        g d	g d
g      }t        ||g      }||||||g}g d}	|D ]}  }
t        |
      }t        |      dk(  sJ |j                  d   j                  |
      sJ t        |
|	      }t        |      t        |	      k(  sJ |D ]  }|j                  |
      rJ   y )Nr   re   ))re   r   )r   rS   rS   rd  r   ))r   r   )r   r   )r   r   ))r   re   )r   r   r  )re  rg  )	   
   )r   )r   rf  )rf  rf  )rf  r   ))皙r  )r        )r  r  )r  r  )r   bcdr   rf   )
r   r   r	   r   r   r   r   r   ilocrX   )rD   plinepolympmlinepoly2mpolygeomsr8   gr   r   s                rE   test_single_geom_constructorz,TestConstructor.test_single_geom_constructor4  s   !QK23,/S.T
 01!9FG;L MN0EF
 dE]+D$E51$ 		#A1Br7a<<771:$$Q'''1E*Br7c%j((( #xx{"{#		#rG   c                 z   t        j                  t        d      5  t        g d       d d d        t        j                  t        d      5  t        g d       d d d        t        j                  t        d      5  t        ddgddgg       d d d        y # 1 sw Y   pxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)	N%Non geometry data passed to GeoSeriesrp   )TFT)r   r  r  r   re   r   r   )rr   r   	TypeErrorr   rC   s    rE   test_non_geometry_raisesz(TestConstructor.test_non_geometry_raisesQ  s    ]]9,ST 	+)*	+ ]]9,ST 	'o&	' ]]9,ST 	(1v1v&'	( 	(	+ 	+	' 	'	( 	(s#   BB%>B1B"%B.1B:c                 Z    t        g       }t        |       t               }t        |       y rI   )r   r  rD   r   s     rE   
test_emptyzTestConstructor.test_empty[  s"    bMKrG   c                 D    t        t        d            }t        |       y )Nr   rf   )r   r   r  r  s     rE   test_data_is_nonez!TestConstructor.test_data_is_noneb  s    E!H%rG   c                    t        j                  g d      t        j                  g d      t        j                  g d      g}t        j                  g d      t        j                  g d      g}t        j                  rKt        j
                  j                  j                  r'|j                  t        j                  g d             n&|j                  t        j                  g d             |D ]1  }t        j                  t        d	      5  t        |       d d d        3 |D ]B  }t        j                  d
      5 }t        |      }d d d        rJ t        t              rBJ  y # 1 sw Y   xY w# 1 sw Y   .xY w)Nr  r  int64float32objectfloat64strr  rp   Try   )rj   rt  r~  PANDAS_GE_30rh   optionsfutureinfer_stringappendrr   r   r  r   r{   r|   rW   )rD   non_geom_compat_dtypesgeom_compat_dtypesarrrz   r   s         rE   test_empty_arrayz TestConstructor.test_empty_arrayf  sH    HHRv&HHRw'HHRy)"
 HHRx(HHRy)

 2::#4#4#A#A #))"((2U*CD%%bhhr&?@) 	C!H  # 	 & 	,C((5 #cN#:a+++		, # #s   E2E>2E;	>F	c                    t        d      D cg c]J  }t        t        d      D cg c]*  }t        j                         t        j                         f, c}      L }}t        j                  |t        d      d      }t        |      }t        |       t        ||      D cg c]  \  }}|j                  |       c}}sJ |j                  |j                  k(  sJ |j                  |j                  u sJ y c c}w c c}w c c}}w )Nr  r   
abcdefghijfoo)r8   rO   )r   r	   randomrh   ri   listr   r  ziprX   rO   r8   )rD   _shapesr   r  r   r  s          rE   test_from_seriesz TestConstructor.test_from_series  s     2Y
 qJAfmmov}}7JK
 

 IIfD$6UCaL(+Aq	21222vvww!''!!! K
 3s   D/C<	D%D<DrZ   r[   c                    t        t        dd      t        dd      t        dd      g      }t        j                  |      }t        |d      }|j                  j
                  J |j
                  J |j
                  dk(  sJ t        j                  |j                  d            }t        |d      }|j
                  dk(  sJ t        j                  t        d      5  t        |d	       d d d        y # 1 sw Y   y xY w)
Nr   re   r   r   r!   r   z;CRS mismatch between CRS of the passed geometries and 'crs'rp   i  )
r   r   rh   ri   r^  r"   r`   rr   r   r   )rD   r   r   rC  rl   s        rE   +test_from_series_no_set_crs_on_constructionz;TestConstructor.test_from_series_no_set_crs_on_construction  s    
 aU1a[%1+>?IIbM1$'xx||###vv~~zz[((( YYrzz+./24(zz[(((]]O
 	$ bd#		$ 	$ 	$s   #C::Dc           	         t        j                  t        d      D cg c]  }t        ||       c}t              }t        |      }t        dd      |j                  d<   t        j                  s%t        t        j                  j                  dd      r|d   t        dd      k(  sJ |d   t        dd      k(  sJ t        j                  t        d      D cg c]  }t        ||       c}t              }t        |d      }|j                  j                  j                  j                  sJ t        dd      |j                  d<   |d   t        dd      k(  sJ y c c}w c c}w )Nr   r  r  r   copy_on_writeF)r6   )rj   rt  r   r   r  r   r   r~  r  getattrrh   r  mode_dataflags	writeable)rD   r   r  rC  s       rE   rQ   zTestConstructor.test_copy  s   hhU1X6a6fE3b"

1'"**//?E"Rq6U1a[(((q6U2r]*** hhU1X6a6fE3U+||!!''1111b"

11vr2&&& 7 7s   E!E&rO   )Nr   Pointsr"   Nr    c                 .   t        t        ddg      t        g d      g||      }|j                  d      }|j                         }t	        |      t
        u sJ |j                  j                  ||ndk(  sJ |j                  |j                  k(  sJ y )Nr   r   )re   re   )r   r   )r   r   rO   r"   Tindex_partsr   )	r   r   exploderp  rN   r   r   rO   r"   )rD   rO   r"   r   dfs        rE   test_reset_indexz TestConstructor.test_reset_index  s     ():6N+OP

 II$I']]_Bx<'''{{D,<D!DDDvvrG   c                    t        t        dd      t        dd      g||      }|j                         }t        |      t        u sJ ||nd}|j
                  j                  |k(  sJ |j                  |k(  sJ |j                  |j                  k(  sJ |j                  d      }t        |      t        u sJ |j
                  j                  dk(  sJ |j                  |j                  k(  sJ y )Nr   r   r  geom)rO   )	r   r   to_framerN   r   r   rO   _geometry_column_namer"   )rD   rO   r"   r   r  expected_namedf2s          rE   test_to_framezTestConstructor.test_to_frame  s     uQ{E!QK0tEZZ\Bx<''' $ 0a{{=000''=888vv jjfj%Bx<'''||  F***ww!%%rG   c                     t        t        ddg      t        g d      g      }|j                  d      }t        j                  g d      }t        |j                  |       y )Nr   r   r  Fr  )r   r   r   r   r   )r   r   r  rh   r  r   r8   rD   r   expected_indexs      rE   test_explode_without_multiindexz/TestConstructor.test_explode_without_multiindex  sR    ():6N+OP
 II%I(/2177N3rG   c                 :   t        t        ddg      t        g d      g      }|j                  d      }t        j                  t        t        |                  }t        |j                  |       |j                  dd      }t        |j                  |       y )Nr   r   r  T)ignore_index)r  r  )	r   r   r  rh   r  r   r   r   r8   r  s      rE   test_explode_ignore_indexz)TestConstructor.test_explode_ignore_index  s|    ():6N+OP
 II4I(%A-0177N3 II$TI:177N3rG   )ry  rz  r{  r  r  r  r  r  r  r  rr   r|  r}  r~  r  r  rQ   parametrizer  r  r  r  r  rG   rE   r  r  /  s    #:(",H" [[F---6LM$ N$*'( [[V%AB[[UT;$78 9 C [[V%AB[[UT;$78  9 C  4
4rG   r  )5r   r   r  rJ   r*   r{   numpyrj   pandasrh   shapely.geometryr   r   r   r   r   r   r	   shapely.geometry.baser
   geopandas._compat_compatr~  	geopandasr   r   r   r   geopandas.arrayr   r   rr   geopandas.testingr   r   geopandas.tests.utilr   numpy.testingr   pandas.testingr   r   r   r|  r   r  r  r}  r  r  r  r  r  r  rG   rE   <module>r     s     	         / " > > 8  H , , BQ" Q"h 12  3 ,= )))2HI< J<
 )))2CD E/F4 F4rG   