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 文件的一个子集,它的不同之处在于我将一些数据存储为字典,而这些数据应该是列表。
如何让 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 文件的一个子集,它的不同之处在于我将一些数据存储为字典,而这些数据应该是列表。