查看所需版本
首先打开cmd,输入以下命令:
python -m pip debug --verbose
得到的结果如下:
WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
pip version: pip 20.0.2 from C:Users12345anaconda3libsite-packagespip (python 3.7)
sys.version: 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]
sys.executable: C:Users12345anaconda3python.exe
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: cp936
sys.platform: win32
sys.implementation:
name: cpython
'cert' config value: Not specified
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): C:Users12345anaconda3libsite-packagespip\_vendorcertificacert.pem
Compatible tags: 27
cp37-cp37m-win_amd64
cp37-abi3-win_amd64
cp37-none-win_amd64
cp36-abi3-win_amd64
cp35-abi3-win_amd64
cp34-abi3-win_amd64
cp33-abi3-win_amd64
cp32-abi3-win_amd64
py37-none-win_amd64
py3-none-win_amd64
py36-none-win_amd64
py35-none-win_amd64
py34-none-win_amd64
py33-none-win_amd64
py32-none-win_amd64
py31-none-win_amd64
py30-none-win_amd64
cp37-none-any
py37-none-any
py3-none-any
py36-none-any
py35-none-any
py34-none-any
py33-none-any
py32-none-any
py31-none-any
py30-none-any
从中可以看出,我们需要的是Python3.7对应的basemap
官网地址为:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
可以通过Ctrl+F,搜索页面中的basemap,找到对应的版本,Python3.7对应的是cp37,然后通过python -m pip debug --verbose
命令得知,应该下载cp37-cp37m-win_amd64版本
另外,同样的方法,搜索pyproj,
下载所需的文件
需要下载的两个东西分别是basemap‑1.2.2‑cp37‑cp37m‑win_amd64.whl
和pyproj‑2.6.1.post1‑cp37‑cp37m‑win_amd64.whl
反正我通过官网是下载不了的,
历经千辛万苦,我找到了Python3.7和Python3.9版本对应的两个文件
还有一个Python3.6的,不过对应的basemap的版本不是最新版的,可能用不了
链接:https://pan.baidu.com/s/1PwBI-Zcf33Xk3rZUMwy45Q
提取码:cyx6
安装
我建议将这两个文件和其他Python库放在一起,比如我把它拷贝到C:Users12345anaconda3Libsite-packages目录下,当然这不是必要的。
你可以在cmd中通过cd命令进入这两个文件所在的路径,也可以直接在那个文件夹的左上方输入cmd
然后依次输入以下指令
pip install pyproj-2.4.2.post1-cp37-cp37m-win_amd64.whl
pip install basemap-1.2.2-cp37-cp37m-win_amd64.whl
测试
安装完成后,打开pycharm
创建一个test.py文件
测试代码:
例1
# 首先导入basemap和matplotlib两个包,两者都是必要的。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 新建第一个地图
map = Basemap()
# 在使用 Basemap 类创建地图时具有许多选项。
# 在没有传递任何选项的 情况下,地图具有以经度 =0 和纬度 = 0 为中心的 Plate Carrée 投影(等距圆柱投影)。
# 绘制海岸线
map.drawcoastlines()
# 如果使用单独的python程序(.py文件),需要下面这句话才能看到图
plt.show()
例2
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
#运用 Basemap 函数我们可以在绘图区域中绘制地理信息相关的图像,当参数 projection 的值为 'ortho' #时,我们将得到一个如下所示的地球仪截面:
plt.figure(figsize=(8, 8))
m = Basemap(projection='ortho', resolution=None, lat_0=50, lon_0=-100)
m.bluemarble(scale=0.5)
plt.show()
例3
# 将参数 projection 的值设置为 'lcc' 时,我们可以通过经纬度设置来得到某一区域的局部地图:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
fig = plt.figure(figsize=(8, 8))
m = Basemap(projection='lcc', resolution=None,
width=8E6, height=8E6,
lat_0=45, lon_0=-100,)
m.etopo(scale=0.5, alpha=0.5)
# 将经纬度映射为 (x, y) 坐标,用于绘制图像
x, y = m(-122.3, 47.6)
plt.plot(x, y, 'ok', markersize=5)
plt.text(x, y, ' Seattle', fontsize=12)
plt.show()