为了账号安全,请及时绑定邮箱和手机立即绑定

地图框:以编程方式从 .geojson 文件更新地图框数据集

地图框:以编程方式从 .geojson 文件更新地图框数据集

交互式爱情 2022-09-27 16:37:29
我有一个 .geojson 文件(称为 data.geojson),我用它来手动更新地图框中的数据集。假设我的 data.geojson 文件的结构如下:{  "type": "FeatureCollection",  "features": [    {      "type": "Feature",      "properties": {        "suburb": "A",        "unemployed": 10      },      "geometry": {        "type": "Point",        "coordinates": [          0,          0        ]      }    },    {      "type": "Feature",      "properties": {        "suburb": "B",        "unemployed": 20      },      "geometry": {        "type": "Point",        "coordinates": [          1,          1        ]      }data.geojson 存储在本地,并且每 12 小时使用另一个从 Web 抓取数据的 python 脚本更新每个要素的“待业”属性。目前,为了更新在线数据集(存储在 mapbox.com)中的这些属性,我正在手动导航到Mapbox网站并重新上传data.geojson文件。我正在寻找一种方法来逐步完成这项任务。任何帮助将不胜感激!
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您可以设置某种类型的计时器,以使用javascript函数自动更新数据。在这里,我使用的是名为“STI”的源和图层,它只是地理JSON线数据。


该函数将首先添加数据源以及图层:


var STI_SOURCE = 'json/sti/STI.json'; // declare URL for data



        map.addSource('sti', { type: 'geojson', data: STI1 }); // Add source using URL


        // Add the actual layer using the source

        map.addLayer({

            "id": "sti",

            "type": "line",

            "source": "sti",

            "layout": {

                "line-join": "miter",

                "line-cap": "round"

            },

            "paint": {

                "line-color": "#fff",

                "line-width": 1,

                "line-dasharray": [6, 2]

            }

        });

然后,当您要刷新数据时 - 删除它们:


                    map.removeLayer('sti');       

                    map.removeSource('sti');

然后,您可以通过从头开始重新添加它们。还有其他方法(而且更好)可以做到这一点,但这只是一种有效的方法。我认为有一个 setData() 函数可以更好地做到这一点。但希望这可以让你开始。


查看完整回答
反对 回复 2022-09-27
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

最后,我的解决方案只是将 Mapbox 图层的源指向本地存储的 dataset.geojson 文件,而不是在线存储在 mapbox.com 的相应数据集。

我能够使用“json”python包编辑本地存储的数据集.geojson。由于 Mapbox 图层源直接指向本地数据集,因此对此本地文件的所有更新都将反映在 Mapbox 图层中。这样,就无需将任何数据上传到 Mapbox。

@David还发布了一个有用的解决方案,如果你想走这条路。


查看完整回答
反对 回复 2022-09-27
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信