地理位置编码功能的四个实现

地理位置编码功能的四个实现

  • 利用百度地图的地理位置编解码功能,实现正向和逆向解码,具体做法详细参考教材以及教材

实验要求:

  1. 基于不同的网络层次实现课本的代码清单1-1到1-4实现正向解码与反向解码

  2. 具体做法参考教教材和视频

  3. 代码清单1-1

正向将地理位置转化为经纬度与反向将经纬度坐标变

from  geopy.geocoders import Baidu
def positivedecoding(address):#地理位置正向解码
     API = Baidu('h2zj0ChQM07Uq4CPTNsV7qWPhe8YP2Sa')
     decoding=API.geocode(address)
     print((decoding.latitude, decoding.longitude))
def reversedecoding(location):#地理位置反向解码
       API = Baidu('h2zj0ChQM07Uq4CPTNsV7qWPhe8YP2Sa')
       reverses=API.reverse((location))
       print(reverses.raw['formatted_address'])
if __name__ =='__main__':
    address='北京大学'
    location='36.109,103.737'
    positivedecoding(address)
    #reversedecoding(location)

2.代码清单1-2

正向将地理位置转化为经纬度与经纬度转化为物理地址的反向解码。

代码:

import requests
def positivedecoding(address):#地理位置正向解码
    parameters = {'address':address, 'ak': 'GtuMeau2AjP6AQIDhkXbPU95ptUlb5FK', 'output': 'xml'}
    base = 'http://api.map.baidu.com/geocoding/v3/'
    response = requests.get(base, params=parameters)
    print(response.text)
def reversedecoding(location):#地理位置反向解码
     parameters ={'location':location,'ak':'GtuMeau2AjP6AQIDhkXbPU95ptUlb5FK','output':'json'}
     base = 'http://api.map.baidu.com/reverse_geocoding/v3/'
     response=requests.get(base,params=parameters)
     answer=response.json()
     print(answer['result']['formatted_address'])
if __name__=='__main__':
    location='36.109,103.737'
    address='北京大学'
    positivedecoding(address)
    #reversedecoding(location)

3.代码清单1-3

正向将地理位置转化为经纬度与经纬度转化为物理地址反向解码

iimport http.client
from urllib.parse import quote_plus
import json
def positivedecoding(address):#地理位置正向解码
    base = 'http://api.map.baidu.com/geocoding/v3/'
    path = '{}?address={}&ak=GtuMeau2AjP6AQIDhkXbPU95ptUlb5FK&output=xml'.format(base, quote_plus(address))
    connection = http.client.HTTPConnection('api.map.baidu.com')
    connection.request('GET', path)
    rawreply = connection.getresponse().read()
    reply = rawreply.decode('utf-8')
    print(reply)

def reversedecoding(location):#地理位置反向解码
    base = 'http://api.map.baidu.com/reverse_geocoding/v3/'
    path = '{}?location={}&ak=GtuMeau2AjP6AQIDhkXbPU95ptUlb5FK&output=json'.format(base, quote_plus(location))
    connection=http.client.HTTPConnection('api.map.baidu.com')
    connection.request('GET',path)
    rawreply=connection.getresponse().read()
    reply=json.loads(rawreply.decode('utf-8'))
    print(reply['result']['formatted_address'])
if __name__=='__main__':
    address='北京大学'
    location='36.109,103.737'
    positivedecoding(address)
   # reversedecoding(location)

具体的详细代码解析请参考:地理位置实验报告(仅供参考)

注:此专栏用于自己学习过程

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h1dm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值