我在修改Plugins example notebook中第二个TimestampedGeoJson示例中的代码片段时遇到麻烦。
duration参数被描述为“要素经过时间后将在地图上显示的时间段。如果为None,则将显示所有以前的时间。”
以下面的两个多边形为例
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 | | |
+-----------+----------+----------+
这是duration参数中的错误,还是我错过了什么?
我使用的是0.6.0版的无广告拦截器的叶子。这在Jupyter和html导出中均会发生。持续时间参数是在#894中引入的。
答案 0 :(得分:1)
由于在GitHub和was also answered there上提出了相同的问题,因此我将在下文中复制并粘贴GitHub用户“ andy23512”的答案,以帮助那些找不到答案的人。 GitHub上发生事故。
以下给出了引用的答案:
“根据leaflet.js的相应文档,( https://github.com/socib/Leaflet.TimeDimension/tree/520cb80f645112e242c5160cb44b7d5f2cae380d#ltimedimensionlayergeojson )
coordTimes,times或linestringTimestamps:可以是 与几何关联(日期字符串或ms)。如果是 LineString,它必须与 LineString。
这意味着,如果要在这6个时间戳上显示多边形,则 几何坐标列表的长度应为6,以便指定 在相应的时间戳记下显示的多边形。
在这种情况下,您希望在这6个像素上显示相同的多边形(polygon1) 时间戳记。您可以在坐标列表后添加* 6进行复制。
因此符合您期望的代码将是:
attributes
希望有帮助。”