MacOS下Python安装BaseMap包

BaseMap简介

matplotlib是Python常用的数据绘制包。它基于numpy的数组运算功。
matplotlib绘图功能强大,可以轻易的画出各种统计图形,比如散点图,条行图,饼图等。matplotlib常与numpy和scipy相配合,用于许多研究领域。他们是免费工具,但其功能足可以与科研界的大佬Matlab竞争。
Basemap是Matplotlib的一个子包,负责地图绘制。在数据可视化过程中,我们常需要将数据在地图上画出来。比如说我们在地图上画出城市人口,飞机航线,军事基地,矿藏分布等等。这样的地理绘图有助于读者理解空间相关的信息。
这里是使用简介和实例。
https://www.cnblogs.com/vamei/archive/2012/09/16/2687954.html
https://github.com/matplotlib/basemap/releases

Basemap 是matplotlib子包,也是python中最常用、最方便的地理数据可视化工具之一。使用传统python安装包的方法(pip install basemap 或者conda install basemap)经常报错,提示结果为Python 2.7 basemap和Python 3.6冲突(图),尽管2.7非常经典且世面大多数资料仍然是基于2.X版本,但官方已经宣布2.X版本只维护到2020年,3.X才是未来。

Basemap 是matplotlib子包,也是python中最常用、最方便的地理数据可视化工具之一。使用传统python安装包的方法(pip install basemap 或者conda install basemap)经常报错,提示结果为Python 2.7 basemap和Python 3.6冲突(图),尽管2.7非常经典且世面大多数资料仍然是基于2.X版本,但官方已经宣布2.X版本只维护到2020年,3.X才是未来。

下面将windows环境下Python 3.X安装basemap的方法分享,供大家参考。

前提:我的电脑配置为64为win10,Anaconda 3(64位),Python 3.6。

1.首先,在Python Extension Packages for Windows根据自己电脑配置及Python版本选择下载Basemap和pyproj两个安装文件,这个网站主要提供非官方的windows环境下的Python扩展包

basemap下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
Pyproj下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyproj

其中,basemap后面的1.1.0代表版本号,cp36代表python3.6,win代表windows,amd64代表64位系统。basemap大约120M,pyproj只有3M多。

  1. win+R 打开命令提示符窗口,cd命令将当前目录设置为下载文件存放的文件夹(我放在桌面)后点回车键。注:如果你使用spyder 3.2以上的版本,请在Anaconda Prompt(my_root)执行以下安装命令,步骤一样。

3.然后开始安装两个文件,首先安装pyproj

pip install pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
需要注意的是文件名全称,且后缀名(.whl)不能丢,提示安装成功后,同样的命令安装basemap

pip install basemap-1.1.0-cp36-cp36m-win_amd64.whl

此处出现错误

You are using pip version 9.0.1, however version 9.0.2 is available.

You should consider upgrading via the ‘python -m pip install --upgrade pip’ command.

通过使用easy_install指令安装成功了:
首先进入到easy_install的目录 例如C:\ProgramData\Anaconda3\Scripts
然后通过指令 easy_install.exe pip==9.0.2 最后安装成功。

安装成功后会提示Successfully installed。

  1. 然后测试是否安装成功
import numpy as np
import pandas as pd
import xarray as xy
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import os

os.chdir(r'F:\NCEP')
temp = xy.open_dataset('air.mon.mean.v401.nc')
air = temp['air']
T30 = temp.sel(time=slice('1981-01-01', '2010-12-01'))
t_average = T30.groupby('time.year').mean(dim='time')
t = t_average.mean(dim='year')
tmp = t['air']
lon = t['lon'][:]
lat = t['lat'][:]
lon, lat = np.meshgrid(lon, lat)

def plt_map(data):
    m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180,
                lat_ts=30, resolution='c')
    x, y = m(lon, lat)
    plt.xlim(-180, 180)
    plt.figure(figsize=(10, 7))
    m.drawcoastlines()
    m.drawparallels(np.arange(-90., 91., 30.))
    m.drawmeridians(np.arange(0., 361., 30))
    m.drawmapboundary(fill_color='white')
    m.contourf(x, y, data, levels=np.linspace(-25, 30, 56), extend='both')
    plt.colorbar(orientation='horizontal', pad=0.05)
plt_map(tmp)

结果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章