"水资源平衡分析需要用到很多水文数据,包括降雨量、径流量、集雨面积、库容等等
。
水库在用水中充当很重要的一环,水库的库容在高标准农田中计算水平衡很重要。小编通过制作湖南省水库shp,将公开的数据更好的分享给大家。"
数据来源
1.1 公告数据下载
湖南省水利厅、省统计局发布的《湖南省水库名录》公告有PDF文件可下载。数据
:截至2020年10月31日,全省已建成并运行的水库共13737座,总库容545.45亿立方米。其中,大型水库(总库容不小于1亿立方米)50座,中型水库(总库容1亿立方米以下、且不小于1000万立方米)366座,小(1)型水库(总库容1000万立方米以下、且不小于100万立方米)2022座,小(2)型水库(总库容100万立方米以下、且不小于10万立方米)11299座。
1.2 转Excel格式
pdf格式先转成excel表格,后面才能方便我们对数据进行操作,水库名录记录了水库的地址、总库容、工程规模、管理单位。
开放平台获取经纬度
2.1 获取水库的经纬度
小编是从事规划工作的,对于数据可视化想要更直观的浏览。需要获取地址的经纬度,加载在arcmap中查看。
以前的文章可以做参考:
《百度API+python+arcgis做区域竞合
》
2.2 获取代码分享
百度地图开放平台与高德地图开放平台都可以注册个人开发者,地理编码享受每天5000条的查询,13737座只能分三批(一个百度账号、一个高德账号、网上看到别人分享的key)完成。
在抓取数据前我们需要对地址做下处理,将地址=所在市州+所在区县+所在乡镇+水库名,这样就获取了比较完整的地址(然而百度、高德对于广大农村还是存在很多盲区,有很多在同一个乡镇的水库都是一个经纬度)。
具体的抓取代码,这里以百度为例分享代码给大家。代码中ak用你申请的ak,没能获取的我们先用字母替代,后期手动查询输入。
# 表1用百度进行爬取
a=pd.read_excel('table1.xlsx')
r_name = a['name'].values.tolist()
r_address=a['address'].values.tolist()
lng=[]
lat=[]
for i in range(0,len(r_name)):
try:
url ='https://api.map.baidu.com/geocoding/v3/?address='+r_address[i]+'&output=json&ak=xxxxxx'
html = requests.get(url)
soup = BeautifulSoup(html.text, "lxml")
# 先把值提取出来
p = soup.find('p').get_text()
t1 = json.loads(p)
try:
# print(t1)
results = t1["result"]
loc=results["location"]
lng.append(loc['lng'])
lat.append(loc['lat'])
except:
lng.append('w')
lat.append('w')
time.sleep(0.05)
except:
lng.append('e')
lat.append('e')
tiltle_table=['name','lng','lat']
name_list = []
for i in range(0,len(lng)):
n=r_name[i]
name_list.append([n,str(lng[i]),str(lat[i])])
df = pd.DataFrame(name_list, columns=tiltle_table)
df.to_excel('t1.xlsx', index=False)
2.3 手动添加坐标
对于少部分无法通过爬取的水库,可通过开发平台的坐标拾器获取。
转shp文件
3.1 坐标纠偏
百度坐标、火星坐标(高德)需要进行纠偏才能与我们的wgs84相同,需要看本文2.1条里的文章。
3.2 arcmap添加
在arcmap中添加数据,文件——添加xy数据——坐标选地理坐标wgs1984,添加完后导出shp文件。
3.3 arcmap查看
将数据加载在arcmap中,再加载湖南省的行政边界,就可制作湖南省水库名录相关的图,后续也可调整水库位置到正确的点。
数据分享
4.1 数据
在湖南或者有湖南业务的可以直接下载数据,外省的也可以用同样的方法获取你所在省份的数据(如果你们省也公布过此名录)。
4.2 分享
数据下载,后台回复:湖南省水库名录
---------------
往期推荐
--------------