python - 将弹出窗口添加到 folium 中的 geojson 层

标签 python json leaflet geojson folium

我有以下使用此 geojson file 的代码作为输入。

import folium
markers_geojson='volcanoes_json.geojson'  
map=folium.Map(location=[0,0],zoom_start=6,tiles='Mapbox bright')
map.add_child(folium.GeoJson(data=open(markers_geojson),name='Volcano').add_child(folium.Popup("A plain pop up string")))    
map.save(outfile='test5.html')

以上代码生成带有标记的传单 map 。问题是它当前在弹出消息中显示一个静态字符串(即“一个普通的弹出字符串”)。我不知道如何显示 geojson 属性(例如 STATUS 属性)的值。

有人知道如何实现这个吗?

最佳答案

您需要遍历文件。下面提到的文件是一个简单的文件,有纬度、经度和高程三列。

如果您以此格式创建一个简单的文本文件,此代码将循环遍历文件并添加它们。它获取具有纬度、经度、高程的列,并在弹出窗口中创建动态弹出窗口。

data = pandas.read_csv("Volcanoes.txt")
lat = list(data["LAT"])
lon = list(data["LON"])
elev = list(data["ELEV"])

# make a color code for elevation
def color_producer(elevation):
    if elevation < 1000:
        return 'green'
    elif 1000 <= elevation < 3000:
        return 'orange'
    else:
        return 'red'

# set the base map
map = folium.Map(location=[47.0, -122.5], zoom_start=12)

# add an additional tile layer
map.add_tile_layer("Stamen Toner")

fgv = folium.FeatureGroup(name="Volcanoes")

# loop through and plot everything
for lt, ln, el in zip(lat, lon, elev):
    fgv.add_child(folium.CircleMarker(location=[lt, ln], radius = 6, popup=str(el)+" m",
    fill_color=color_producer(el), fill=True,  color = 'grey', fill_opacity=0.7))

fgp = folium.FeatureGroup(name="Population")

# add a map of shading by population
fgp.add_child(folium.GeoJson(data=open('world.json', 'r', encoding='utf-8-sig').read(),
style_function=lambda x: {'fillColor':'green' if x['properties']['POP2005'] < 10000000
else 'orange' if 10000000 <= x['properties']['POP2005'] < 20000000 else 'red'}))



# add the layers
map.add_child(fgv)
map.add_child(fgp)
map.add_child(folium.LayerControl())

关于python - 将弹出窗口添加到 folium 中的 geojson 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171687/

相关文章:

json - 通过 Hapi 将响应从 MongoDB 流式传输到客户端

json - 如何在 swift 中保存响应 JSON 数组并使用用户默认值进行检索

python - 显示 json python discord bot

javascript - 使用 Leaflet 和本地主机拒绝位置访问

javascript - 传单:如何模拟鼠标点击? fireevent ('click' ) 不触发弹出窗口

python - selenium 通过 xpath 查找元素出现错误,其中 lxml 中的相同表达式可以

python - Python 中的常用日志记录模块

python - 根据 Groupby 获取列的值计数

javascript - 在传单中编辑多边形后如何获取修改后的和原始的geojson点?

python - Pydantic 模型仅计算一次属性