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

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

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

实验要求:

  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)

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

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

Guess you like

Origin blog.csdn.net/qq_56607768/article/details/118828477