folium是一个python很友好的地图开发工具;
Folium是一个Python库,用于在地图上可视化数据。它基于Leaflet.js库,可以轻松创建交互式地图,并支持添加标记、绘制多边形、绘制热力图等功能。
你可以在官方文档中找到更多关于Folium的介绍和用法:https://python-visualization.github.io/folium/
GeoServer 是一个用于共享地理空间数据的开源服务器,里面会存储各种图层(layer),
GeoServer是一个开源的地理信息系统服务器,它允许用户共享、处理和编辑地理空间数据。它支持多种地理数据格式,可以通过标准的地理信息系统协议(如WMS、WFS、WCS)来访问和发布地理数据。
GeoServer提供了一个用户友好的Web界面,使用户可以轻松地配置和管理地理数据服务。它还支持插件和扩展,可以根据用户的需求进行定制和扩展。
有关更多关于GeoServer的信息,您可以访问官方网站:https://geoserver.org/
如果您对GeoServer的代码感兴趣,可以查看其GitHub仓库:https://github.com/geoserver/geoserver
如果想将GeoServer 里面的图层显示在folium的地图里面要怎么弄呢?
首先要用到folium里面一个api : WmsTileLayer ,这个api就是专门给WMS使用的,这个是官方给的案例
详细使用请查阅官方教程;
接着打开你需要加载到folium的地图上面的layer,比如我们随便选个sf:restricted!
点击查看长什么样先:
把对应的名称 sf:restricted
复制下来,然后填入WmsTileLayer
里面对应的参数name
。
上代码:
import folium
m = folium.Map(location=[41, -70], zoom_start=5)
folium.WmsTileLayer(
url="http://localhost:8087/geoserver/wms", # geoserver的uri
name="ne:countries", # folium生成map图层的名字,这里可以随便命名
fmt="image/png", # 这里不用动,改了就出问题了,默认就是必须PNG格式
layers="sf:restricted", # geoserver的图层wms对应的name参数
transparent=True, # 最好默认
overlay=True, # 最好默认
control=True, # 最好默认
).add_to(m)
folium.LayerControl().add_to(m) # 弄到folium的图层里面, 可以选择展示或不展示
m.save("folium_geoserver_map.html") # 保存成html文件
import webbrowser
webbrowser.open("folium_geoserver_map.html") # 执行完毕直接调动本地浏览器打开查看
最后合成生成的地图:
这就是folium跟geoserver的layer图层相结合的一个例子,大家也可以依样画葫芦用其他geoserver里面的layer结合到folium里面去展示。
去掉这个添加的geiserver的countries图层,就是folium原生的openstreet地图啦。
注:本文属本人原创,在下虽不才, 但如需转载运用请标明引用来源!有盗窃嫌疑或商用将追究法律责任!