a
    1$e/                     @   s   d Z ddlm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
 ddlmZmZ ddlmZ ejddejejejejd	d
ddejdd
dde	jejdd
ddejddddejddddeje
dd ZdS )zfio-collect    )partialN)helpersoptionswith_context_env)GeometryObjectEncoder)transform_geomzCollect a sequence of features.)
short_helpz&--record-buffered/--no-record-bufferedFzJEconomical buffering of writes at record, not collection (default), level.)defaulthelpz"--ignore-errors/--no-ignore-errorsz)log errors but do not stop serialization.z&--with-ld-context/--without-ld-contextz%add a JSON-LD context to JSON output.z--add-ld-context-itemTz?map a term to a URI and add it to the output's JSON LD context.)multipler   z--parse/--no-parsez3load and dump the geojson feature (default is True)c
                    s  t t}
tdtd}ddi |r2| d< |r>d d< |rFdpHd	}|rp|	s\td
tt|dd|dndd t|	r	dr fdd}qއ fdd}n(	drЇfdd}nfdd}| }|rt
|}ddd|pd   }dg d}|r$t||d< tj|fdti d\}}|| |d zDdt| }}|rxt|}|r|| ||d| W n ty   Y np ty } zV|r|
d|| n4|
d || |d! || |r|d  W Y d"}~n
d"}~0 0 t|d#D ]\}}z@|rDt|}|rT|| || ||d| W np ty } zV|r|
d|| n4|
d || |d! || |r|d  W Y d"}~n
d"}~0 0 q*|d! || |r|d ndg d}|r,t||d< tj|fdti d\}}|| |d |d| |d! || |d d"S )$zWMake a GeoJSON feature collection from a sequence of GeoJSON
    features and print it.stdinstdout	sort_keysTindent),:
separatorsr   z, z'Can't specify --src-crs with --no-parsez	EPSG:4326)Zantimeridian_cutting	precisionc                 S   s   | S N )xr   r   M/var/www/html/django/DPS/env/lib/python3.9/site-packages/fiona/fio/collect.pytransformerU   s    zcollect.<locals>.transformerc                  3   s    d} D ]d}|drj| r^t| }tjf i |d |d< tj|fdti V  | d} q| |7 } qt| }tjf i |d |d< tj|fdti V  d S )Nr   geometrycls)strip
startswithjsonloadsr   	from_dictdumpsr   )bufferlinefeatZ	dump_kwds
first_liner   r   r   r   feature_text_gen_   s     




z!collect.<locals>.feature_text_genc                  3   s   t } tjf i | d | d< t j| fdti V  D ]B}t |} tjf i | d | d< t j| fdti V  qBd S )Nr   r   )r   r    r   r!   r"   r   )r%   r$   r&   r   r   r(   u   s    

c                  3   sF     d} D ],}|dr2| r&| V  | d} q| |7 } q| V  d S )Nr   )r   r   )r#   r$   r'   r   r   r   r(      s    


c                   3   s    V  E d H  d S r   r   r   r)   r   r   r(      s    
    r   ZFeatureCollection)typefeaturesz@contextr   z[][z3failed to serialize file record %d (%s), continuingz0failed to serialize file record %d (%s), quiting]N   )logging	getLogger__name__clickget_text_stream
UsageErrorr   r   nextr   boolr   Zmake_ld_contextr   r"   r   splitwriteZ	id_recordreplaceStopIteration	Exceptionerrorcritical	enumeratejoin)ctxr   r   compactZrecord_bufferedignore_errorsZsrc_crsZwith_ld_contextZadd_ld_context_itemparseloggerZsinkZitem_sepr(   sourceZindentedZ
rec_indent
collectionheadtailifirstexcZrecr   r&   r   collect   s    /



	


 















 



rO   )__doc__	functoolsr   r   r2   r5   ZcligjZ	fiona.fior   r   r   Zfiona.modelr   r   Zfiona.transformr   commandZprecision_optZ
indent_optZcompact_optoptionZsrc_crs_optpass_contextrO   r   r   r   r   <module>   sR   
