import folium
def map2png(map_data,out_file='pdf.png'):
mo = folium.Map(location=[0, 0])
fg = folium.FeatureGroup()
fg.add_child(folium.TileLayer(
tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
attr="© <a href=http://ditu.amap.com/>高德地图</a>",
min_zoom=0,
max_zoom=19,
control=True,
zoom_control=False,
show=True))
fg.add_child(folium.Marker(
location=[45.3311, -121.7113],
popup="Timberline Lodge",
icon=folium.Icon(color="green")))
fg.add_child(folium.PolyLine(
locations=[[38.68,115.67],
[38.85,115.48],
[38.65,115.37],
[38.68,115.67]],
color='green', weight=2, opacity=1))
fg.add_child(folium.Polygon(
locations=[[38.68,115.67],
[38.85,115.48],
[38.65,115.37],
[38.68,115.67]],
color='green', weight=2,
fill=True,fill_color = 'red'))
mo.add_child(fg)
mo.fit_bounds([[38.68,115.67],
[38.85,115.48],
[38.65,115.37],
[38.68,115.67]])
init_script = """
var mapsPlaceholder = [];
L.Map.addInitHook(function () {mapsPlaceholder.push(this);});
mo.get_root().script.add_child(folium.Element(init_script))
Jwwg().add_to(mo)
root = mo.get_root()
html = root.render()
提示:这里对文章进行总结:
本博客是以使用的优先级来讲解这个库。<我们靠所得来谋生,但靠给予来创造生活>
1. folium库在标记经纬度时要先写纬度后写经度,这点在5.6.7三个部分上均有体现,一定要注意。2. 本文各部分代码可以根据实际需求选择性参考,有些也可以连起来实现一些其他的功能。例1:excel中获取到的地点名称列表可以再导入到2中进行批量查询经纬度,再用6批量标记。例2:手中的excel数据集中的经纬度采用的是百度坐标系,可以将其导出为list后再导入进3中转为高德坐标系经纬度,最后再用6进行批量标记。Folium — Folium unknown 文档。
def marker(trajectory_df):
trajectory = folium.map.FeatureGroup()
for index,row in trajectory_df.iterrows():
trajectory.add_child(
folium.CircleMarker(
[row['lat'],row['lon']],
ra = 6378140 # 赤道半径
rb = 6356755 # 极半径
flatten = (ra - rb) / ra # Partial rate of the earth
# change angle
一个本地化的 folium 地图资源,包括了js,css 等文档,配合python脚本将对应资源的引用本地化,避免了引入url资源时跨境加载js/css资源网络慢的问题,提升本地folium地图的加载速度,速度提升 800 倍,让地图打开真正的飞起来。
如果是在线地图,也可以能本服务器代理 js/css 资源来避免跨地域远程访问,提升地图打开速度,优化网页使用体验。
我讲一下我这个需求的来源,做的项目是一个地理空间查询和使用的系统,通过在前端调用高德地图api创建了一个查询区域,获取区域内的地理数据(数据库)。具体的需求就是,将查询区域和地理数据制作成一个覆盖率分析报告,报告中的其他内容都已完成,但报告中需要展示高德地图、查询区域、地理数据的完整图片这个功能卡了2个星期,主要原因是我对地理空间数据不熟悉,很多python相关库也不清楚,在构建图形的过程中走了很多弯路。
js中的百度地图使用
html中的控件
<div class="console" id="map" style="border:1px solid #fff;width:100%;float:left;min-height:400px;">
<fieldset class="demo_content"></fieldset>
js中的代码
/** 地图展示 **/
oldBaseLocation=data[0].mer
导航网格或 navmesh是一种用于虚拟环境中路线规划的数据结构,在游戏开发中特别有用。它由一组代表地图区域的凸多边形组成,多边形的边用额外的连接信息进行了注释,显示了游戏角色可以穿越的区域。正如你在下图中看到的,导航网格提供了世界上障碍物的简化表示,允许路线规划算法快速有效地计算出最佳路径。我不会在这篇文章中过多地谈论导航网格背后的理论,网络上有很多很好的资源;维基百科条目是一个很好的起点。相反,我将专注于构建导航网格的技术。
数据可视化-Python中的folium的图层层级控制
Folium是一个基于leaflet.js的python地图库,本文简单介绍下folium的图层的结构设计和多个图层控制的实现:
Folium的元素架构
Folium官方文档中写的比较散,我这里画了个元素的架构示意图。
https://python-visualization.github.io/folium/
Map属性是Folium的基本属性。
三类(Vector_Layer、Raster_Layer、EtraFeatures)图层元素可以通过