TimestamedGeoJson持续时间参数会导致面消失

TimestampedGeoJson duration parameter causes polygons to disappear(TimestamedGeoJson持续时间参数会导致面消失)
本文介绍了TimestamedGeoJson持续时间参数会导致面消失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在修改Plugins example notebook中第二个TimestamedGeoJson示例的代码片段时遇到问题。

持续时间参数被描述为"要素经过其时间后将在地图上显示的时间段。如果没有,则将显示所有以前的时间。"

以下面的案例为例,使用两个多边形

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  |          |          |
+-----------+----------+----------+

这是持续时间参数中的错误,还是我遗漏了什么?

我使用的是Folium0.6.0版,没有广告拦截程序。这在jupyter和html导出中都会发生。#894中引入了持续时间参数。

推荐答案

由于GitHub和was also answered there都问了同样的问题,下面我将复制粘贴giHub用户andy23512的答案,以帮助那些在giHub上意外找不到答案的人。

下面引述的答案如下:

"根据leaflet.js的相应文件,( https://github.com/socib/Leaflet.TimeDimension/tree/520cb80f645112e242c5160cb44b7d5f2cae380d#ltimedimensionlayergeojson )

CoordTimes、Times或Line Strong Timestamps:可以是 与几何图形(日期字符串或毫秒)相关联。在此情况下, 字符串,则它必须具有与 线条。

这意味着如果要在这6个时间戳显示面, 几何坐标列表的长度应为6,以便指定 要在相应时间戳处显示的多边形。

在本例中,您希望在这6个位置显示相同的面(Polygon1 时间戳。您可以在坐标列表后添加*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

希望这会有帮助。"

这篇关于TimestamedGeoJson持续时间参数会导致面消失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Make gRPC messages JSON serializable(使GRPC消息JSON可序列化)
Send plain JSON to a gRPC server using python(使用Python将纯JSON发送到GRPC服务器)
how to iterate through geojson elements(如何循环访问Geojson元素)
how to validate properties key in a geojson(如何验证Geojson中的属性密钥)
Python JSONDecoder custom translation of null type(空类型的Python JSONDecoder自定义翻译)
Splitting a MultiPolygon(拆分多重多边形)