【问题标题】:How do I convert pandas data frame to GeoJson overlay in folium如何将熊猫数据框转换为 folium 中的 GeoJson 叠加层
【发布时间】:2021-03-18 03:20:04
【问题描述】:

[我在这里有这段代码,但问题是当我执行 folium.GeoJson(data, name="geojson") 时它只返回 ValueError: Cannot render objects with any missing geometry: 0 {'type': 'MultiPolygon' , '坐标': [[[[-7....

import requests 
import json
import pandas as pd
import folium
map = folium.Map(location=\[40, -73\], zoom_start=6, tiles="OpenStreetMap")
fg = folium.FeatureGroup(name="Parks", show = False)
map.add_child(fg)
park_data = requests.get("https://data.cityofnewyork.us/resource/enfh-gkve.json")
park_data = park_data.json()
park_frame = pd.DataFrame(data=park_data)
park_geo_data = park_frame["multipolygon"]
fg.add_child(folium.GeoJson(park_geo_data, name = "Parks"))
map.add_child(folium.LayerControl(position="topright"))
map.save("about.html")
``` See image for what the data looks like raw from the rest api][1] 


[Shows error as well as shows what raw rest api response looks like][2]


  [1]: https://i.stack.imgur.com/dGSqL.png
  [2]: https://i.stack.imgur.com/XlKdS.png

【问题讨论】:

    标签: python html pandas request folium


    【解决方案1】:

    您可以遍历数据框的行并将行的“multipolygon”列作为 geojson 特征添加到 featureGroup。

    park_data = pd.read_json("https://data.cityofnewyork.us/resource/enfh-gkve.json")
    for i, row in park_data.iterrows():
        geo_data = row['multipolygon']
        fg.add_child(folium.GeoJson(geo_data))
    

    【讨论】:

    • 谢谢,但为什么我们需要 for 循环中的“i”
    • "i" 是数据框的索引列,您不需要它。这是我使用它的习惯,这样我就可以在某些东西不知道在哪里看时进行跟踪
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2023-03-18
    • 2015-06-11
    • 1970-01-01
    相关资源
    最近更新 更多