python实现通过百度地图API获得地铁站经纬度(详细教程)

第一步:注册成为开发者,获得AK号

1: 前往百度地图官网注册,注册地址,请点击:百度地址开发者注册
网站如下:http://lbsyun.baidu.com/apiconsole/key/create
2: 注册并邮箱激活后点击申请密钥,:
应用名称随便填写,应用类型选择服务器,IP白名单填0.0.0.0/0就行
提交后就申请到了访问应用(AK)了
在这里插入图片描述
在这里插入图片描述

第二步:运行代码测试

代码如下所示:

import pandas
from bs4 import BeautifulSoup 
from urllib import request
import re
import pandas as pd
import numpy as np
import urllib.parse as urp
from xml.etree import ElementTree
import time

def __get_location1__(name,city):  
        my_ak = '第一步中自己申请的AK号'    # 需要自己填写自己的AK
        tag = urp.quote('地铁站')
        qurey = urp.quote(name)
        try:
            url = 'http://api.map.baidu.com/place/v2/search?query='+qurey+'&tag='+'&region='+urp.quote(city)+'&output=json&ak='+my_ak
            print(url)
            req = request.urlopen(url)
            res = req.read().decode()
            lat = pd.to_numeric(re.findall('"lat":(.*)',res)[0].split(',')[0])
            lng = pd.to_numeric(re.findall('"lng":(.*)',res)[0])
            return (lng,lat)  #经度和纬度
        except:
            return 0,0

第三步:测试用法

输入:

__get_location1__('东直门','北京')

输出:

(116.44145400000001, 39.947891999999996)

当需要很多地址的经纬度时,首先用爬虫爬取地址名称,然后不断调用__get_location1__()就行

第四步:开发者个人认证

对百度地图访问量很大的话,可以申请开发者个人认证,需要进行实名认证手续等!!
在这里插入图片描述

Python中绘制地铁线路图并利用百度地图API获取地铁站点坐标,通常需要结合第三方库如`geopy`用于地理编码服务和绘图库如`matplotlib`或者更现代的`plotly`。以下是一个简单的步骤: 1. **安装所需库**: - `geopy`: 进行地址到经纬度的转换 - `requests`: 发送HTTP请求获取百度API数据 - `folium` 或 `plotly` (用于地图可视化) ```bash pip install geopy requests folium plotly ``` 2. **获取API key**: 注册一个百度地图开发者账号,并申请地图API密钥。 3. **获取站点信息**: 使用`geopy`的`Nominatim`类通过站点名查找坐标。例如: ```python from geopy.geocoders import Nominatim def get_station_location(name): geolocator = Nominatim(user_agent="your_app_name") location = geolocator.geocode(name) if location: return (location.latitude, location.longitude) else: print(f"无法找到{name}的位置") return None ``` 4. **获取站点列表并绘制地图**: 使用百度地图API的`directions`接口获取地铁线路信息,然后将站点坐标添加到地图上。这里假设你已经有了线路ID、起始站和终点站: ```python import requests # 替换为你的百度地图API Key 和 Secret Key api_key = "your_api_key" secret_key = "your_secret_key" def get_line_info(line_id, start, end): params = { 'key': api_key, 'origin': f"{start[0]},{start[1]}", 'destination': f"{end[0]},{end[1]}", 'mode': 'transit', 'departure_time': 'now' } response = requests.get('https://api.map.baidu.com/direction/v8', params=params) data = response.json() stations = [stop['location'] for stop in data['routes'][0]['legs'][0]['steps']] return stations line_stations = get_line_info("example_line_id", ("起点站经度", "起点站纬度"), ("终点站经度", "终点站纬度")) ``` 然后,可以使用`folium`或`plotly`来创建地铁线路图: ```python import folium m = folium.Map(location=(start[1], start[0]), zoom_start=12) for station in line_stations: folium.Marker(location=station).add_to(m) m.save("metro_map.html") ``` 5. **运行程序**: 运行上述代码后,会在本地生成一个HTML文件,显示包含地铁线路和站点的地图。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值