
    Dh"                        S r SSKJr  SSKJr  SSKrSSKJrJrJ	r	J
r
  SSKJr  SSKrSSKrSSKJrJr  SSKJrJr  S	S
KJr  S	SKJr   " S S\\	5      rS\S\4S jrS\
\\4   S\4S jrS\S\4S jrS\S\4S jrS r S r!S r"\!" \RF                  5      r#\"" \RH                  5      r$\ " \RJ                  5      r%\"" \RL                  5      r&\"" \RN                  5      r'\!" \RP                  5      r(\" S!\#\$\\%\\\(\'\&\S.
\)" \5       V s0 s H;  n U RU                  S5      (       a  M  \+" \," \U 5      5      (       d  M1  U \," \U 5      _M=     sn D6\l-         S"S\.S\	S\/S\4S jjr0S\.S\\	   S\4S  jr1gs  sn f )#z3Operations on GeoJSON feature and geometry objects.    )UserDictwrapsN)	GeneratorIterableMappingUnion)transform_geom)mappingshape)BaseGeometryBaseMultipartGeometry   )ReduceError)snuggsc                       \ rS rSrSrS rSrg)
FuncMapper   z6Resolves functions from names in pipeline expressions.c                   ^ TU R                   ;   a  U R                   T   $ T[        ;   a  TR                  S5      (       d	  [        T   $ T[        [        5      ;   a  U4S j$ T[        [        R
                  5      ;   a  U4S j$ U4S j$ )zGet a function by its name.__c                 8   > [        [        T5      " U /UQ70 UD6$ N)getattrshapelygargskwargskeys      aC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\fiona/features.py<lambda>(FuncMapper.__getitem__.<locals>.<lambda>    s    ggs.CA.W.WPV.W    c                 L   > [        [        R                  T5      " U /UQ70 UD6$ r   )r   r   opsr   s      r    r!   r"   "   s(    ggkk3.G//"/r#   c                 t   > [        [        U T5      5      (       a  [        U T5      " U0 UD6$ [        U T5      $ r   )callabler   r   s      r    r!   r"   '   s<    GAsO,, ,31c?D+KF+K ,%Q_,%r#   )data__builtins__
startswithdirr   r%   )selfr   s    `r    __getitem__FuncMapper.__getitem__   su    $))99S>!L )=)=$$CL WWC$$ 
%r#    N)__name__
__module____qualname____firstlineno____doc__r-   __static_attributes__r/   r#   r    r   r      s
    @r#   r   geomsreturnc                 @    [         R                  " [        U 5      5      $ )zTurn a sequence of geometries into a single GeometryCollection.

Parameters
----------
geoms : Iterable
    A sequence of geometry objects.

Returns
-------
Geometry

)r   GeometryCollectionlist)r6   s    r    collectr;   -   s     %%d5k22r#   geomc              #   h   #    [        U S5      (       a  U R                  nOU /nU H  nUv   M	     g7f)a6  Get the individual parts of a geometry object.

If the given geometry object has a single part, e.g., is an
instance of LineString, Point, or Polygon, this function yields a
single result, the geometry itself.

Parameters
----------
geom : a shapely geometry object.

Yields
------
A shapely geometry object.

r6   N)hasattrr6   )r<   partsparts      r    dumprA   =   s3       tW


 s   02objc                     U $ )zGet back the given argument.

To help in making expression lists, where the first item must be a
callable object.

Parameters
----------
obj : objeect

Returns
-------
obj

r/   )rB   s    r    identityrD   U   s	     Jr#   c                 "   [        U 5      n[        US5      (       a  [        S UR                   5       5      $ [        US5      (       a2  [	        UR
                  5      [        S UR                   5       5      -   $ [        UR                  5      $ )zCount the vertices of a GeoJSON-like geometry object.

Parameters
----------
obj: object
    A GeoJSON-like mapping or an object that provides
    __geo_interface__.

Returns
-------
int

r6   c              3   8   #    U  H  n[        U5      v   M     g 7fr   vertex_count).0r@   s     r    	<genexpr>vertex_count.<locals>.<genexpr>w   s     <)$<%%)   exteriorc              3   8   #    U  H  n[        U5      v   M     g 7fr   rG   )rI   rings     r    rJ   rK   y   s      0
+84L=rL   )	r   r>   sumr6   rH   rM   	interiorslencoords)rB   shps     r    rH   rH   g   sz     *CsG<#))<<<	j	!	!CLL)C 0
+.==0
 -
 
 	
 3::r#   c                 8   ^  [        T 5      SS.U 4S jj5       nU$ )zProject func's geometry args before computing a property.

Parameters
----------
func : callable
    Signature is func(geom1, geom2, *args, **kwargs)

Returns
-------
callable
    Signature is func(geom1, geom2, projected=True, *args, **kwargs)

T	projectedc          	         > U(       a>  [        [        SS[        U 5      5      5      n [        [        SS[        U5      5      5      nT" X/UQ70 UD6$ Nz	OGC:CRS84z	EPSG:6933r   r
   r   )geom1geom2rW   r   r   funcs        r    wrapper4binary_projectable_property_wrapper.<locals>.wrapper   sI    .k75>RSE.k75>RSEE242622r#   r   r]   r^   s   ` r    #binary_projectable_property_wrapperra      s%     4[/3 3 3 Nr#   c                 8   ^  [        T 5      SS.U 4S jj5       nU$ )zProject func's geometry arg before computing a property.

Parameters
----------
func : callable
    Signature is func(geom1, *args, **kwargs)

Returns
-------
callable
    Signature is func(geom1, projected=True, *args, **kwargs)

TrV   c          	      h   > U(       a  [        [        SS[        U 5      5      5      n T" U /UQ70 UD6$ rY   rZ   )r<   rW   r   r   r]   s       r    r^   3unary_projectable_property_wrapper.<locals>.wrapper   s2    ['$-PQDD*4*6**r#   r   r`   s   ` r    "unary_projectable_property_wrapperre      s%     4['+ + + Nr#   c                 8   ^  [        T 5      SS.U 4S jj5       nU$ )zProject func's geometry arg before constructing a new geometry.

Parameters
----------
func : callable
    Signature is func(geom1, *args, **kwargs)

Returns
-------
callable
    Signature is func(geom1, projected=True, *args, **kwargs)

TrV   c          	         > U(       aJ  [        [        SS[        U 5      5      5      n T" U /UQ70 UD6n[        [        SS[        U5      5      5      $ T" U /UQ70 UD6$ rY   rZ   )r<   rW   r   r   productr]   s        r    r^   7unary_projectable_constructive_wrapper.<locals>.wrapper   s_    ['$-PQD41$1&1G[''BRSTT.t.v..r#   r   r`   s   ` r    &unary_projectable_constructive_wrapperrj      s%     4['+ / / Nr#   )
areabufferr;   distancerA   rD   lengthsimplifyset_precisionrH   _
expressionfeature
dump_partsc              #     #    U R                  S5      (       a  U R                  S5      (       d  SU  S3n  [        UR                  SS5      5      nU(       a  [	        US5      (       a  UR
                  nOU/n U H  n[        R                  " XUS9n[        U[        [        [        [        45      (       a  Uv   MC  [        U[        [         45      (       a  [#        U5      v   Mm   U H-  n[        U[        [         45      (       a  [#        U5      nUv   M/     M     g! [        [        4 a    S/n Nf = f! [$         a    Uv    M  f = f7f)ao  Map a pipeline expression to a feature.

Yields one or more values.

Parameters
----------
expression : str
    A snuggs expression. The outermost parentheses are optional.
feature : dict
    A Fiona feature object.
dump_parts : bool, optional (default: False)
    If True, the parts of the feature's geometry are turned into
    new features.

Yields
------
object

()geometryNr6   )r   f)r*   endswithr   getr>   r6   AttributeErrorKeyErrorr   eval
isinstancestrfloatintr   r   r   r   	TypeError)rr   rs   rt   r<   r?   r@   resultitems           r    map_featurer      s$    , !!#&&:+>+>s+C+CA&
W[[T23'$00JJEFE Z7;fsE3899L/D EFF&/!"D!$7L(MNN&t}J #  H%   sY   3E?D" 5E6D" 9A0E*3D;E"D85E7D88E;E	EEEfeaturesc              #   d  #    U R                  S5      (       a  U R                  S5      (       d  SU  S3n S U 5       n[        R                  " XS9n[	        U[
        [        [        [        45      (       a  Uv   g[	        U[        [        45      (       a  [        U5      v   g[        S5      e7f)a  Reduce a collection of features to a single value.

The pipeline is a string that, when evaluated by snuggs, produces
a new value. The name of the input feature collection in the
context of the pipeline is "c".

Parameters
----------
pipeline : str
    Geometry operation pipeline such as "(unary_union c)".
features : iterable
    A sequence of Fiona feature objects.

Yields
------
object

Raises
------
ReduceError

rv   rw   c              3   >   #    U  H  n[        US    5      v   M     g7f)rx   N)r   )rI   feats     r    rJ   "reduce_features.<locals>.<genexpr>4  s     ?hd%Z())hs   )cz.Expression failed to reduce to a single value.N)r*   rz   r   r~   r   r   r   r   r   r   r   r   r   )rr   r   
collectionr   s       r    reduce_featuresr     s     . !!#&&:+>+>s+C+CA&
?h?J[[2F&3sG455	F\+@A	B	BfoJKKs   B.B0r/   )F)2r4   collectionsr   	functoolsr   	itertoolstypingr   r   r   r	   fiona.transformr
   r   shapely.opsshapely.geometryr   r   shapely.geometry.baser   r   errorsr   _vendorr   r   objectr;   rA   rD   r   rH   ra   re   rj   rk   rl   rm   rp   ro   rn   r+   r*   r'   r   func_mapr   boolr   r   )ks   0r    <module>r      s   9     6 6 *   + E  7 .38 3 3 u\#889 i 0& V $f  2426 *',,7	/	?.w/?/?@6w7L7LM1'2B2BC	+GNN	; 		 YA||C  	!%-gi.C%D 	!79a  ( ;@//%/37//d"L "Lx/@ "LY "Lus   E7*E7 E7