- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 folium 做一个 choropleth它在 GeoJSON、Pandas 和传单之间提供了很好的链接。
GeoJSON 格式如下:
{
"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
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')
---------------------------------------------------------------------------
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'
没有任何成功。
最佳答案
有两个问题:
1 - 对“insee”参数的正确访问是:key_on='feature.properties.insee'
找到合适的最好方法 key_on
是使用 geoJSON dict 来确保调用正确的属性。
2- 一旦你有权利 key_on
参数,你需要确保 geoJSON 中所有可用的键 包含在您的 Pandas DataFrame 中(否则它会引发 KeyError
)
在这种情况下,我使用以下命令行来获取所有 insee
我的 geoJSON 包含的键:
ogrinfo -ro -al communes-20150101-100m.shp -geom=NO | grep insee > list_code_insee.txt
关于pandas - Folium Choropleth + GeoJSON 引发 AttributeError : 'NoneType' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37003421/
我想在 map 上显示一些地理位置,但我希望 map 图钉图标显示数字而不是默认 map 图钉。 有没有办法做到这一点? 我检查了 Font Awesome 图标,但它没有用。 下面是我的代码: im
我有两个 choropleth 层,我想在其中添加 GeoJsonTooltip,但我一直收到错误 TypeError: __init__() missing 1 required positiona
我有一张使用以下代码生成的纽约市街区 map : m = folium.Map(location=[40.7035, -73.990], zoom_start=16.5,
我一直在尝试理解来自 folium 的 TimestampedGeoJson 插件。 我想绘制随时间改变颜色的线条。目前,我所做的是每次需要更改颜色时完全重画一条线,这会带来巨大的开销。 另一个问题是
我正在使用 Folium 的半圆插件 ( https://github.com/syberworld/Folium-SemiCircle )。它有默认的蓝色: 我尝试使用一些传单方法,例如line_c
使用 Folium 0.3.0 运行 Python 3.5.2。 我正在尝试创建自定义弹出窗口,每当我单击包含数据的特定国家/地区时就会出现。我设法让弹出窗口出现,但我迷失了将值动态传递给它们的过程。
我有一个带有路线起点和终点经纬度的 Pandas DataFrame,所以这些是我的列('origin_lat、'origin_lon'、destination_lat'、'destination_l
我有一张由 folium 绘制的 map 如下: m = folium.Map(location = [51.1657,10.4515], zoom_start=6, min_zoom = 5, ma
我正在尝试使用我的数据通过 folium 制作热图。下面是我的代码,但我不断收到错误消息:RecursionError: maximum recursion depth exceeded我不知道这意味
我阅读了许多与此相关的文档,但找不到我要找的东西。 我想绘制两点之间的步行路径。是否可以?如果没有,python 中是否还有其他库用于此目的? 最佳答案 当然可以。使用 PolyLine : impo
我正在尝试根据 df 列中的数字范围为大叶中的标记设置颜色范围。我使用以下代码绘制了标记,但我不知道从哪里开始分配颜色范围。 m = folium.Map(location=[39.2904, -76
我希望每个弹出窗口都有柱的名称和 WB100 列表中的位置,列:柱,wb_pos。这是我的代码,由于某些原因每个标记的弹出窗口都相同 =“东京”请参阅随附的数据框和输出。 请看下面的部分数据框: da
如何并排显示两张 folium map ?(类似于下图,但我希望显示 folium map ,而不是 matplotlib 图表) 编辑:我想在 jupyter 笔记本中显示这些 map 。这是我当前
我正在使用 MarkerCluster 在 folium 中创建传单 map 。我已经查阅了所有文档并搜索了示例,但我无法弄清楚如何为给定的 MarkerCluster 或 FeatureGroup
我正在为 Folium 编写一个包装器,用于绘制我经常使用的数据。我的类(class)看起来像... """ Plot journeys using Folium """ import folium
我正在使用 folium 制作纽约公寓价格的热图。我正在尝试使用我自己的颜色渐变。当我在热图函数中指定梯度参数时,我的 map 上没有显示任何内容。有谁知道如何生成我们自己的颜色渐变以及理想情况下 m
我正在使用基于 json 文件创建的 folium map 。我使用 branca.colormap 添加了 颜色图,并且我想添加背景颜色,因为生成的颜色图可能会在其后面的 map 上有一些颜色,这会
我正在策划美国空军在朝鲜 war 期间对朝鲜执行的任务。 以下是2800个地 block 的 map 。 我总共有大约 7500 个图,但是每当我尝试在 2800 以上绘制时,都会渲染一个空白 map
我在 python 中有这段代码并显示 map 。 import folium from IPython.display import HTML, display city_location = [-
用一个像这样的简单例子: import folium map_1 = folium.Map(location=[45.372, -121.6972], zoom_start=12,
我是一名优秀的程序员,十分优秀!