Python 엑셀 과 shp 에 대한 사용 은 matplotlib 에 있 습 니 다.

excel 과 shp 에 대한 사용 은 matplotlib 에 있 습 니 다.
  • pandas 를 사용 하여 엑셀 을 간단하게 조작 합 니 다
  • cartopy 를 사용 하여 shpfile 을 읽 고 matplotlib 에 보 여 줍 니 다
  • 4.567917.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()


    총결산
    이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.

    좋은 웹페이지 즐겨찾기