南京做网站企业/深圳全网推广平台
地理位置编码功能的四个实现
- 利用百度地图的地理位置编解码功能,实现正向和逆向解码,具体做法详细参考教材以及教材
实验要求:
-
基于不同的网络层次实现课本的代码清单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)
具体的详细代码解析请参考:地理位置实验报告(仅供参考)
注:此专栏用于自己学习过程