python抓取北京所有社区医院经纬度

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='+'&region='+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.再次选中该工作表单击右键,选择数据,导出数据后生成一个图层
以下为结果
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
获取中国所有环保局的经纬度坐标,可以通过以下步骤实现: 1. 获取中国所有环保局的地址信息,可以从官方网站或其他公开数据源中获取。 2. 使用Python中的Geopy库,将地址转换为经纬度坐标。可以使用geopy.geocoders.Nominatim类中的方法进行地址解析,返回的结果包括经纬度坐标信息。 3. 将获取到的经纬度坐标保存到一个数据文件中,可以使用Python中的csv或pandas库进行保存。 以下是一个示例代码,仅供参考: ```python import csv import time from geopy.geocoders import Nominatim # 读取环保局地址信息 with open('epa_address.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) epa_list = [row[0] for row in reader] # 创建Geopy的Nominatim对象 geolocator = Nominatim(user_agent='my_application') # 解析地址并获取经纬度坐标 result = [] for address in epa_list: try: location = geolocator.geocode(address, timeout=10) if location is not None: lat, lon = location.latitude, location.longitude result.append([address, lat, lon]) else: result.append([address, '', '']) except Exception as e: print('Error: ', e) time.sleep(1) # 限制请求频率,避免被限制访问 # 将结果保存到CSV文件中 with open('epa_location.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerow(['address', 'latitude', 'longitude']) writer.writerows(result) ``` 注意:以上代码仅供参考,实际应用中需要根据具体情况进行修改。在运行之前,需要安装Geopy库并获取访问Nominatim API的权限。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佩瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值