标签:geo 转换 位置 component ase city 密钥 ecs mic
利用python为地名匹配省市区,
设计思想:利用百度api实现定位经纬度,然后再通过经纬度匹配省市区
1.从文本中读取地点名称
#提取地区 def diqu(): f = codecs.open(‘kjcg.txt‘, mode=‘r‘, encoding=‘utf-8‘) # 打开txt文件,以‘utf-8’编码读取 line = f.readline() # 以行的形式进行读取文件 while line: a = line.split() b = a[0:1] # 这是选取需要读取的位数 list.append(b) # 将其添加在列表之中 line = f.readline() f.close()
2.调用百度api实现 地点------经纬度
#提取经纬度 def geocodeB(address): """ @ address: 名称字符串 @ 返回值:经度,纬度 """ base_url = "http://api.map.baidu.com/geocoder?address={address}&output=json&key=您的密钥".format(address=address) response = requests.get(base_url) answer = response.json() latitude = answer[‘result‘][‘location‘][‘lng‘] #经 longitude = answer[‘result‘][‘location‘][‘lat‘] #纬 list_lag.append(latitude) list_lng.append(longitude)
3.同样利用百度api 经纬度-------省市区
#提取省,市,区 #基于百度地图API下的经纬度信息来解析地理位置信息 def getlocation(lat,lng): url = requests.get(‘http://api.map.baidu.com/geocoder?location=‘ + lat + ‘,‘ + lng + ‘&output=json&key=您的密钥‘) result = url.json() #print(result) city = result[‘result‘][‘addressComponent‘][‘city‘] province = result[‘result‘][‘addressComponent‘][‘province‘] district = result[‘result‘][‘addressComponent‘][‘district‘] # print(city,province,district) list_all= [ ‘\n‘ + result[‘result‘][‘addressComponent‘][‘city‘] + ‘,‘ + result[‘result‘][‘addressComponent‘][‘province‘] + ‘,‘ + result[‘result‘][‘addressComponent‘][‘district‘]] print(list_all)
4.数据存储(将list转换为字符串存储到文本文件中)
res_all = ‘,‘.join(list_all) with open(‘科技成果地区划分.txt‘, ‘a+‘, encoding="utf-8") as f: f.write(res_all)
效果展示:(待转换数据------转换数据)(但是不知道为什么通过api双向转换出来的数据有些对不上)
比如 天津科技大学:天津市河西区大沽南路1038号
但是通过百度api实现出来的就是北京
标签:geo 转换 位置 component ase city 密钥 ecs mic
原文地址:https://www.cnblogs.com/birdmmxx/p/12483789.html