python抓取北京所有社区医院经纬度
第一步
先从北京政府的官网上获取了有北京所有社区医院信息的excel表格,然后利用pandas库将name列提取出来并转换为list对象
from pandas import DataFrame
df = 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 request
import re
import urllib.parse as urp
def __get_location1__(name):
my_ak = ' ' # 需要自己填写自己的AK
qurey = urp.quote(name)
try:
url = 'http://api.map.baidu.com/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.再次选中该工作表单击右键,选择数据,导出数据后生成一个图层
以下为结果