
    h                     B   d dl Zd dlmZ d dlmZ d dlmZmZm	Z	 ej                  j                  ej                  j                  e            Zej                  j                  ej                  j                  e            Zej                  j!                  eddd      Zdej                  j!                  ed	      z   Zej                  j!                  ed
d      Zej                  j!                  edd      Z	 d dlmZ ddZd Zd ZddZy# e$ r	 d dlmZ Y w xY w)    N)Series)GeoDataFrame)assert_geoseries_equalgeom_almost_equalsgeom_equals	geopandastestsdatazzip://znybb_16a.zipnaturalearth_citiesznaturalearth_cities.shpnaturalearth_lowresznaturalearth_lowres.shp)mockc                 p   t        | t              sJ t        |       dk(  sJ d}|r|D ]  }|| j                  v rJ  n,|D ]'  }|j	                         d | j                  D        v r'J  t        | j                  j                        j                         j                  d      j                         sJ y)zATests a GeoDataFrame that has been read in from the nybb dataset.   )BoroCodeBoroName
Shape_Leng
Shape_Areac              3   <   K   | ]  }|j                           y wN)lower).0dfcols     G/var/www/html/immo/lib/python3.12/site-packages/geopandas/tests/util.py	<genexpr>z#validate_boro_df.<locals>.<genexpr>-   s     "IU5;;="Is   MultiPolygonN)
isinstancer   lencolumnsr   r   geometry	geom_typedropnaeqall)dfcase_sensitiver   cols       r   validate_boro_dfr'   !   s    b,''' r7a<<BG 	%C"**$$$	%  	JC99;"Ibjj"IIII	J"++''(//144^DHHJJJ    c                 X    | j                   | j                   j                         xs dS y)zReturn srid from `df.crs`.r   )crsto_epsg)r$   s    r   get_sridr,   1   s%    	vvvv~~$1$r(   c           	         | 5  |j                   j                  }t        |      | j                  d       | j                  dd||j                  j                         j                  d   j                         f       | j                  dd|f       d}| j                  |fd|j                  d	      D               d
d
d
       y
# 1 sw Y   y
xY w)z
    Return a SpatiaLite connection containing the nybb table.

    Parameters
    ----------
    `con`: ``sqlite3.Connection``
    `df`: ``GeoDataFrame``
    zCREATE TABLE IF NOT EXISTS nybb ( ogc_fid INTEGER PRIMARY KEY, borocode INTEGER, boroname TEXT, shape_leng REAL, shape_area REAL)z$SELECT AddGeometryColumn(?, ?, ?, ?)nybbr   zSELECT CreateSpatialIndex(?, ?)z:INSERT INTO nybb VALUES(?, ?, ?, ?, ?, GeomFromText(?, ?))c              3      K   | ]W  }d |j                   |j                  |j                  |j                  |j                  r|j                  j
                  nd f Y y wr   )r   r   r   r   r   wkt)r   rowsrids     r   r   z$create_spatialite.<locals>.<genexpr>V   sT        LLLLNNNN(+CLL$$$s   AA F)indexN)
r   namer,   executer    r!   iatupperexecutemany
itertuples)conr$   geom_colsql_rowr2   s       @r   create_spatialiter=   8   s     
  
;;##|	
 	2XtR\\%8%8%:%>%>q%A%G%G%IJ	
 	57IJN ==u=5	
% 
  
  
s   B=C

Cc           
         |d| d}d| d}nd}d}	 | j                         }|j                  d       d| d	| d
}|j                  |       |j                         D ];  \  }}	d| d}|j                  ||	d   j                  |	d   |	d   |	d   |	d   f       = 	 |j	                          | j                          y# j	                          | j                          w xY w)z
    Create a nybb table in the test_geopandas PostGIS database.
    Returns a boolean indicating whether the database table was successfully
    created
    Nzgeometry(MULTIPOLYGON, )z$ST_SetSRID(ST_GeometryFromText(%s), r   zST_GeometryFromText(%s)zDROP TABLE IF EXISTS nybb;z CREATE TABLE nybb (
            z   z,
            borocode     integer,
            boroname     varchar(40),
            shape_leng   float,
            shape_area   float
            );zINSERT INTO nybb VALUES (z, %s, %s, %s, %s
            );r   r   r   r   )cursorr5   iterrowsr0   closecommit)
r:   r$   r2   r;   geom_schemageom_insertr@   sqlir1   s
             r   create_postgisrH   e   s    /vQ7<TF!D /34Jc+ ' 	skkm 	FAs/} = CNN
O''
O
O%%		 	

 	

s   B	C   "C")F)Ngeom)os.pathospandasr   r   r   geopandas.testingr   r   r   pathabspathdirname__file__HEREPACKAGE_DIRjoin_TEST_DATA_DIR_NYBB_NATURALEARTH_CITIES_NATURALEARTH_LOWRESunittestr   ImportErrorr'   r,   r=   rH    r(   r   <module>r\      s      "  
wwrwwx01ggoobggood34k;H277<<??ww||)+D  ww||)+D 
K *
Z.Q  s   ;D DD