holoviz / geoviews

Simple, concise geographical visualization in Python
http://geoviews.org
BSD 3-Clause "New" or "Revised" License
584 stars 75 forks source link

Failure of http://geo.holoviews.org/gallery/bokeh/filled_contours.html example #234

Closed bnagar closed 5 years ago

bnagar commented 5 years ago

Summary: error: TypeError: object of type 'float' has no len() Versions of holoviews==1.10.7,bokeh==0.13.0, geoviews==1.5.3,numpy==1.14.2 Specific line where it crashes: %%opts Polygons [colorbar=True width=600 height=300 color_levels=12 infer_projection=True] (alpha=0.8 cmap='nipy_spectral') *gv.project(contours, projection=crs.Mollweide()) gf.coastline**

Detailed trace: TypeError Traceback (most recent call last)

in () ----> 1 gv.project(contours, projection=crs.Mollweide()) * gf.coastline /home/bnagar/tmp/python_virtual_envpgadmin/pg4admin/local/lib/python2.7/site-packages/param/parameterized.pyc in new(class, args, **params) 2029 inst = class_.instance() 2030 inst.param._setname(class.name) -> 2031 return inst.call(args,params) 2032 2033 def call(self,*args,kw): /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/holoviews/core/operation.pyc in call(self, element, **params) 161 operation=self, kwargs=params) 162 elif isinstance(element, ViewableElement): --> 163 processed = self._apply(element) 164 elif isinstance(element, DynamicMap): 165 if any((not d.values) for d in element.kdims): /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/holoviews/core/operation.pyc in _apply(self, element, key) 119 for hook in self._preprocess_hooks: 120 kwargs.update(hook(self, element)) --> 121 ret = self._process(element, key) 122 for hook in self._postprocess_hooks: 123 ret = hook(self, ret, **kwargs) /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/geoviews/operation/projection.pyc in _process(self, element, key) 408 for op in self._operations: 409 element = element.map(op.instance(projection=self.p.projection), --> 410 op.supported_types) 411 return element /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/holoviews/core/dimension.pyc in map(self, map_fn, specs, clone) 727 return deep_mapped 728 else: --> 729 return map_fn(self) if applies else self 730 731 /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/holoviews/core/operation.pyc in call(self, element, **params) 161 operation=self, kwargs=params) 162 elif isinstance(element, ViewableElement): --> 163 processed = self._apply(element) 164 elif isinstance(element, DynamicMap): 165 if any((not d.values) for d in element.kdims): /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/holoviews/core/operation.pyc in _apply(self, element, key) 119 for hook in self._preprocess_hooks: 120 kwargs.update(hook(self, element)) --> 121 ret = self._process(element, key) 122 for hook in self._postprocess_hooks: 123 ret = hook(self, ret, **kwargs) /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/geoviews/operation/projection.pyc in _process(self, element, key) 32 33 def _process(self, element, key=None): ---> 34 return element.map(self._process_element, self.supported_types) 35 36 /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/holoviews/core/dimension.pyc in map(self, map_fn, specs, clone) 727 return deep_mapped 728 else: --> 729 return map_fn(self) if applies else self 730 731 /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/geoviews/operation/projection.pyc in _process_element(self, element) 147 projected += self._project_path(element, path, data, boundary, geom_type, multi_type) 148 else: --> 149 projected += self._project_contour(element, path, data, boundary, geom_type, multi_type) 150 151 if len(paths) and len(projected) == 0: /home/bnagar/tmp/python_virtual_env_pgadmin/pg4admin/local/lib/python2.7/site-packages/geoviews/operation/projection.pyc in _project_contour(self, element, contour, data, boundary, geom_type, multi_type) 87 geoms = [] 88 for g in to_geom(element, multi=False, skip_invalid=False): ---> 89 if np.isinf(np.array(g.array_interface_base['data'])).sum(): 90 # Skip if infinity in path 91 continue TypeError: object of type 'float' has no len()
philippjfr commented 5 years ago

Can't reproduce exactly but the example now produces a very odd result so still needs looking at.