Python中excel和shp如何使用在matplotlib(excel,matplotlib,python,开发技术)

时间:2024-05-05 11:09:31 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

关于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()

Python中excel和shp如何使用在matplotlib

Python中excel和shp如何使用在matplotlib

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Python中excel和shp如何使用在matplotlib的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:解决JS表单验证只有第一个IF起作用的问题下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18