地理位置编码功能的四个实现
- 利用百度地图的地理位置编解码功能,实现正向和逆向解码,具体做法详细参考教材以及教材
实验要求:
-
基于不同的网络层次实现课本的代码清单1-1到1-4实现正向解码与反向解码
-
具体做法参考教教材和视频
-
代码清单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)
具体的详细代码解析请参考:地理位置实验报告(仅供参考)
注:此专栏用于自己学习过程