如何在python folium geoJSON代码中修复“ AttributeError:'str'对象没有属性'setdefault'”?

时间:2019-04-26 00:22:04

标签: python geojson folium

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

尝试做一个choropleth映射并得到相同的错误,因此尝试使用我通过获取更大的geoJSON文件的子集创建的JSON文件在基本的叶子地图上进行geoJSON叠加。在Juypter Notebook中工作。 JSON文件似乎具有正确的结构。

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

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

msp_map


AttributeError跟踪(最近一次通话) 〜/ conda / lib / python3.6 / site-packages / IPython / core / formatters.py在致电中(self,obj)     343方法= get_real_method(obj,self.print_method)     344如果方法不是None: -> 345 return method()     346返回无     347其他:

〜/ conda / lib / python3.6 / site-packages / folium / map.py在_repr_html_中(self,** kwargs)     249 self._parent =无     250其他: -> 251出= self._parent._repr_html _(** kwargs)     252返回     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在render(self,** kwargs)中     319“”“呈现元素的HTML表示形式。”“”     320 for name,self._children.items()中的子对象: -> 321 child.render(** kwargs)     322 return self._template.render(this = self,kwargs = kwargs)     323

〜/ conda / lib / python3.6 / site-packages / folium / map.py在render(self,** kwargs)中     336''),name ='map_style')     337 -> 338超级(LegacyMap,self).render(** kwargs)     339     340

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

〜/ conda / lib / python3.6 / site-packages / branca / element.py在render(self,** kwargs)中     627脚本= self._template.module。字典 .get('script',None)     628如果脚本不是None: -> 629 fig.script.add_child(Element(script(self,kwargs)),     第630章     631

调用中的

〜/ conda / lib / python3.6 / site-packages / jinja2 / runtime.py(自身,* args,** kwargs)     573(self.name,len(self.arguments)))     574 -> 575 return self._invoke(参数,自动转义)     576     577 def _invoke(self,arguments,autoescape):

_invoke中的

〜/ conda / lib / python3.6 / site-packages / jinja2 / asyncsupport.py(self,arguments,autoescape)     108 def _invoke(self,arguments,autoescape):     109(如果不是self._environment.is_async): -> 110 return original_invoke(self,arguments,autoescape)     111返回async_invoke(self,arguments,autoescape)     112返回update_wrapper(_invoke,original_invoke)

_invoke中的

〜/ conda / lib / python3.6 / site-packages / jinja2 / runtime.py(self,arguments,autoescape)     577 def _invoke(自身,参数,自动转义):     578“”“此方法已由异步实现换出。”“” -> 579 rv = self._func(* arguments)     580,如果自动转义:     581 rv = Markup(rv)

在宏中(l_1_this,l_1_kwargs)

〜/ conda / lib / python3.6 / site-packages / jinja2 / runtime.py在调用中(_Context__self,_Context__obj,* args,** kwargs)     260个args =(__self.environment,)+ args     261尝试: -> 262返回__obj(* args,** kwargs)     263,除了StopIteration:     264 return __self.environment.undefined('值未定义,因为'

〜/ conda / lib / python3.6 / site-packages / folium / features.py在style_data(self)中     563     self.data ['features']中的特征564: -> 565 feature.setdefault('properties',{})。setdefault('style',{})。update(self.style_function(feature))#noqa     第566章,你是我的老公(3)     567返回json.dumps(self.data,sort_keys = True)

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

期望获取带有geoJSON文件中指定的县界覆盖图的地图。

1 个答案:

答案 0 :(得分:0)

计算出数据的key_on列中的数据类型不匹配,在geoJSON文件中它是字符串类型,在数据集文件中是int64。转换数据集文件更加容易,并且为geoJSON集中的每个多边形生成了具有正确颜色范围的色度。

还弄清楚了我作为较大的geoJSON文件的子集创建的geoJSON文件的不同之处在于,我已经存储了一些数据作为dict,应该在何时将其列出。