python抓取北京所有社区医院经纬度
第一步
先从北京政府的官网上获取了有北京所有社区医院信息的excel表格,然后利用pandas库将name列提取出来并转换为list对象
from pandas import DataFramedf = pd.DataFrame(pd.read_excel('C:/Users/15643/Desktop/hospital_data.xls'))data_set = np.array(df['name'])data_set_lists = data_set.tolist()
第二步
利用百度地图开放平台来获取每个医院的经纬度
from urllib import requestimport reimport urllib.parse as urpdef __get_location1__(name):my_ak = ' ' # 需要自己填写自己的AKqurey = urp.quote(name)try:url = 'http://api./place/v2/search?query='+qurey+'&tag='+'®ion='+urp.quote('北京')+'&output=json&ak='+my_ak#print(url)req = request.urlopen(url)res = req.read().decode()lat = pd.to_numeric(re.findall('"lat":(.*)',res)[0].split(',')[0])lng = pd.to_numeric(re.findall('"lng":(.*)',res)[0])return lat,lng #经度和纬度except:return 0,0
第三步
把之前提取到的各个医院的名字放在该函数里,获取到每一个医院的经纬度信息,并把提取到的数据保存在一个新的excel文件中
data_list=[]for data_set_list in data_set_lists:lat,lng=__get_location1__(data_set_list)data_list.append([lat,lng])df = pd.DataFrame(data_list,columns=['lat','lng'])df.to_excel('C:/Users/15643/Desktop/1.xls',sheet_name='test')print(df)
利用Arcgis进行可视化
1.将储存有经纬度的sheet表导入到arcgis中
2.选中该工作表单击右键,选择显示XY数据,x字段选择lng,y字段选择lat
3.再次选中该工作表单击右键,选择数据,导出数据后生成一个图层
以下为结果