zoukankan      html  css  js  c++  java
  • 通过百度地图API--获取全国地图的经纬度

    因为要做一个前端画图需要经纬度,一个个的查询过麻烦,最终弄出这个,以备后查!

      1 import threading , time
      2 import requests
      3 from decimal import Decimal
      4 #爬取数据
      5 def hq(address,name_id):
      6     url = 'http://api.map.baidu.com/geocoder?output=json&key=f247cdb592eb43ebac6ccd27f796e2d2&location=' + str(address)
      7     response = requests.get(url)
      8     answer = response.json()
      9     print('得到反解数据', answer)
     10     lng = answer['result']['location']['lng']
     11     lat = answer['result']['location']['lat']
     12     formatted_address = answer['result']['formatted_address']
     13     business = answer['result']['business']
     14     city = answer['result']['addressComponent']['city']
     15     direction = answer['result']['addressComponent']['city']
     16     distance = answer['result']['addressComponent']['direction']
     17     district = answer['result']['addressComponent']['district']
     18     province = answer['result']['addressComponent']['province']
     19     street = answer['result']['addressComponent']['street']
     20     street_number = answer['result']['addressComponent']['street_number']
     21     cityCode = answer['result']['cityCode']
     22     lin_list = str('%6f' % lng) + '|' + str('%6f' % lat) + '|' + str(formatted_address) + '|' + str(business) + '|' + str(
     23         city) + '|' + str(direction) + '|' + str(distance) + '|' + str(district) + '|' + str(province) + '|' + str(
     24         street) + '|' + str(street_number) + '|' + str(cityCode)
     25     if cityCode==0:
     26         #print('外国')
     27         pass
     28     else:
     29    
     30         name=str(name_id)+'list'
     31         print(name)
     32         with open(name, 'a+', encoding=('utf-8')) as f:
     33             f.write(lin_list+'
    ')
     34         print('文件写入完成')
     35 
     36 #经度纬度处理
     37 def longitude_proces(longitude, interval, latitude, latitude_end, name_id):
     38     while longitude >= latitude:
     39         address = '%s,%s' % (longitude, latitude_end)  # 请求时,经度,纬度,需要互换
     40         hq(address, name_id)
     41         longitude -= interval
     42 
     43 
     44 class Thre(threading.Thread):#继承线程中的类
     45     def __init__(self,lists,interval,name_id,times):
     46         super(Thre,self).__init__()
     47         self.interval=interval
     48         self.lists=lists
     49         self.name_id=name_id
     50         self.times=times
     51     def run(self):
     52         print('执行线程开始时间:',self.times,self.lists,'==================start=============================================')
     53         slog,elog,slat,elat=self.lists
     54         #print(slog,elog,slat,elat)
     55         longitude = Decimal(slog)#经度longitude开始
     56         longitude_end = Decimal(elog)#经度结束
     57         latitude=Decimal(slat)# 纬度latitude开始
     58         latitude_end=Decimal(elat)#纬度结束
     59         
     60         while latitude>=latitude_end:
     61             latitude -= self.interval
     62             longitude_proces(longitude,self.interval,longitude_end,latitude,self.name_id)
     63         else:
     64             den_time=time.time()-self.times
     65             print('执行线程所用时间:',den_time,self.lists,'==================end=============================================')
     66         
     67 
     68 
     69 def main():
     70     itude_list=[
     71         ['42.000000', '30.000000', '105.000000', '79.800000'],  # 
     72         ['42.000000', '21.000000', '129.000000', '105.000000'],  # 
     73         ['50.000000', '42.000000', '135.000000','129.000000'],  #
     74         ['54.000000', '42.000000', '129.000000', '115.000000'],  #
     75         ['45.500000', '42.000000', '115.000000', '105.000000'],  #
     76         ['49.200000', '42.000000', '91.500000', '79.800000'],  # 
     77         ['42.000000', '30.000000', '79.800000', '73.400000'],  # 
     78         ['45.500000', '42.000000', '105.000000', '91.500000'],  #
     79         ['30.000000', '21.000000', '105.000000', '97.300000'],  # 
     80         ['42.000000', '30.000000', '97.300000', '79.800000'],  #
     81         ['21.000000', '3.000000', '129.000000', '105.000000'],  # (南海)
     82     ]
     83 
     84     interval = Decimal('3.0001000')#间隔
     85     number = 0
     86     thre_list=[]
     87 
     88     for itude in itude_list:
     89         start_times=time.time()
     90         number += 1
     91         temp=Thre(itude_list,interval,number,start_times)
     92         thre_list.append(temp)
     93         
     94     for thre in thre_list:
     95         thre.start()
     96         
     97 
     98 
     99 if __name__ == '__main__':
    100     main()
  • 相关阅读:
    数往知来C#面向对象准备〈二〉
    数往知来C#之面向对象准备〈一〉
    如果我比别人走得更远些,那是因为我站在巨人的肩上。
    小记一下
    关于servlet
    使用session防止表单重复提交
    session和cookie的区别
    数据结构排序算法Java实现
    用背景渐变的透明度设置不同颜色的背景渐变
    Java用DOM方法解析xml
  • 原文地址:https://www.cnblogs.com/uge3/p/9775145.html
Copyright © 2011-2022 走看看