欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python關(guān)于excel和shp的使用在matplotlib

 更新時間:2019年01月03日 11:29:54   作者:staHuri  
今天小編就為大家分享一篇關(guān)于Python關(guān)于excel和shp的使用在matplotlib,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

關(guān)于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):
  """
  根據(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)換成十進制
  :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]) # 計數(shù)工具
  # print(data.sort_values('觀測場拔海高度(米)',ascending=False).head(10))# 根據(jù)值排序
  # 判斷經(jīng)緯度是什么格式(度分 、 十進制) 判斷依據(jù) %0.2f 是否大于60
  # print(data['經(jīng)度'].apply(lambda x:x-int(x)).sort_values(ascending=False).head()) # 結(jié)果判斷為度分保存
  # 坐標處理
  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ù) 州:國家
  # 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()

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • pytorch如何凍結(jié)某層參數(shù)的實現(xiàn)

    pytorch如何凍結(jié)某層參數(shù)的實現(xiàn)

    這篇文章主要介紹了pytorch如何凍結(jié)某層參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • 一文詳解CNN 解決 Flowers 圖像分類任務

    一文詳解CNN 解決 Flowers 圖像分類任務

    這篇文章主要為大家介紹了CNN 解決 Flowers 圖像分類任務詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • python入門教程之識別驗證碼

    python入門教程之識別驗證碼

    這篇文章主要介紹了python中識別驗證碼的相關(guān)資料,這屬于學習python的基本入門教程,文中介紹的非常詳細,文末也給出了完整的示例代碼,需要的朋友們可以參考學習,下面來一起看看吧。
    2017-03-03
  • Python使用flask作為web服務器的代碼實現(xiàn)

    Python使用flask作為web服務器的代碼實現(xiàn)

    Python Flask 框架是一個輕量級的 Web 框架,它簡單易用,靈活多變,非常適合用于構(gòu)建小型到中型規(guī)模的 Web 應用程序,本文給大家介紹了Python使用flask作為web服務器的代碼實現(xiàn),需要的朋友可以參考下
    2024-06-06
  • 基于python實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換

    基于python實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換

    這篇文章主要介紹了基于python實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • python 實現(xiàn)turtle畫圖并導出圖片格式的文件

    python 實現(xiàn)turtle畫圖并導出圖片格式的文件

    今天小編就為大家分享一篇python 實現(xiàn)turtle畫圖并導出圖片格式的文件,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python下opencv庫的安裝過程及問題匯總

    Python下opencv庫的安裝過程及問題匯總

    本文主要內(nèi)容是python下opencv庫的安裝過程,涉及我在安裝時遇到的問題,并且,將從網(wǎng)上搜集并試用的一些解決方案進行了簡單的匯總,感興趣的小伙伴們可以參考一下
    2021-06-06
  • python使用turtle庫與random庫繪制雪花

    python使用turtle庫與random庫繪制雪花

    這篇文章主要為大家詳細介紹了python使用turtle庫與random庫繪制雪花,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 在Python中輸入一個以空格為間隔的數(shù)組方法

    在Python中輸入一個以空格為間隔的數(shù)組方法

    今天小編就為大家分享一篇在Python中輸入一個以空格為間隔的數(shù)組方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python lambda函數(shù)及三個常用的高階函數(shù)

    python lambda函數(shù)及三個常用的高階函數(shù)

    這篇文章主要介紹了python lambda函數(shù)及三個常用的高階函數(shù),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02

最新評論