• <small id='nJDRU'></small><noframes id='nJDRU'>

    • <bdo id='nJDRU'></bdo><ul id='nJDRU'></ul>

      1. <i id='nJDRU'><tr id='nJDRU'><dt id='nJDRU'><q id='nJDRU'><span id='nJDRU'><b id='nJDRU'><form id='nJDRU'><ins id='nJDRU'></ins><ul id='nJDRU'></ul><sub id='nJDRU'></sub></form><legend id='nJDRU'></legend><bdo id='nJDRU'><pre id='nJDRU'><center id='nJDRU'></center></pre></bdo></b><th id='nJDRU'></th></span></q></dt></tr></i><div id='nJDRU'><tfoot id='nJDRU'></tfoot><dl id='nJDRU'><fieldset id='nJDRU'></fieldset></dl></div>

        <legend id='nJDRU'><style id='nJDRU'><dir id='nJDRU'><q id='nJDRU'></q></dir></style></legend>
        <tfoot id='nJDRU'></tfoot>

        Folium Choropleth + GeoJSON 引发 AttributeError: 'NoneT

        时间:2023-08-06

          <tfoot id='sqU7j'></tfoot>
            <tbody id='sqU7j'></tbody>

            <bdo id='sqU7j'></bdo><ul id='sqU7j'></ul>

            1. <small id='sqU7j'></small><noframes id='sqU7j'>

                <legend id='sqU7j'><style id='sqU7j'><dir id='sqU7j'><q id='sqU7j'></q></dir></style></legend>
              1. <i id='sqU7j'><tr id='sqU7j'><dt id='sqU7j'><q id='sqU7j'><span id='sqU7j'><b id='sqU7j'><form id='sqU7j'><ins id='sqU7j'></ins><ul id='sqU7j'></ul><sub id='sqU7j'></sub></form><legend id='sqU7j'></legend><bdo id='sqU7j'><pre id='sqU7j'><center id='sqU7j'></center></pre></bdo></b><th id='sqU7j'></th></span></q></dt></tr></i><div id='sqU7j'><tfoot id='sqU7j'></tfoot><dl id='sqU7j'><fieldset id='sqU7j'></fieldset></dl></div>
                • 本文介绍了Folium Choropleth + GeoJSON 引发 AttributeError: 'NoneType'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我正在尝试使用 folium 做一个 choropleth,它提供了 GeoJSON 之间的一个很好的链接,熊猫和传单.

                  I'm trying to do a choropleth using folium which offers a great link between GeoJSON, Pandas and leaflet.

                  GeoJSON 格式如下:

                  GeoJSON format is like below :

                  {
                    "type":"FeatureCollection",
                    "features":[
                          {
                            "type":"Feature",
                            "geometry":
                            {
                                "type":"Polygon",
                                "coordinates":[[[-1.6704591323124895,49.62681486270549], .....
                                {
                                    "insee":"50173",
                                    "nom":"Équeurdreville-Hainneville",
                                    "wikipedia":"fr:Équeurdreville-Hainneville",
                                    "surf_m2":12940306}},
                  

                  熊猫数据框:

                  postal_count.head(5)
                  Out[98]: 
                    Code_commune_INSEE  CP_count
                  0              75120       723
                  1              75115       698
                  2              75112       671
                  3              75118       627
                  4              75111       622
                  

                  Code_communes_INSEE"对应于 GeoJSON 中的属性insee".我想在上面的 DataFrame 中使用变量CP_count"做一个等值线.

                  "Code_communes_INSEE" corresponds to the attribute "insee" in the GeoJSON. I'd like to do a choropleth using the variable "CP_count" in the above DataFrame.

                  这是我的代码(来自 这个笔记本)

                  Here is my code (snippet from this notebook)

                  map_france = folium.Map(location=[47.000000, 2.000000], zoom_start=6)
                  map_france.choropleth(
                                      geo_str=open(geo_path + 'simplified_communes100m.json').read(),
                                      data=postal_count,
                                      columns=['Code_commune_INSEE', 'CP_count'],
                                      key_on='feature.geometry.properties.insee',
                                      fill_color='YlGn',
                  )
                  map_france.save(table_path + 'choro_test1.html')
                  

                  我仍然一次又一次地收到此错误:

                  I'm still getting this error again and again :

                  ---------------------------------------------------------------------------
                  AttributeError                            Traceback (most recent call last)
                  <ipython-input-83-ea0fd2c1c207> in <module>()
                        8                     fill_color='YlGn',
                        9 )
                  ---> 10 map_france.save('/media/flo/Stockage/Data/MesAides/map/choro_test1.html')
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/element.py in save(self, outfile, close_file, **kwargs)
                      151 
                      152         root = self.get_root()
                  --> 153         html = root.render(**kwargs)
                      154         fid.write(html.encode('utf8'))
                      155         if close_file:
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/element.py in render(self, **kwargs)
                      357         """Renders the HTML representation of the element."""
                      358         for name, child in self._children.items():
                  --> 359             child.render(**kwargs)
                      360         return self._template.render(this=self, kwargs=kwargs)
                      361 
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/element.py in render(self, **kwargs)
                      665 
                      666         for name, element in self._children.items():
                  --> 667             element.render(**kwargs)
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/element.py in render(self, **kwargs)
                      661         script = self._template.module.__dict__.get('script', None)
                      662         if script is not None:
                  --> 663             figure.script.add_children(Element(script(self, kwargs)),
                      664                                        name=self.get_name())
                      665 
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/jinja2/runtime.py in __call__(self, *args, **kwargs)
                      434             raise TypeError('macro %r takes not more than %d argument(s)' %
                      435                             (self.name, len(self.arguments)))
                  --> 436         return self._func(*arguments)
                      437 
                      438     def __repr__(self):
                  
                  <template> in macro(l_this, l_kwargs)
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/jinja2/runtime.py in call(_Context__self, _Context__obj, *args, **kwargs)
                      194                 args = (__self.environment,) + args
                      195         try:
                  --> 196             return __obj(*args, **kwargs)
                      197         except StopIteration:
                      198             return __self.environment.undefined('value was undefined because '
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/features.py in style_data(self)
                      352 
                      353         for feature in self.data['features']:
                  --> 354             feature.setdefault('properties', {}).setdefault('style', {}).update(self.style_function(feature))  # noqa
                      355         return json.dumps(self.data, sort_keys=True)
                      356 
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/folium.py in style_function(x)
                      671                 "color": line_color,
                      672                 "fillOpacity": fill_opacity,
                  --> 673                 "fillColor": color_scale_fun(x)
                      674             }
                      675 
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/folium.py in color_scale_fun(x)
                      659             def color_scale_fun(x):
                      660                 return color_range[len(
                  --> 661                     [u for u in color_domain if
                      662                      u <= color_data[get_by_key(x, key_on)]])]
                      663         else:
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/folium.py in <listcomp>(.0)
                      660                 return color_range[len(
                      661                     [u for u in color_domain if
                  --> 662                      u <= color_data[get_by_key(x, key_on)]])]
                      663         else:
                      664             def color_scale_fun(x):
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/folium.py in get_by_key(obj, key)
                      655                 return (obj.get(key, None) if len(key.split('.')) <= 1 else
                      656                         get_by_key(obj.get(key.split('.')[0], None),
                  --> 657                                    '.'.join(key.split('.')[1:])))
                      658 
                      659             def color_scale_fun(x):
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/folium.py in get_by_key(obj, key)
                      655                 return (obj.get(key, None) if len(key.split('.')) <= 1 else
                      656                         get_by_key(obj.get(key.split('.')[0], None),
                  --> 657                                    '.'.join(key.split('.')[1:])))
                      658 
                      659             def color_scale_fun(x):
                  
                  /home/flo/.virtualenvs/mesaides/lib/python3.4/site-packages/folium/folium.py in get_by_key(obj, key)
                      653 
                      654             def get_by_key(obj, key):
                  --> 655                 return (obj.get(key, None) if len(key.split('.')) <= 1 else
                      656                         get_by_key(obj.get(key.split('.')[0], None),
                      657                                    '.'.join(key.split('.')[1:])))
                  
                  AttributeError: 'NoneType' object has no attribute 'get'
                  

                  我尝试使用 key_on='feature.geometry.properties.insee' 没有任何成功.

                  I tried playing with key_on='feature.geometry.properties.insee' without any success.

                  推荐答案

                  有2个问题:

                  1 - 对insee"参数的正确访问是:key_on='feature.properties.insee'

                  1 - The correct access to 'insee' parameters is : key_on='feature.properties.insee'

                  找到正确的 key_on 的最佳方法是使用 geoJSON dict 以确保调用正确的属性.

                  The best way to find the right key_on is to play with the geoJSON dict to make sure you are calling the right properties.

                  2- 获得正确的 key_on 参数后,您需要确保 geoJSON 中的所有可用键 都包含在 Pandas DataFrame 中(否则它将引发 KeyError)

                  2- Once you have the right key_on parameters, you need to make sure that all the available keys in the geoJSON are contained in your Pandas DataFrame (otherwise it will raise a KeyError)

                  在这种情况下,我使用以下命令行来获取我的 geoJSON 包含的所有 insee 键:

                  In this case, I used the following command line to get all the insee keys contained by my geoJSON:

                  ogrinfo -ro -al communes-20150101-100m.shp -geom=NO | grep insee > list_code_insee.txt
                  

                  如果您遇到同样的问题,这应该可以解决您的问题.

                  If you are experiencing the same issue, this should solve your problem.

                  这篇关于Folium Choropleth + GeoJSON 引发 AttributeError: 'NoneType'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:Python 线程 stack_size 和 segfaults 下一篇:R传单地图上的叠加图像

                  相关文章

                  最新文章

                  <legend id='waWTb'><style id='waWTb'><dir id='waWTb'><q id='waWTb'></q></dir></style></legend>

                      <bdo id='waWTb'></bdo><ul id='waWTb'></ul>
                  1. <small id='waWTb'></small><noframes id='waWTb'>

                      <i id='waWTb'><tr id='waWTb'><dt id='waWTb'><q id='waWTb'><span id='waWTb'><b id='waWTb'><form id='waWTb'><ins id='waWTb'></ins><ul id='waWTb'></ul><sub id='waWTb'></sub></form><legend id='waWTb'></legend><bdo id='waWTb'><pre id='waWTb'><center id='waWTb'></center></pre></bdo></b><th id='waWTb'></th></span></q></dt></tr></i><div id='waWTb'><tfoot id='waWTb'></tfoot><dl id='waWTb'><fieldset id='waWTb'></fieldset></dl></div>
                      <tfoot id='waWTb'></tfoot>