TimestampedGeoJson持续时间参数会导致多边形消失

时间:2018-08-25 05:54:08

标签: python geojson folium

我在修改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中引入的。

1 个答案:

答案 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

希望有帮助。”