如何通过python利用百度sdk得到地理位置的经纬坐标

import json
from urllib.request import urlopen, quote
import pandas as pd
import pymysql 
import numpy as np   
pymysql.converters.encoders[np.float64] = pymysql.converters.escape_float
pymysql.converters.conversions = pymysql.converters.encoders.copy()
pymysql.converters.conversions.update(pymysql.converters.decoders)
# 使用 cursor() 方法创建一个游标对象 cursor


connect=pymysql.connect(
      host="127.0.0.1",
      database="your database name",
      passwd="your passward",
      user="root",
      port=3306,
      charset='utf8mb4'
     )  
cursor = connect.cursor()  

def getlnglat(address):
    url = 'http://api.map.baidu.com/geocoder/v2/'
    output = 'json'
   # 浏览器端密钥
    ak = 'your ak'
    address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
    uri = url + '?' + 'address=' + address  + '&output=' + output + '&ak=' + ak 
    req = urlopen(uri)
    res = req.read().decode() 
    temp = json.loads(res)
    lat = temp['result']['location']['lat']
    lng = temp['result']['location']['lng']
    if temp['result']['level'] == '城市':
        return 
    else:
        
        return lat, lng


filename = 'F:/wtj/paqie.csv'

data = pd.read_csv(filename,encoding = 'gbk')

for i, row in enumerate(data['X坐标'][:]):
    if row == 0:
        try:
            address = data['地点'][i]
            
            seq = ('武汉',address)
            addr = ''.join(seq)
            data['X坐标'][i] = getlnglat(address)[1]
            data['Y坐标'][i] = getlnglat(address)[0]
            
        except:
            pass
    tt = data['时间'][i]
    sex = data['性别'][i]
    place = data['地点'][i]
    xx = data['X坐标'][i]
    yy = data['Y坐标'][i]
    try:
        cursor.execute("INSERT INTO paqie(`ttime`,`sex`,`address`,`X_address`,`Y_address`)VALUES (%s,%s,%s,%s,%s)",\
                                               (tt,int(sex),place,xx,yy))
    except:
        print('fail')
    print(i)

百度ak的申请链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python经纬坐标转换是指将地球上的经纬坐标转换为其他坐标系的坐标。在Python中,可以使用一些库来进行经纬坐标转换,比如pyproj和geopy。 1. 使用pyproj库进行经纬坐标转换: - 首先,需要安装pyproj库,可以使用pip命令进行安装:`pip install pyproj` - 然后,可以使用pyproj库中的Transformer类来进行坐标转换。下面是一个示例代码: ```python from pyproj import Transformer # 创建一个经纬度到其他坐标系的转换器 transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857") # 将经纬度转换为Web墨卡托投影坐标系 # 经纬坐标 lon = 116.3975 lat = 39.9086 # 进行坐标转换 x, y = transformer.transform(lon, lat) print("转换后的坐标:", x, y) ``` - 这里的示例将经纬坐标转换为Web墨卡托投影坐标系(EPSG:3857),你可以根据需要选择其他坐标系。 2. 使用geopy库进行经纬坐标转换: - 首先,需要安装geopy库,可以使用pip命令进行安装:`pip install geopy` - 然后,可以使用geopy库中的geocoders模块来进行坐标转换。下面是一个示例代码: ```python from geopy.geocoders import Nominatim # 创建一个地理编码器 geolocator = Nominatim(user_agent="my_app") # 地址 address = "北京市朝阳区建国门外大街1号" # 进行坐标转换 location = geolocator.geocode(address) print("转换后的坐标:", location.latitude, location.longitude) ``` - 这里的示例将地址转换为经纬坐标,你也可以将经纬坐标转换为地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值