Python關(guān)于excel和shp的使用在matplotlib
關(guān)于excel和shp的使用在matplotlib
- 使用pandas 對(duì)excel進(jìn)行簡(jiǎn)單操作
- 使用cartopy 讀取shpfile 展示到matplotlib中
- 利用shpfile文件中的一些字段進(jìn)行一些著色處理
#!/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): """ 根據(jù)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): """ 度分轉(zhuǎn)換成十進(jìn)制 :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]) # 計(jì)數(shù)工具 # print(data.sort_values('觀測(cè)場(chǎng)拔海高度(米)',ascending=False).head(10))# 根據(jù)值排序 # 判斷經(jīng)緯度是什么格式(度分 、 十進(jìn)制) 判斷依據(jù) %0.2f 是否大于60 # print(data['經(jīng)度'].apply(lambda x:x-int(x)).sort_values(ascending=False).head()) # 結(jié)果判斷為度分保存 # 坐標(biāo)處理 data['經(jīng)度'] = data['經(jīng)度'].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['經(jīng)度'], data['緯度'], s=0.3, c='g') # shp = shaperead.Reader('ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp') # # 抽取函數(shù) 州:國(guó)家 # 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坐標(biāo)標(biāo)注 ax.set_yticks([35, 45, 55], crs=ccrs.PlateCarree()) # y 坐標(biāo)標(biāo)注 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()
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
pytorch如何凍結(jié)某層參數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了pytorch如何凍結(jié)某層參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01一文詳解CNN 解決 Flowers 圖像分類(lèi)任務(wù)
這篇文章主要為大家介紹了CNN 解決 Flowers 圖像分類(lèi)任務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03python入門(mén)教程之識(shí)別驗(yàn)證碼
這篇文章主要介紹了python中識(shí)別驗(yàn)證碼的相關(guān)資料,這屬于學(xué)習(xí)python的基本入門(mén)教程,文中介紹的非常詳細(xì),文末也給出了完整的示例代碼,需要的朋友們可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-03-03Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn)
Python Flask 框架是一個(gè)輕量級(jí)的 Web 框架,它簡(jiǎn)單易用,靈活多變,非常適合用于構(gòu)建小型到中型規(guī)模的 Web 應(yīng)用程序,本文給大家介紹了Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn),需要的朋友可以參考下2024-06-06基于python實(shí)現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換
這篇文章主要介紹了基于python實(shí)現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05python 實(shí)現(xiàn)turtle畫(huà)圖并導(dǎo)出圖片格式的文件
今天小編就為大家分享一篇python 實(shí)現(xiàn)turtle畫(huà)圖并導(dǎo)出圖片格式的文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python下opencv庫(kù)的安裝過(guò)程及問(wèn)題匯總
本文主要內(nèi)容是python下opencv庫(kù)的安裝過(guò)程,涉及我在安裝時(shí)遇到的問(wèn)題,并且,將從網(wǎng)上搜集并試用的一些解決方案進(jìn)行了簡(jiǎn)單的匯總,感興趣的小伙伴們可以參考一下2021-06-06python使用turtle庫(kù)與random庫(kù)繪制雪花
這篇文章主要為大家詳細(xì)介紹了python使用turtle庫(kù)與random庫(kù)繪制雪花,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06在Python中輸入一個(gè)以空格為間隔的數(shù)組方法
今天小編就為大家分享一篇在Python中輸入一個(gè)以空格為間隔的數(shù)組方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11python lambda函數(shù)及三個(gè)常用的高階函數(shù)
這篇文章主要介紹了python lambda函數(shù)及三個(gè)常用的高階函數(shù),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02