Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Folium throwing a bunch of errors #209

Open
LaurentBerder opened this issue Sep 30, 2021 · 1 comment
Open

Folium throwing a bunch of errors #209

LaurentBerder opened this issue Sep 30, 2021 · 1 comment

Comments

@LaurentBerder
Copy link

Hi,

I'm just trying out PyMove because it seems like it could bring a lot to my current project.
But I can't get any folium functionality to work, though.

Here's an extract of what I'm doing:

df.head()
absolute_time lat lng id
2021-09-09 10:32:27.000 45.818459 3.139887 54
2021-09-09 10:32:28.000 45.818459 3.139887 54
2021-09-09 10:32:29.044 45.818459 3.139887 54
2021-09-09 10:32:30.000 45.818459 3.139887 54
2021-09-09 10:32:31.000 45.818459 3.139887 54
move_df = MoveDataFrame(data=df, latitude='lat', longitude='lng', datetime='absolute_time')

from pymove import folium as f
f.plot_trajectories(move_df)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-159-487305dba7d4> in <module>()
      1 from pymove import folium as f
----> 2 f.plot_trajectories(move_df)

2 frames
/usr/local/lib/python3.7/dist-packages/pymove/visualization/folium.py in plot_trajectories(move_data, n_rows, lat_origin, lon_origin, zoom_start, legend, base_map, tile, save_as_html, color, color_by_id, filename)
    993 
    994     _add_trajectories_to_map(
--> 995         mv_df, items, base_map, legend, save_as_html, filename
    996     )
    997 

/usr/local/lib/python3.7/dist-packages/pymove/visualization/folium.py in _add_trajectories_to_map(move_data, items, base_map, legend, save_as_html, filename)
    896         mv = move_data[move_data[TRAJ_ID] == _id]
    897 
--> 898         _add_begin_end_markers_to_map(mv, base_map, color, _id)
    899 
    900         folium.PolyLine(

/usr/local/lib/python3.7/dist-packages/pymove/visualization/folium.py in _add_begin_end_markers_to_map(move_data, base_map, color, _id)
    837         popup='Início',
    838         icon=plugins.BeautifyIcon(
--> 839             icon='play', icon_shape='marker', background_color=color or 'green'
    840         )
    841     ).add_to(points)

TypeError: __init__() got an unexpected keyword argument 'color'

Or if I just try to plot the bounding box, I get a different error.

f.plot_bbox(move_df.get_bbox(), color='blue')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-161-03377951b622> in <module>()
----> 1 f.plot_bbox(move_df.get_bbox(), color='blue')

6 frames
/usr/local/lib/python3.7/dist-packages/pymove/visualization/folium.py in plot_bbox(bbox_tuple, base_map, tiles, color, save_as_html, filename)
   1688         base_map = folium.Map(tiles=tiles)
   1689     base_map.fit_bounds(
-> 1690         [[bbox_tuple[0], bbox_tuple[1]], [bbox_tuple[2], bbox_tuple[3]]]
   1691     )
   1692     points_ = [

/usr/local/lib/python3.7/dist-packages/folium/folium.py in fit_bounds(self, bounds, padding_top_left, padding_bottom_right, padding, max_zoom)
    411             'Choropleth class, which has the same arguments. See the example '
    412             'notebook \'GeoJSON_and_choropleth\' for how to do this.',
--> 413             FutureWarning
    414         )
    415         from folium.features import Choropleth

/usr/local/lib/python3.7/dist-packages/folium/map.py in __init__(self, bounds, padding_top_left, padding_bottom_right, padding, max_zoom)
    456         Bounding box specified as two points [southwest, northeast]
    457     padding_top_left: (x, y) point, default None
--> 458         Padding in the top left corner. Useful if some elements in
    459         the corner, such as controls, might obscure objects you're zooming
    460         to.

/usr/lib/python3.7/json/__init__.py in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
    229         cls is None and indent is None and separators is None and
    230         default is None and not sort_keys and not kw):
--> 231         return _default_encoder.encode(obj)
    232     if cls is None:
    233         cls = JSONEncoder

/usr/lib/python3.7/json/encoder.py in encode(self, o)
    197         # exceptions aren't as detailed.  The list call should be roughly
    198         # equivalent to the PySequence_Fast that ''.join() would do.
--> 199         chunks = self.iterencode(o, _one_shot=True)
    200         if not isinstance(chunks, (list, tuple)):
    201             chunks = list(chunks)

/usr/lib/python3.7/json/encoder.py in iterencode(self, o, _one_shot)
    255                 self.key_separator, self.item_separator, self.sort_keys,
    256                 self.skipkeys, _one_shot)
--> 257         return _iterencode(o, 0)
    258 
    259 def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,

/usr/lib/python3.7/json/encoder.py in default(self, o)
    177 
    178         """
--> 179         raise TypeError(f'Object of type {o.__class__.__name__} '
    180                         f'is not JSON serializable')
    181 

TypeError: Object of type float16 is not JSON serializable

I'm using python version 3.7, PyMove version 3.0.0, and folium version 0.8.3

@mxaviersmp
Copy link
Collaborator

Hi. For some methods, PyMove requires folium version >=0.10.1. It is pinned in the requirements, so it should update when installing PyMove. If not, try using:

pip install -U folium'>=0.10.1'

If you are using it on Google Colab, I believe it has the version 0.8.3. After installing PyMove or updating folium, restarting the environment should do it.

Sorry for the delayed response.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants