Python根据经纬度在地图上显示(folium)

这篇具有很好参考价值的文章主要介绍了Python根据经纬度在地图上显示(folium)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、folium介绍

1.folium.Map参数简要介绍

1、location地图中心点 经纬度,list 或者 tuple 格式,顺序为 latitude(纬度), longitude(经度)

2、zoom_start地图等级 缩放值,默认为 10,值越大比例尺越小,地图放大级别越大

3、tiles 显示样式,默认*‘OpenStreetMap’*,也就是开启街道显示;也有一些其他的内建地图样式,如’Stamen Terrain’、‘Stamen Toner’、‘Mapbox Bright’、'Mapbox Control Room’等;也可以传入’None’来绘制一个没有风格的朴素地图,或传入一个URL来使用其它的自选osm

4、crs 地理坐标参考系统,默认为"EPSG3857"

5、width:int型或str型,int型时,传入的是地图宽度的像素值;str型时,传入的是地图宽度的百分比,形式为’xx%‘。默认为’100%’

6、height:控制地图的高度,格式同width

7、max_zoom:int型,控制地图可以放大程度的上限,默认为18

8、attr:str型,当在tiles中使用自选URL内的osm时使用,用于给自选osm命名

9、control_scale:bool型,控制是否在地图上添加比例尺,默认为False即不添加

10、no_touch:bool型,控制地图是否禁止接受来自设备的触控事件譬如拖拽等,默认为False,即不禁止

2.folium.Marker参数介绍

1、location:同folium.Map()中的同名参数,用于确定标记部件的经纬位置

2、popup:str型或folium.Popup()对象输入,用于控制标记部件的具体样式(folium内部自建了许多样式),默认为None,即不显示部件

3、icon:folium.Icon()对象,用于设置popup定义的部件的具体颜色、图标内容等

二、Python根据经纬度在地图上显示(示例)

输入经纬度生成地图,Python,python,数学建模,开发语言文章来源地址https://www.toymoban.com/news/detail-622169.html

1.经纬度坐标标记

import pandas as pd
import folium
from folium.plugins import MarkerCluster

data = pd.read_excel('******.xlsx')  # 读取文件
data_1 = data[data['类型'] == '***1']
data_2 = data[data['类型'] == '***2']
data_1.reset_index(inplace=True, drop=True)
data_2.reset_index(inplace=True, drop=True)
# print(data_1.head())
# print(data_2.head())
# exit()
m = folium.Map(location=[31.97117, 116.49872],  # 中心点
               zoom_start=8,  # 初始地图等级
               # 腾讯地图瓦片
               tiles='http://rt1.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=6',
               # 默认参数
               attr='default')
flag = False  # 是否使用聚合
if flag:
    # 创建聚合
    marker_cluster = MarkerCluster().add_to(m)
    # for循环添加标记点
    for i in range(len(data_1)):
        folium.Marker(location=[data_1.loc[i, '纬度'], data_1.loc[i, '经度']],  # 坐标用[纬度,经度]
                      popup=folium.Popup(str(data_1.loc[i, 'NAME']),
                                         parse_html=True,
                                         tooltip=str(data_1.loc[i, 'NAME']),
                                         max_width=100),  # 提示语横向完全显示
                      icon=folium.Icon(color='red')
                      ).add_to(marker_cluster)
    for j in range(len(data_2)):
        folium.Marker(location=[data_2.loc[j, '纬度'], data_2.loc[j, '经度']],  # 坐标用[纬度,经度]
                      popup=folium.Popup(str(data_2.loc[j, 'NAME']),
                                         parse_html=True,
                                         tooltip=str(data_2.loc[j, 'NAME']),
                                         max_width=100),  # 提示语横向完全显示
                      icon=folium.Icon(color='blue')
                      ).add_to(marker_cluster)
else:
    # for循环添加标记点
    for i in range(len(data_1)):
        folium.Marker(location=[data_1.loc[i, '纬度'], data_1.loc[i, '经度']],  # 坐标用[纬度,经度]
                      popup=folium.Popup(str(data_1.loc[i, 'NAME']),
                                         parse_html=True,
                                         tooltip=str(data_1.loc[i, 'NAME']),
                                         max_width=100),  # 提示语横向完全显示
                      icon=folium.Icon(color='red'),
                      ).add_to(m)
    for j in range(len(data_2)):
        folium.Marker(location=[data_2.loc[j, '纬度'], data_2.loc[j, '经度']],  # 坐标用[纬度,经度]
                      popup=folium.Popup(str(data_2.loc[j, 'NAME']),
                                         parse_html=True,
                                         tooltip=str(data_2.loc[j, 'NAME']),
                                         max_width=100),  # 提示语横向完全显示
                      icon=folium.Icon(color='blue'),
                      ).add_to(m)
'''为地图对象添加点击显示经纬度的子功能'''
m.add_child(folium.LatLngPopup())
# 点击新增
# m.add_child(folium.ClickForMarker())
m.save('坐标分布图.html')

2.经纬度坐标分组标记

import pandas as pd
import folium
from folium.plugins import MarkerCluster
from folium import FeatureGroup, LayerControl

tile = 'http://rt1.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=0'

df = pd.read_excel('******.xlsx')  # 读取文件
df_1 = df[df['类型'] == '***1']
df_2 = df[df['类型'] == '***2']
df_1.reset_index(inplace=True, drop=True)
df_2.reset_index(inplace=True, drop=True)
distriction = df['所属市'].drop_duplicates()

m = folium.Map(location=[30.97117, 132.49872],  # 地图中心点
               tiles=None,
               control_scale=True,  # 显示比例尺
               zoom_start=8)  # 初始等级
folium.TileLayer(tiles=tile, attr='default', name='省').add_to(m)  # 地图瓦片添加命名

# #创建组
for i in distriction:
    exec(str(i) + ' = ' + 'FeatureGroup(name="' + str(i) + '",show=False).add_to(m)')

# 创建聚合
for j in distriction:
    # 是否将临近点聚合
    # exec(str(j) + 'mc = ' + 'MarkerCluster().add_to(' + str(j) + ')')
    exec(str(j) + 'mc = ' + str(j))

# for循环添加标记点
for k in range(len(df_1)):
    exec('''folium.Marker(location=[df_1.loc[k,'纬度'], df_1.loc[k,'经度']],  
                  popup=folium.Popup(str(df_1.loc[k,'NAME']), 
                                     parse_html=True, 
                                     max_width=150),                #提示语横向完全显示
                  icon=folium.Icon(color='red')      
                 ).add_to(''' + str(df_1.loc[k, '所属市']) + 'mc)')
for k in range(len(df_2)):
    exec('''folium.Marker(location=[df_2.loc[k,'纬度'], df_2.loc[k,'经度']],  
                  popup=folium.Popup(str(df_2.loc[k,'NAME']), 
                                     parse_html=True, 
                                     max_width=150),                #提示语横向完全显示 
                  icon=folium.Icon(color='blue')      
                 ).add_to(''' + str(df_2.loc[k, '所属市']) + 'mc)')

LayerControl(collapsed=False).add_to(m)
'''为地图对象添加点击显示经纬度的子功能'''
m.add_child(folium.LatLngPopup())
m.save('省市坐标分布图.html')  # 保存到当前目录下

到了这里,关于Python根据经纬度在地图上显示(folium)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue+OpenLayers 创建地图并显示鼠标所在经纬度

    本文用的是高德地图 页面 初始化地图 附css代码

    2024年01月17日
    浏览(54)
  • Cesium 在地图鼠标点击进行定位,并显示经纬度

    vue工程加载cesium 可以参考之前的文章:vue 使用cesium简单介绍_vue使用cesium_夜跑者的博客-CSDN博客 这篇文章介绍一下如何响应鼠标左键获取经纬度,以及在地图上添加广告牌。 1)响应鼠标左键,并获取经纬度         主要用到了2个接口ScreenSpaceEventHandler, setInputAction,代码

    2024年02月17日
    浏览(37)
  • 小程序map拖动地图显示地图中心标记点及经纬度方法

    最近做毕设,需要获取地点坐标,有了地图地图,想想怎么来简单点。 就上网搜了搜(官方有提供地图选点返回经纬度的,但是感觉手指操作不太精准,就想着换一种) 然后自己写了个demo(代码再后面) 大体思路是在map中心放个很小的圈圈定位用(map中flex垂直水平居中不

    2024年02月05日
    浏览(38)
  • vue2嵌入高德地图选择地址后显示地址和经纬度

    以高德地图为里,申请key,选择js api服务,获取key和密钥. vue2项目代码引入相关依赖: 封装成组件: 页面引用:

    2024年01月20日
    浏览(49)
  • mysql根据经纬度计算距离

    要在MySQL中根据经纬度计算距离,你可以使用以下方法: 使用Haversine公式:Haversine公式是一种常用的方法,用于计算两个球面上点之间的距离。下面是一个示例查询,展示如何在MySQL中使用Haversine公式计算经纬度距离: 在上面的查询中, your_table 是包含经度和纬度信息的表。

    2024年02月14日
    浏览(37)
  • ES 地图经纬度搜索

    ES中提供了一个数据类型 geo_point,这个类型就是用来存储经纬度的。 创建一个带geo_point类型的索引,并添加测试数据  

    2024年02月12日
    浏览(40)
  • 高德根据经纬度,查询所在位置信息

    根据JSON对象获取信息 String cityInfo = GaoDeUtils.getAddressByJWD(request.getClog(), request.getClat()); JSONObject resultSucces = JSONObject.parse(cityInfo); JSONObject addr=resultSucces.getJSONObject(“regeocode”); AddressComponent addressComponent = JSON.parseObject(JSON.toJSONString(addr.get(“addressComponent”)), AddressComponent.class); 创

    2024年02月08日
    浏览(51)
  • 根据经纬度计算两点之间的距离

    前言 在我们平时使用美团,饿了么等app进行订餐,或者使用猫眼进行订电影票的时候,都有一个距离的排序,表明该家店距离我们当前的位置,这种基于地理位置的服务,统一被称为LBS(Location Based Service),而LBS的实现则是借助于GIS,WC(无线通信)等信息技术来实现。而今

    2024年02月05日
    浏览(88)
  • 腾讯地图获得地图经纬度数据进行描边

    登录腾讯地图 微信小程序JavaScript SDK | 腾讯位置服务   接口调用:直接浏览器调用就行 一,可以先通过查询地区名字来获得地区码: https://apis.map.qq.com/ws/district/v1/search?key=你申请获得keykeyword=梁溪区 二,用地区码查询描边经纬度: 你申请获得key https://apis.map.qq.com/ws/distric

    2023年04月24日
    浏览(40)
  • 使用腾讯地图获取地址经纬度

    1、在终端执行 2.在main.js引入  或则直接在需要页面引入 3、写方法 具体的参考腾讯开发文档https://lbs.qq.com/service/webService/webServiceGuide/webServiceGeocoder

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包