一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python關于excel和shp的使用在matplotlib

Python關于excel和shp的使用在matplotlib

2021-05-11 00:43staHuri Python

今天小編就為大家分享一篇關于Python關于excel和shp的使用在matplotlib,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

關于excel和shp的使用在matplotlib

  • 使用pandas 對excel進行簡單操作
  • 使用cartopy 讀取shpfile 展示到matplotlib中
  • 利用shpfile文件中的一些字段進行一些著色處理
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/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()

Python關于excel和shp的使用在matplotlib

Python關于excel和shp的使用在matplotlib

總結

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

原文鏈接:https://blog.csdn.net/staHuri/article/details/80840339

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久久久久久牛牛 | 99在线免费观看视频 | 亚洲国产货青视觉盛宴 | 波多野结衣伦理在线观看 | 天堂成人在线 | 国产精品一二区 | 99最新网址 | 大乳一级一区二区三区 | 久草在线草a免费线看 | 性xxx免费 | 久久黄色大片 | 亚洲欧美一区二区三区不卡 | 欧美色图日韩色图 | 小兰被扒开内裤露出p | 成人日批视频 | 欧美日韩一区不卡 | 性夜影院爽黄A爽免费动漫 性色欲情网站IWWW九文堂 | 欧洲美女啪啪 | chinese男gay飞机同志 | 四虎院影永久在线观看 | 欧美video丝袜连裤袜bd | 九九久久国产精品免费热6 九九精品视频一区二区三区 | 免费超级乱淫视频播放性 | 电车痴汉(han) | 精油按摩日本 | 女王厕便器vk | 国色天香社区在线 | 欧美一级在线播放 | 成年人在线免费看 | 国产手机在线αⅴ片无码观看 | 亚洲午夜精品久久久久久抢 | 美国videos| 久久视频这里只精品99热在线观看 | 国产福利片在线 | 欧美黑人换爱交换乱理伦片 | 成人福利视频网址 | 亚洲国产精品综合久久一线 | 91国语精品自产拍在线观看一 | 希岛爱理aⅴ在线中文字幕 午夜综合网 | 日本一卡二卡3卡四卡网站精品 | 国产高清在线精品一区二区 |