eL iddlZddlZddlmZmZmZddlmZm Z ddl m Z ddl m Z mZddlmZd Zd Zhd ZGd d eZy)N) is_pandas_dfhas_geo_interfacerecords_from_geo_interface) JSONMixincamel_and_lower)settings)ImageFunction)BinaryTransportExceptionz@@typez@@=>"'`ceZdZd dZedZej dZdZdZedZ e j dZ d Z y) LayerNc ||_|xsttj|_|j |}|j |_|r||jD]M\}}t|tr/|dtvr$|d|dk(r|j|dd||<Ft|tr$tj|rt|||<zt|tr t|z||<t|tr|gk7r}t|dtrjd}t!|D]?\} } | t#|dz k(r|dj%| z },|dj%| z }Adj%t|||<)t|t&s;|j)||<P|j*j-|d|_||_d|_||_y) aConfigures a deck.gl layer for rendering on a map. Parameters passed here will be specific to the particular deck.gl layer that you are choosing to use. Please see the deck.gl `Layer catalog `_ to determine the particular parameters of your layer. You are highly encouraged to look at the examples in the pydeck documentation. Parameters ========== type : str Type of layer to render, e.g., `HexagonLayer` id : str, default None Unique name for layer data : str or list of dict of {str: Any} or pandas.DataFrame, default None Either a URL of data to load in or an array of data use_binary_transport : bool, default None Boolean indicating binary data **kwargs Any of the parameters passable to a deck.gl layer. Examples ======== For example, here is a HexagonLayer which reads data from a URL. >>> import pydeck >>> # 2014 location of car accidents in the UK >>> UK_ACCIDENTS_DATA = ('https://raw.githubusercontent.com/uber-common/' >>> 'deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv') >>> # Define a layer to display on a map >>> layer = pydeck.Layer( >>> 'HexagonLayer', >>> UK_ACCIDENTS_DATA, >>> get_position=['lng', 'lat'], >>> auto_highlight=True, >>> elevation_scale=50, >>> pickable=True, >>> elevation_range=[0, 3000], >>> extruded=True, >>> coverage=1) Alternately, input can be a pandas.DataFrame: >>> import pydeck >>> df = pd.read_csv(UK_ACCIDENTS_DATA) >>> layer = pydeck.Layer( >>> 'HexagonLayer', >>> df, >>> get_position=['lng', 'lat'], >>> auto_highlight=True, >>> elevation_scale=50, >>> pickable=True, >>> elevation_range=[0, 3000], >>> extruded=True, >>> coverage=1) rrz{}z{}, z{}[{}]N)typestruuiduuid4id_add_default_layer_attributescopy_kwargsitems isinstance QUOTE_CHARSreplacer validateFUNCTION_IDENTIFIERlist enumeratelenformatr serialize__dict__update_datause_binary_transport _binary_datadata) selfrr.rr,kwargskv array_as_stri identifiers [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pydeck/bindings/layer.py__init__zLayer.__init__sv )DJJL)33F;{{}   .1a%!A$+*=!A$!B%- ! !A$ 3F1I3'ENN1,= %aF1I3' 3a 7F1I4(Q"WAaD#9N#%L)21F :A ?(DKK ,CCL(FMM*,EEL F !)0C\ RF1I8, ! F1I5 .8 MM  ( $8!  c|jSN)r+r/s r6r.z Layer.datazs zzr8c|jr|j||_yt|r|j d|_yt |rt||_y||_y)zMake the data attribute a list no matter the input type, unless use_binary_transport is specified, which case we circumvent serializing the data to JSON records)orientN)r,_prepare_binary_datar-rto_dictr+rr)r/data_sets r6r.z Layer.data~sX  $ $ $ 9 9( CD  ( #!)));DJ x (3H=DJ!DJr8cH|js td|jS)Nz6Layer must be flagged with `use_binary_transport=True`)r,r r-r;s r6get_binary_datazLayer.get_binary_datas#((*+cd d   r8c t|s td|j}|jDcic]%\}}t |t t tfvs#||'}}}g}|jD]d}tj||j}|j||=|j|j|t|||df|Scc}}w)Nz,Layer data must be a `pandas.DataFrame` type)layer_id column_nameaccessornp_data)rr rrrr$dictsetcolumnsnpstackto_numpyr)appendrr ) r/rAlayer_accessorsr1r2inverted_accessor_mapbinary_transmissioncolumnrHs r6r?zLayer._prepare_binary_datasH%*+YZ Z,,2A2G2G2I n$!QTRSW]acgil\mMmA n n && Fhhx/88:;G 3F;<  & & $#) /0Ef0M N&   #"#!os $CCc"t|tSr:)getattrTYPE_IDENTIFIERr;s r6rz Layer.typest_--r8c0|jt|yr:) __setattr__rV)r/ type_names r6rz Layer.types )4r8ctj}t|tr>|j|vr0t||jtri||j|}|Sr:)pydeck_settingsdefault_layer_attributesrrIr)r/r0 attributess r6rz#Layer._add_default_layer_attributessV$== j$ 'DII,C S]^b^g^gShjnHo8 499-88F r8)NNN) __name__ __module__ __qualname__r7propertyr.setterrCr?rrr8r6rrspeN [[ " "! #4.. [[55r8r)rnumpyrL data_utilsrrr json_toolsrr r r[ pydeck.typesr r pydeck.exceptionsr rVr#r rrcr8r6ris= TT22(6 hIhr8