Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TimestampedGeoJson duration参数导致多边形消失_Python_Geojson_Folium - Fatal编程技术网

Python 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'

在中修改第二个TimestampedGeoJson示例中的代码片段时遇到问题

duration参数被描述为“特征经过时间后将在地图上显示的时间段。如果没有,则显示所有以前的时间。”

以下面两个多边形为例

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
希望这能有所帮助。”