【问题标题】:GeoJson layer not visible on python Folium mapGeoJson 层在 python Folium 地图上不可见
【发布时间】:2020-05-12 02:50:38
【问题描述】:

我正在尝试将 GeoJSON 图层添加到 Folium 地图,但该图层在地图中不可见,尽管它在 folium 的图层选择器中可见。我能够在 Qgis 中查看数据,因此数据是正确的。我在 Spyder 中也没有收到错误。

我还在浏览器中检查了 HTML,似乎有一个脚本添加了所有坐标等。浏览器在检查文件时没有显示错误。

有人知道我错过了什么吗?

import folium

m = folium.Map(
    location=[-59.1759, -11.6016],
    tiles='OpenStreetMap',
    zoom_start=2  # Limited levels of zoom for free Mapbox tiles.
)

folium.GeoJson(
    data=(open('./projects/test/data/breda_bus_route.geojson', "r").read()),
    name='layerName',

).add_to(m)

folium.LayerControl().add_to(m)

m.save('index.html')

【问题讨论】:

    标签: python leaflet folium


    【解决方案1】:

    正确的答案应该是在 Qgis 中将图层导出到 GeoJSON 时简单地使用 EPSG:4326 - WSG 84。这实际上是大多数 web 地图使用的坐标系 (CRS),并在编辑中提到。

    我还建议将坐标精度设置为 5 以获得更轻的文件,坐标中的 5 位精度通常对于 Web 可视化来说已经足够了。 15 绝对没有必要。

    【讨论】:

      【解决方案2】:

      GeoJSON 图层可能不可见,因为它不适合给定的地图视图,请尝试将 GeoJSON 图层动态适应地图视图:

      layer = folium.GeoJson(
          data=(open(path, "r").read()),
          name='geojson',
      
      ).add_to(m) # 1. keep a reference to GeoJSON layer
      
      
      m.fit_bounds(layer.get_bounds())  # 2. fit the map to GeoJSON layer 
      

      更新

      它似乎与 GeoJSON 文件投影 EPSG::3857 相关,Leaflet 预计 EPSG:4326

      GeoJSON 重新投影后,图层将像这样渲染

      【讨论】:

      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多