How to fix "AttributeError: 'str' object has no attribute 'setdefault' " in python folium geoJSON code?

How to fix "AttributeError: 'str' object has no attribute 'setdefault' " in python folium geoJSON code?

如何让 folium 接受似乎导致此错误的 geoJSON 输入?

尝试制作等值线图并遇到相同的错误,因此尝试使用我通过获取更大的子集创建的 JSON 文件在基本的 folium 地图上进行地理 JSON 叠加geoJSON 文件。在 Juypter Notebook 中工作。 JSON 文件似乎具有正确的结构。

msp_map = folium.Map(位置=[经纬度], zoom_start=10)

folium.GeoJson( msp_zipcode_geo, 姓名='geojson' ).add_to(msp_map)

msp_map


AttributeError Traceback(最后一次调用) ~/conda/lib/python3.6/site-packages/IPython/core/formatters.py 在 call(self, obj) 343 方法 = get_real_method(obj, self.print_method) 344 如果方法不是 None: --> 345 return 方法() 346returnNone 347 否则:

~/conda/lib/python3.6/site-packages/folium/map.py _repr_html_(self, **kwargs) 249self._parent=None 250 其他: --> 251 输出 = self._parent._repr_html_(**kwargs) 252return出来 253

~/conda/lib/python3.6/site-packages/branca/element.py _repr_html_(self, **kwargs) 326 第327话 --> 328 html = self.render(**kwargs) 329 html = "data:text/html;charset=utf-8;base64," + base64.b64encode(html.encode('utf8')).decode('utf8') # noqa 330

~/conda/lib/python3.6/site-packages/branca/element.py in render(self, **kwargs) 第319话 self._children.items() 中的 name,child 的 320: --> 321 child.render(**kwargs) 322returnself._template.render(这=自己,kwargs=kwargs) 323

~/conda/lib/python3.6/site-packages/folium/map.py in render(self, **kwargs) 336 ''), 名字='map_style') 337 --> 338 super(LegacyMap, self).render(**kwargs) 339 340

~/conda/lib/python3.6/site-packages/branca/element.py in render(self, **kwargs) 631 632 为名称,self._children.items() 中的元素: --> 633 element.render(**kwargs)

~/conda/lib/python3.6/site-packages/branca/element.py in render(self, **kwargs) 627 脚本 = self._template.module.dict.get('script', None) 628 如果脚本不是 None: --> 629 figure.script.add_child(元素(脚本(self, kwargs)), 第630章 名字=self.get_name()) 第631章【=10=】

~/conda/lib/python3.6/site-packages/jinja2/runtime.py 在 call(self, *args, **kwargs) 573 (self.name, 长度(self.arguments))) 574 --> 575 return self._invoke(参数,自动转义) 576 577 def _invoke(自我,参数,自动转义):

~/conda/lib/python3.6/site-packages/jinja2/asyncsupport.py in _invoke(self, arguments, autoescape) 108 def _invoke(自我,参数,自动转义): 109 如果不是 self._environment.is_async: --> 110 return original_invoke(self, arguments, autoescape) 111 return async_invoke(自身、参数、自动转义) 112returnupdate_wrapper(_调用,original_invoke)

~/conda/lib/python3.6/site-packages/jinja2/runtime.py in _invoke(self, arguments, autoescape) 577 def _invoke(自我,参数,自动转义): 第578话 --> 579 rv = self._func(*参数) 580 如果自动转义: 581 rv =标记(rv)

在宏中(l_1_this, l_1_kwargs)

~/conda/lib/python3.6/site-packages/jinja2/runtime.py in call(_Context__self, _Context__obj, *args, **kwargs) 260 个参数 = (__self.environment,) + 参数 261尝试: --> 262 return __obj(*args, **kwargs) 263 除了 StopIteration: 264return__self.environment.undefined('value was undefined because '

~/conda/lib/python3.6/site-packages/folium/features.py in style_data(self) 563 564 用于 self.data['features'] 中的功能: --> 565 feature.setdefault('properties', {}).setdefault('style', {}).update(self.style_function(feature)) # noqa 566 feature.setdefault('properties', {}).setdefault('highlight', {}).update(self.highlight_function(feature)) # noqa 567returnjson.dumps(self.data,sort_keys=真)

AttributeError: 'str' 对象没有属性 'setdefault'

希望获得在 geoJSON 文件中指定的覆盖县边界的地图。

发现 key_on 数据列中的数据类型不匹配,在 geoJSON 文件中是字符串类型,在数据集文件中是 int64。转换数据集文件更容易,并为 geoJSON 集中的每个多边形生成具有正确颜色范围的等值线。

我还发现我创建的 geoJSON 文件是更大的 geoJSON 文件的一个子集,它的不同之处在于我将一些数据存储为字典,而这些数据应该是列表。