当前位置: 首页 > 知识库问答 >
问题:

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

方飞翼
2023-03-14

我有一个。Geojson文件(称之为data.geojson),我用它来手动更新mapbox上的数据集。

假设我的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文件。我正在寻找一种方法来完成这项任务pythonical。

任何帮助都将不胜感激!

共有2个答案

包沈义
2023-03-14

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

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

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

廖绍辉
2023-03-14

您可以设置某种计时器,使用javascript函数自动更新数据。在这里,我使用一个名为“STI”的源代码和层,它只是geoJSON行数据。

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

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()函数可以做得更好。但希望这能让你开始。

 类似资料:
  • 有没有一种方法可以使用标准ajax请求从mapbox获取geojson文件? 比如: 我们目前下载了一个geojson文件,并将其作为本地脚本加载到站点上,一切正常。但是拜托,必须有一种方法从mapbox获取它,这样我们就不必不断更新本地文件。客户永远不会理解这个概念。 有人知道API访问点或获取geosjon文件的东西吗?

  • 我试图使用MapBox来显示所有聚集在一个城市中的多个属性。 (还没有在这和传单之间做出决定) 这是我第一次处理geoJSON内容,并尝试创建包含多个地址的文件。 这是我从网上某个地方得到的一个示例,Mapbox一直在说: 它来自这个名为testing.geojson的文件,其中只包含以下内容: 我真的很困惑为什么它一直产生这个错误,因为我希望使这个示例与属性的实际地址一起工作。 任何建议/帮助将

  • 因此,我在脚本文件夹中有两个独立的GeoJSON文件,一个用于绘制边界线,另一个用于放置标记。每个GeoJSON文件都有不同的内容,例如: 还有一个: 将一个GeoJSON放在这种格式中工作, 但是如何添加另一个geoJSON呢?

  • 我有一个MapBox地图,上面有通过MapBox网站创建的图钉。 我用我网站上的图钉打电话给这张地图。 就我的一生而言,我无法找到任何相关代码来完成以下两件事: 1) 我需要修改预先制作的点的GeoJSON数据,以向其添加URL(要执行类似操作:https://www.mapbox.com/mapbox.js/example/v1.0.0/markers-as-links/ ). 如何访问JS中的

  • 我举了一个例子:https://docs.mapbox.com/android/maps/examples/marker-symbol-layer/ 它起作用了。 然后,我尝试用源geojson替换这些点,但没有成功,如下所述:https://docs.mapbox.com/android/maps/guides/data-driven-styling/#geojson 除了在地图上添加新东西的部

  • 我正在用RubyonRails编写这个应用程序,我将应用程序设置为从特定路径提供GeoJson。我想让Mapbox从指定路径获取GeoJson,并将其添加到地图中。下面是我创建地图的javascript代码 当我导航到时,我得到以下响应。 地图加载得很好,但没有形状。令人沮丧的是,浏览器中没有错误,GeoJson在GeoJson.io上签出。 我做错了什么?