a
    bg`	                     @   s<   d dl mZmZ d dlmZ d dlmZ G dd deZdS )    )AnyIterator)Document)
BaseLoaderc                   @   s4   e Zd ZdZd
eedddZee dddZ	d	S )GeoDataFrameLoaderzLoad `geopandas` Dataframe.geometry)
data_framepage_content_columnc                 C   s   zddl }W n ty&   tdY n0 t||jsFtdt| ||jvr^td| t|| |js~td| d|| _|| _	dS )zInitialize with geopandas Dataframe.

        Args:
            data_frame: geopandas DataFrame object.
            page_content_column: Name of the column containing the page content.
              Defaults to "geometry".
        r   NzKgeopandas package not found, please install it with `pip install geopandas`z2Expected data_frame to be a gpd.GeoDataFrame, got z+Expected data_frame to have a column named zExpected data_frame[z] to be a GeoSeries)
Z	geopandasImportError
isinstanceZGeoDataFrame
ValueErrortypecolumnsZ	GeoSeriesr   r	   )selfr   r	   Zgpd r   /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/document_loaders/geodataframe.py__init__   s(    	


zGeoDataFrameLoader.__init__)returnc                 c   s   | j jr| j j nd}| j jjjd }| j  D ]t\}}|| j }|j\}}}}	|	 }
||
d< ||
d< ||
d< ||
d< ||
d< |	|
d< |

| j t|j|
d	V  q2dS )
z!Lazy load records from dataframe.Nr   crsgeometry_typexminyminxmaxymax)Zpage_contentmetadata)r   r   Z	to_stringr   Z	geom_typeZilocZiterrowsr	   Zboundsto_dictpopr   Zwkt)r   Zcrs_strr   _rowZgeomr   r   r   r   r   r   r   r   	lazy_load.   s    
zGeoDataFrameLoader.lazy_loadN)r   )
__name__
__module____qualname____doc__r   strr   r   r   r   r   r   r   r   r      s   #r   N)typingr   r   Zlangchain_core.documentsr   Z)langchain_community.document_loaders.baser   r   r   r   r   r   <module>   s   