Python中excel和shp如何使用在matplotlib
导读:本文共2621字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 关于excel和shp的使用在matplotlib使用pandas 对excel进行简单操作使用cartopy 读取shpfile 展示到matplotlib中利用shpfile文件中的一些字段进行一些着色处理#!/usr/bin/envpython#-*-coding:utf-8-*-#@File:map02.py#@Author:huifer#@Da... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。关于excel和shp的使用在matplotlib
使用pandas 对excel进行简单操作
使用cartopy 读取shpfile 展示到matplotlib中
利用shpfile文件中的一些字段进行一些着色处理
#!/usr/bin/envpython#-*-coding:utf-8-*-#@File:map02.py#@Author:huifer#@Date:2018/6/28importfoliumimportpandasaspdimportrequestsimportmatplotlib.pyplotaspltimportcartopy.crsasccrsimportzipfileimportcartopy.io.shapereaderasshapereadfrommatplotlibimportcmfromcartopy.mpl.tickerimportLongitudeFormatter,LatitudeFormatterimportosdataurl="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"defdownload_file(url):"""根据url下载文件:paramurl:str"""r=requests.get(url,allow_redirects=True)try:open(url.split('/')[-1],'wb').write(r.content)exceptExceptionase:print(e)defdegree_conversion_decimal(x):"""度分转换成十进制:paramx:float:return:integerfloat"""integer=int(x)integer=integer+(x-integer)*1.66666667returnintegerdefunzip(zip_path,out_path):"""解压zip:paramzip_path:str:paramout_path:str:return:"""zip_ref=zipfile.ZipFile(zip_path,'r')zip_ref.extractall(out_path)zip_ref.close()defget_record(shp,key,value):countries=shp.records()result=[countryforcountryincountriesifcountry.attributes[key]==value]countries=shp.records()returnresultdefread_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(lambdax: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=[countryforcountryincountriesifcountry.attributes['ADMIN']=='China']#countries=shp.records()plt.savefig('test.png')plt.show()defgdp(shp_path):"""GDP着色图:return:"""shp=shaperead.Reader(shp_path)cas=get_record(shp,'SUBREGION','CentralAsia')gdp=[r.attributes['GDP_MD_EST']forrincas]gdp_min=min(gdp)gdp_max=max(gdp)ax=plt.axes(projection=ccrs.PlateCarree())ax.set_extent([45,90,35,55])forrincas: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('GDPTEST')plt.savefig("gdb.png")plt.show()defrun_excel():ifos.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")defrun_shp():ifos.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','CentralAsia')#print([r.attributes['ADMIN']forrincas])#read_excel('SURF_CHN_MUL_HOR_STATION.xlsx')#gdp()run_excel()run_shp()
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
Python中excel和shp如何使用在matplotlib的详细内容,希望对您有所帮助,信息来源于网络。