Python TimestampedGeoJson duration参数导致多边形消失
在中修改第二个TimestampedGeoJson示例中的代码片段时遇到问题 duration参数被描述为“特征经过时间后将在地图上显示的时间段。如果没有,则显示所有以前的时间。” 以下面两个多边形为例Python TimestampedGeoJson duration参数导致多边形消失,python,geojson,folium,Python,Geojson,Folium,在中修改第二个TimestampedGeoJson示例中的代码片段时遇到问题 duration参数被描述为“特征经过时间后将在地图上显示的时间段。如果没有,则显示所有以前的时间。” 以下面两个多边形为例 import folium from folium.plugins import TimestampedGeoJson m = folium.Map(location=[52.467697, -2.548828], zoom_start=6) polygon_1 = { 'type'
import folium
from folium.plugins import TimestampedGeoJson
m = folium.Map(location=[52.467697, -2.548828], zoom_start=6)
polygon_1 = {
'type': 'Feature',
'geometry': {
'type': 'MultiPolygon',
'coordinates': [((
(-2.548828, 51.467697),
(-0.087891, 51.536086),
(-1.516113, 53.800651),
(-6.240234, 53.383328),
),)],
},
'properties': {
'style': {
'color': 'blue',
},
'times': ['2015-07-22T00:00:00', '2015-08-22T00:00:00',
'2015-09-22T00:00:00', '2015-10-22T00:00:00',
'2015-11-22T00:00:00', '2015-12-22T00:00:00']
}
}
polygon_2 = {
'type': 'Feature',
'geometry': {
'type': 'MultiPolygon',
'coordinates': [((
(-3.548828, 50.467697),
(-1.087891, 50.536086),
(-2.516113, 52.800651),
(-7.240234, 52.383328),
),)],
},
'properties': {
'style': {
'color': 'yellow',
},
'times': ['2015-07-22T00:00:00', '2015-08-22T00:00:00']
}
}
TimestampedGeoJson(
{'type': 'FeatureCollection', 'features': [polygon_1, polygon_2]},
period='P1M',
duration='P1M',
auto_play=False,
loop=False,
loop_button=True,
date_options='YYYY/MM/DD',
).add_to(m)
m
第一个多边形在7月到12月期间处于活动状态,因此我希望它在所有时间段都被绘制;第二个多边形仅在7月和8月处于活动状态,因此应将其绘制到最后一个月后的一个月:即7月、8月和9月
相反,我看到的是两个多边形都在第一个周期中绘制,在第二个周期中消失,然后第二个多边形在9月份绘制,在10月份再次消失。要明确的是:
预期的
+-----------+----------+----------+
| Month | Polygon1 | Polygon2 |
+-----------+----------+----------+
| July | X | X |
| August | X | X |
| September | X | X |
| October | X | |
| November | X | |
| December | X | |
+-----------+----------+----------+
+-----------+----------+----------+
| Month | Polygon1 | Polygon2 |
+-----------+----------+----------+
| July | X | X |
| August | | |
| September | X | |
| October | | |
| November | | |
| December | | |
+-----------+----------+----------+
观察到的
+-----------+----------+----------+
| Month | Polygon1 | Polygon2 |
+-----------+----------+----------+
| July | X | X |
| August | X | X |
| September | X | X |
| October | X | |
| November | X | |
| December | X | |
+-----------+----------+----------+
+-----------+----------+----------+
| Month | Polygon1 | Polygon2 |
+-----------+----------+----------+
| July | X | X |
| August | | |
| September | X | |
| October | | |
| November | | |
| December | | |
+-----------+----------+----------+
这是duration参数中的错误,还是我遗漏了什么
我使用的是folium版本0.6.0,没有广告拦截器。这在Jupyter和html导出中都会发生。持续时间参数是在中引入的。因为在GitHub上问了相同的问题,我将在下文中复制粘贴GitHub用户“和Y23512”的答案,以帮助那些在GitHub上意外找到答案的人 以下是引用的答案: “根据传单.js的相应文件( ) coordTimes、times或linestringTimestamps:可以 与几何体(日期字符串或ms)关联。如果是 LineString,它必须具有与中的坐标相同数量的项 线串 这意味着,如果要在这6个时间戳上显示多边形 几何坐标列表的长度应为6,以便指定 要在相应时间戳处显示的多边形 在本例中,您希望在这6个位置显示相同的多边形(多边形1) 时间戳。您可以在坐标列表后添加*6进行复制 因此,满足您期望的代码是:
import folium
from folium.plugins import TimestampedGeoJson
m = folium.Map(location=[52.467697, -2.548828], zoom_start=6)
polygon_1 = {
'type': 'Feature',
'geometry': {
'type': 'MultiPolygon',
'coordinates': [((
(-2.548828, 51.467697),
(-0.087891, 51.536086),
(-1.516113, 53.800651),
(-6.240234, 53.383328),
),)] * 6, # duplicatation for matching 6 timestamps
},
'properties': {
'style': {
'color': 'blue',
},
'times': ['2015-07-22T00:00:00', '2015-08-22T00:00:00',
'2015-09-22T00:00:00', '2015-10-22T00:00:00',
'2015-11-22T00:00:00', '2015-12-22T00:00:00']
}
}
polygon_2 = {
'type': 'Feature',
'geometry': {
'type': 'MultiPolygon',
'coordinates': [((
(-3.548828, 50.467697),
(-1.087891, 50.536086),
(-2.516113, 52.800651),
(-7.240234, 52.383328),
),)] * 2, # duplicatation for matching 2 timestamps
},
'properties': {
'style': {
'color': 'yellow',
},
'times': ['2015-07-22T00:00:00', '2015-08-22T00:00:00']
}
}
TimestampedGeoJson(
{'type': 'FeatureCollection', 'features': [polygon_1, polygon_2]},
period='P1M',
duration='P1M',
auto_play=False,
loop=False,
loop_button=True,
date_options='YYYY/MM/DD',
).add_to(m)
m
希望这能有所帮助。”