黑松山资源网 Design By www.paidiu.com
关于excel和shp的使用在matplotlib
- 使用pandas 对excel进行简单操作
- 使用cartopy 读取shpfile 展示到matplotlib中
- 利用shpfile文件中的一些字段进行一些着色处理
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : map02.py # @Author: huifer # @Date : 2018/6/28 import folium import pandas as pd import requests import matplotlib.pyplot as plt import cartopy.crs as ccrs import zipfile import cartopy.io.shapereader as shaperead from matplotlib import cm from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter import os dataurl = "http://image.data.cma.cn/static/doc/A/A.0012.0001/SURF_CHN_MUL_HOR_STATION.xlsx" shpurl = "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_countries.zip" def download_file(url): """ 根据url下载文件 :param url: str """ r = requests.get(url, allow_redirects=True) try: open(url.split('/')[-1], 'wb').write(r.content) except Exception as e: print(e) def degree_conversion_decimal(x): """ 度分转换成十进制 :param x: float :return: integer float """ integer = int(x) integer = integer + (x - integer) * 1.66666667 return integer def unzip(zip_path, out_path): """ 解压zip :param zip_path:str :param out_path: str :return: """ zip_ref = zipfile.ZipFile(zip_path, 'r') zip_ref.extractall(out_path) zip_ref.close() def get_record(shp, key, value): countries = shp.records() result = [country for country in countries if country.attributes[key] == value] countries = shp.records() return result def read_excel(path): data = pd.read_excel(path) # print(data.head(10)) # 获取几行 # print(data.ix[data['省份']=='浙江',:].shape[0]) # 计数工具 # print(data.sort_values('观测场拔海高度(米)',ascending=False).head(10))# 根据值排序 # 判断经纬度是什么格式(度分 、 十进制) 判断依据 %0.2f 是否大于60 # print(data['经度'].apply(lambda x:x-int(x)).sort_values(ascending=False).head()) # 结果判断为度分保存 # 坐标处理 data['经度'] = data['经度'].apply(degree_conversion_decimal) data['纬度'] = data['纬度'].apply(degree_conversion_decimal) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_extent([70, 140, 15, 55]) ax.stock_img() ax.scatter(data['经度'], data['纬度'], s=0.3, c='g') # shp = shaperead.Reader('ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp') # # 抽取函数 州:国家 # city_list = [country for country in countries if country.attributes['ADMIN'] == 'China'] # countries = shp.records() plt.savefig('test.png') plt.show() def gdp(shp_path): """ GDP 着色图 :return: """ shp = shaperead.Reader(shp_path) cas = get_record(shp, 'SUBREGION', 'Central Asia') gdp = [r.attributes['GDP_MD_EST'] for r in cas] gdp_min = min(gdp) gdp_max = max(gdp) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_extent([45, 90, 35, 55]) for r in cas: color = cm.Greens((r.attributes['GDP_MD_EST'] - gdp_min) / (gdp_max - gdp_min)) ax.add_geometries(r.geometry, ccrs.PlateCarree(), facecolor=color, edgecolor='black', linewidth=0.5) ax.text(r.geometry.centroid.x, r.geometry.centroid.y, r.attributes['ADMIN'], horizontalalignment='center', verticalalignment='center', transform=ccrs.Geodetic()) ax.set_xticks([45, 55, 65, 75, 85], crs=ccrs.PlateCarree()) # x坐标标注 ax.set_yticks([35, 45, 55], crs=ccrs.PlateCarree()) # y 坐标标注 lon_formatter = LongitudeFormatter(zero_direction_label=True) lat_formatter = LatitudeFormatter() ax.xaxis.set_major_formatter(lon_formatter) ax.yaxis.set_major_formatter(lat_formatter) plt.title('GDP TEST') plt.savefig("gdb.png") plt.show() def run_excel(): if os.path.exists("SURF_CHN_MUL_HOR_STATION.xlsx"): read_excel("SURF_CHN_MUL_HOR_STATION.xlsx") else: download_file(dataurl) read_excel("SURF_CHN_MUL_HOR_STATION.xlsx") def run_shp(): if os.path.exists("ne_10m_admin_0_countries"): gdp("ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp") else: download_file(shpurl) unzip('ne_10m_admin_0_countries.zip', "ne_10m_admin_0_countries") gdp("ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp") if __name__ == '__main__': # download_file(dataurl) # download_file(shpurl) # cas = get_record('SUBREGION', 'Central Asia') # print([r.attributes['ADMIN'] for r in cas]) # read_excel('SURF_CHN_MUL_HOR_STATION.xlsx') # gdp() run_excel() run_shp()
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
更新日志
2024年10月07日
2024年10月07日
- 《丁当 20首重量级歌曲 Fu Good 下一站天后 2CD》[WAV/分轨][650MB]
- 歌莉雅.2012-My.Voice.Story【环星】【FLAC分轨】
- 群星.1993-一曲成名·青春无悔【飞碟】【WAV+CUE】
- 刘德华.2000-爱无知(金装版)【NEWMELODY】【WAV+CUE】
- 许巍《时光漫步》1CD[FLAC/分轨][804.3MB]
- 群星《2024第一季度百度歌曲排行抖音榜top100》1CD[FLAC/分轨][2.3GB]
- 张柏芝《全新经验》[FLAC/分轨][450MB]
- 唐朝.2008-浪漫骑士【音乐家】【WAV+CUE】
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 群星.1991-音乐工厂1·皇后大道东【音乐工厂】【WAV+CUE】
- 群星.1992-音乐工厂2·首都【音乐工厂】【WAV+CUE】
- 群星.1994-音乐工厂3·儿童乐园【音乐工厂】【WAV+CUE】
- 胡鸿钧.2021-ex:CHANGE【星梦娱乐】【WAV+CUE】
- 班得瑞原装进口《第一张新世纪专辑:仙境》1CD[APE/CUE分轨][292.3MB]
- 伍佰《摇滚教父 伍佰黄金精选 2CD》[WAV+CUE][990MB]