下午看《利用python进行数据分析》这本书,发现了一个宝藏包(就是安装挺难的,可以查一下csdn上面其他的文章)
首先,我们可以看以下最基础的代码长什么样子:
import warnings
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
import os
warnings.filterwarnings('ignore')
my_map = Basemap( projection='merc', llcrnrlat=10.0, urcrnrlat=55.0, llcrnrlon=60., urcrnrlon=140.0)
my_map.drawcoastlines()
my_map.drawcountries()
plt.show()
运行结果为:
参数解释一下:
projection='merc':表示地图是什么样子的,是平面图还是立体图,如果讲参数改成ortho,泽就变成了绘制立体球形地图,但是每个种类的地图都有他自己的必须有的参数要求,如果是画的球形地图,则需要:
my_map = Basemap( projection='ortho', lon_0=100,lat_0=0)
运行结果图为:
最少是这样设置参数,就是说明需要有一个经度值和一个纬度值
如果绘制的是平面图,则最好是给他灌四个参数,不然的出来的结果图就会是这样
如果在设置一下,就可以画出很逼真的地图来了
上代码:
map = Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54)
map.arcgisimage(service='ESRI_Imagery_World_2D', xpixels = 1500, verbose= True)
plt.show()
service里面的内容可以更改
’NatGeo_World_Map‘:
World_Shaded_Relief:
第一个图片的绘制方法还可以变得更简单一点:
map = Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54)
map.bluemarble()
plt.show()
就可以绘制出和第一张图片一样的效果了
向其中添加数据:
绘制少量点:
map = Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=140,urcrnrlat=54)
map.bluemarble()
lons = [74, 85, 135]
lats = [20, 50, 35]
x, y = map(lons, lats)
map.plot(x, y, 'bo', markersize=5)
plt.show()
运行结果:
如果想从文件里面读取,需要读取文件的经纬度,然后将其添加到lons【】和lats【】中,在和上方一样绘制就可以了,具体的讲述该包有一个十分详细的网站:https://www.osgeo.cn/pygis/basemap-basic.html
可以之后进行详细学习